Current section

Files

Jump to
dspex lib snakebridge_generated dspy evaluate auto_evaluation answer_completeness.ex
Raw

lib/snakebridge_generated/dspy/evaluate/auto_evaluation/answer_completeness.ex

# Generated by SnakeBridge v0.13.0 - DO NOT EDIT MANUALLY
# Regenerate with: mix compile
# Library: dspy 3.1.2
# Python module: dspy.evaluate.auto_evaluation
# Python class: AnswerCompleteness
defmodule Dspy.Evaluate.AutoEvaluation.AnswerCompleteness do
@moduledoc """
Estimate the completeness of a system's responses, against the ground truth.
You will first enumerate key ideas in each response, discuss their overlap, and then report completeness.
"""
def __snakebridge_python_name__, do: "dspy.evaluate.auto_evaluation"
def __snakebridge_python_class__, do: "AnswerCompleteness"
def __snakebridge_library__, do: "dspy"
@opaque t :: SnakeBridge.Ref.t()
@doc """
Create a new model by parsing and validating input data from keyword arguments.
Raises [`ValidationError`][pydantic_core.ValidationError] if the input data cannot be
validated to form a valid model.
`self` is explicitly positional-only to allow `self` as a field name.
## Parameters
- `data` (term())
"""
@spec new(keyword()) :: {:ok, SnakeBridge.Ref.t()} | {:error, Snakepit.Error.t()}
def new(opts \\ []) do
SnakeBridge.Runtime.call_class(__MODULE__, :__init__, [], opts)
end
@doc """
!!! abstract "Usage Documentation"
[JSON Parsing](https://docs.pydantic.dev/latest/concepts/json/#json-parsing)
Validate the given JSON data against the Pydantic model.
## Parameters
- `json_data` - The JSON data to validate.
- `strict` - Whether to enforce types strictly.
- `extra` - Whether to ignore, allow, or forbid extra data during model validation. See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
- `context` - Extra variables to pass to the validator.
- `by_alias` - Whether to use the field's alias when validating against the provided input data.
- `by_name` - Whether to use the field's name when validating against the provided input data.
## Raises
- `ValidationError` - If `json_data` is not a JSON string or the object could not be validated.
## Returns
- `term()`
"""
@spec model_validate_json(SnakeBridge.Ref.t(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def model_validate_json(ref, json_data, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :model_validate_json, [json_data], opts)
end
@doc """
Python method `AnswerCompleteness.parse_raw`.
## Parameters
- `b` (term())
- `content_type` (term())
- `encoding` (term())
- `proto` (term())
- `allow_pickle` (term())
## Returns
- `term()`
"""
@spec parse_raw(SnakeBridge.Ref.t(), term(), term(), term(), term(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def parse_raw(ref, b, content_type, encoding, proto, allow_pickle, opts \\ []) do
SnakeBridge.Runtime.call_method(
ref,
:parse_raw,
[b, content_type, encoding, proto, allow_pickle],
opts
)
end
@doc """
!!! abstract "Usage Documentation"
[`model_dump`](https://docs.pydantic.dev/latest/concepts/serialization/#python-mode)
Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.
## Parameters
- `mode` - The mode in which `to_python` should run. If mode is 'json', the output will only contain JSON serializable types. If mode is 'python', the output may contain non-JSON-serializable Python objects.
- `include` - A set of fields to include in the output.
- `exclude` - A set of fields to exclude from the output.
- `context` - Additional context to pass to the serializer.
- `by_alias` - Whether to use the field's alias in the dictionary key if defined.
- `exclude_unset` - Whether to exclude fields that have not been explicitly set.
- `exclude_defaults` - Whether to exclude fields that are set to their default value.
- `exclude_none` - Whether to exclude fields that have a value of `None`.
- `exclude_computed_fields` - Whether to exclude computed fields. While this can be useful for round-tripping, it is usually recommended to use the dedicated `round_trip` parameter instead.
- `round_trip` - If True, dumped values should be valid as input for non-idempotent types such as Json[T].
- `warnings` - How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors, "error" raises a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError].
- `fallback` - A function to call when an unknown value is encountered. If not provided, a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError] error is raised.
- `serialize_as_any` - Whether to serialize fields with duck-typing serialization behavior.
## Returns
- `%{optional(String.t()) => term()}`
"""
@spec model_dump(SnakeBridge.Ref.t(), keyword()) ::
{:ok, %{optional(String.t()) => term()}} | {:error, Snakepit.Error.t()}
def model_dump(ref, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :model_dump, [], opts)
end
@doc """
Python method `AnswerCompleteness.parse_obj`.
## Parameters
- `obj` (term())
## Returns
- `term()`
"""
@spec parse_obj(SnakeBridge.Ref.t(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def parse_obj(ref, obj, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :parse_obj, [obj], opts)
end
@doc """
Python method `AnswerCompleteness._get_value`.
## Parameters
- `args` (term())
- `kwargs` (term())
## Returns
- `term()`
"""
@spec _get_value(SnakeBridge.Ref.t(), term(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def _get_value(ref, args, kwargs, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :_get_value, [args, kwargs], opts)
end
@doc """
Python method `AnswerCompleteness.dict`.
## Parameters
- `include` ((((MapSet.t(integer()) | MapSet.t(String.t())) | term()) | term()) | nil keyword-only default: None)
- `exclude` ((((MapSet.t(integer()) | MapSet.t(String.t())) | term()) | term()) | nil keyword-only default: None)
- `by_alias` (boolean() keyword-only default: False)
- `exclude_unset` (boolean() keyword-only default: False)
- `exclude_defaults` (boolean() keyword-only default: False)
- `exclude_none` (boolean() keyword-only default: False)
## Returns
- `%{optional(String.t()) => term()}`
"""
@spec dict(SnakeBridge.Ref.t(), keyword()) ::
{:ok, %{optional(String.t()) => term()}} | {:error, Snakepit.Error.t()}
def dict(ref, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :dict, [], opts)
end
@doc """
Creates a new instance of the `Model` class with validated data.
Creates a new model setting `__dict__` and `__pydantic_fields_set__` from trusted or pre-validated data.
Default values are respected, but no other validation is performed.
!!! note
`model_construct()` generally respects the `model_config.extra` setting on the provided model.
That is, if `model_config.extra == 'allow'`, then all extra passed values are added to the model instance's `__dict__`
and `__pydantic_extra__` fields. If `model_config.extra == 'ignore'` (the default), then all extra passed values are ignored.
Because no validation is performed with a call to `model_construct()`, having `model_config.extra == 'forbid'` does not result in
an error if extra values are passed, but they will be ignored.
## Parameters
- `_fields_set` - A set of field names that were originally explicitly set during instantiation. If provided, this is directly used for the [`model_fields_set`][pydantic.BaseModel.model_fields_set] attribute. Otherwise, the field names from the `values` argument will be used.
- `values` - Trusted or pre-validated data dictionary.
## Returns
- `term()`
"""
@spec model_construct(SnakeBridge.Ref.t(), list(term()), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def model_construct(ref, args, opts \\ []) do
{args, opts} = SnakeBridge.Runtime.normalize_args_opts(args, opts)
SnakeBridge.Runtime.call_method(ref, :model_construct, [] ++ List.wrap(args), opts)
end
@doc """
Python method `AnswerCompleteness._calculate_keys`.
## Parameters
- `args` (term())
- `kwargs` (term())
## Returns
- `term()`
"""
@spec _calculate_keys(SnakeBridge.Ref.t(), term(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def _calculate_keys(ref, args, kwargs, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :_calculate_keys, [args, kwargs], opts)
end
@doc """
Python method `AnswerCompleteness.dump_state`.
## Returns
- `term()`
"""
@spec dump_state(SnakeBridge.Ref.t(), keyword()) :: {:ok, term()} | {:error, Snakepit.Error.t()}
def dump_state(ref, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :dump_state, [], opts)
end
@doc """
Python method `AnswerCompleteness.schema_json`.
## Parameters
- `by_alias` (boolean() keyword-only default: True)
- `ref_template` (String.t() keyword-only default: '#/$defs/{model}')
- `dumps_kwargs` (term())
## Returns
- `String.t()`
"""
@spec schema_json(SnakeBridge.Ref.t(), keyword()) ::
{:ok, String.t()} | {:error, Snakepit.Error.t()}
def schema_json(ref, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :schema_json, [], opts)
end
@doc """
Returns a copy of the model.
!!! warning "Deprecated"
This method is now deprecated; use `model_copy` instead.
If you need `include` or `exclude`, use:
```python {test="skip" lint="skip"}
data = self.model_dump(include=include, exclude=exclude, round_trip=True)
data = {**data, **(update or {})}
copied = self.model_validate(data)
```
## Parameters
- `include` - Optional set or mapping specifying which fields to include in the copied model.
- `exclude` - Optional set or mapping specifying which fields to exclude in the copied model.
- `update` - Optional dictionary of field-value pairs to override field values in the copied model.
- `deep` - If True, the values of fields that are Pydantic models will be deep-copied.
## Returns
- `term()`
"""
@spec copy(SnakeBridge.Ref.t(), term(), term(), term(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def copy(ref, include, exclude, update, deep, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :copy, [include, exclude, update, deep], opts)
end
@doc """
Validate the given object with string data against the Pydantic model.
## Parameters
- `obj` - The object containing string data to validate.
- `strict` - Whether to enforce types strictly.
- `extra` - Whether to ignore, allow, or forbid extra data during model validation. See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
- `context` - Extra variables to pass to the validator.
- `by_alias` - Whether to use the field's alias when validating against the provided input data.
- `by_name` - Whether to use the field's name when validating against the provided input data.
## Returns
- `term()`
"""
@spec model_validate_strings(SnakeBridge.Ref.t(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def model_validate_strings(ref, obj, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :model_validate_strings, [obj], opts)
end
@doc """
Try to rebuild the pydantic-core schema for the model.
This may be necessary when one of the annotations is a ForwardRef which could not be resolved during
the initial attempt to build the schema, and automatic rebuilding fails.
## Parameters
- `force` - Whether to force the rebuilding of the model schema, defaults to `False`.
- `raise_errors` - Whether to raise errors, defaults to `True`.
- `_parent_namespace_depth` - The depth level of the parent namespace, defaults to 2.
- `_types_namespace` - The types namespace, defaults to `None`.
## Returns
- `term()`
"""
@spec model_rebuild(SnakeBridge.Ref.t(), term(), term(), term(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def model_rebuild(ref, force, raise_errors, parent_namespace_depth, types_namespace, opts \\ []) do
SnakeBridge.Runtime.call_method(
ref,
:model_rebuild,
[force, raise_errors, parent_namespace_depth, types_namespace],
opts
)
end
@doc """
Return a new Signature class with identical fields and new instructions.
This method does not mutate `cls`. It constructs a fresh Signature
class using the current fields and the provided `instructions`.
## Parameters
- `instructions` - Instruction text to attach to the new signature. (type: `String.t()`)
## Examples
```python
import dspy
class MySig(dspy.Signature):
input_text: str = dspy.InputField(desc="Input text")
output_text: str = dspy.OutputField(desc="Output text")
NewSig = MySig.with_instructions("Translate to French.")
assert NewSig is not MySig
assert NewSig.instructions == "Translate to French."
```
## Returns
- `term()`
"""
@spec with_instructions(SnakeBridge.Ref.t(), String.t(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def with_instructions(ref, instructions, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :with_instructions, [instructions], opts)
end
@doc """
Python method `AnswerCompleteness._iter`.
## Parameters
- `args` (term())
- `kwargs` (term())
## Returns
- `term()`
"""
@spec _iter(SnakeBridge.Ref.t(), term(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def _iter(ref, args, kwargs, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :_iter, [args, kwargs], opts)
end
@doc """
Return a new Signature class without the given field.
If `name` is not present, the fields are unchanged (no error raised).
## Parameters
- `name` - Field name to remove. (type: `String.t()`)
## Examples
```python
import dspy
class MySig(dspy.Signature):
input_text: str = dspy.InputField(desc="Input sentence")
temp_field: str = dspy.InputField(desc="Temporary debug field")
output_text: str = dspy.OutputField(desc="Translated sentence")
NewSig = MySig.delete("temp_field")
print(list(NewSig.fields.keys()))
# No error is raised if the field is not present
Unchanged = NewSig.delete("nonexistent")
print(list(Unchanged.fields.keys()))
```
## Returns
- `term()`
"""
@spec delete(SnakeBridge.Ref.t(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def delete(ref, name, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :delete, [name], opts)
end
@doc """
Python method `AnswerCompleteness.load_state`.
## Parameters
- `state` (term())
## Returns
- `term()`
"""
@spec load_state(SnakeBridge.Ref.t(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def load_state(ref, state, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :load_state, [state], opts)
end
@doc """
Insert a field at index 0 of the `inputs` or `outputs` section.
## Parameters
- `name` - Field name to add. (type: `String.t()`)
- `field` - `InputField` or `OutputField` instance to insert.
- `type_` - Optional explicit type annotation. If `type_` is `None`, the effective type is resolved by `insert`. (type: `type | None`)
## Examples
```python
import dspy
class MySig(dspy.Signature):
input_text: str = dspy.InputField(desc="Input sentence")
output_text: str = dspy.OutputField(desc="Translated sentence")
NewSig = MySig.prepend("context", dspy.InputField(desc="Context for translation"))
print(list(NewSig.fields.keys()))
```
## Returns
- `term()`
"""
@spec prepend(SnakeBridge.Ref.t(), term(), term(), list(term()), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def prepend(ref, name, field, args, opts \\ []) do
{args, opts} = SnakeBridge.Runtime.normalize_args_opts(args, opts)
SnakeBridge.Runtime.call_method(ref, :prepend, [name, field] ++ List.wrap(args), opts)
end
@doc """
Validate a pydantic model instance.
## Parameters
- `obj` - The object to validate.
- `strict` - Whether to enforce types strictly.
- `extra` - Whether to ignore, allow, or forbid extra data during model validation. See the [`extra` configuration value][pydantic.ConfigDict.extra] for details.
- `from_attributes` - Whether to extract data from object attributes.
- `context` - Additional context to pass to the validator.
- `by_alias` - Whether to use the field's alias when validating against the provided input data.
- `by_name` - Whether to use the field's name when validating against the provided input data.
## Raises
- `ValidationError` - If the object could not be validated.
## Returns
- `term()`
"""
@spec model_validate(SnakeBridge.Ref.t(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def model_validate(ref, obj, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :model_validate, [obj], opts)
end
@doc """
!!! abstract "Usage Documentation"
[`model_dump_json`](https://docs.pydantic.dev/latest/concepts/serialization/#json-mode)
Generates a JSON representation of the model using Pydantic's `to_json` method.
## Parameters
- `indent` - Indentation to use in the JSON output. If None is passed, the output will be compact.
- `ensure_ascii` - If `True`, the output is guaranteed to have all incoming non-ASCII characters escaped. If `False` (the default), these characters will be output as-is.
- `include` - Field(s) to include in the JSON output.
- `exclude` - Field(s) to exclude from the JSON output.
- `context` - Additional context to pass to the serializer.
- `by_alias` - Whether to serialize using field aliases.
- `exclude_unset` - Whether to exclude fields that have not been explicitly set.
- `exclude_defaults` - Whether to exclude fields that are set to their default value.
- `exclude_none` - Whether to exclude fields that have a value of `None`.
- `exclude_computed_fields` - Whether to exclude computed fields. While this can be useful for round-tripping, it is usually recommended to use the dedicated `round_trip` parameter instead.
- `round_trip` - If True, dumped values should be valid as input for non-idempotent types such as Json[T].
- `warnings` - How to handle serialization errors. False/"none" ignores them, True/"warn" logs errors, "error" raises a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError].
- `fallback` - A function to call when an unknown value is encountered. If not provided, a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError] error is raised.
- `serialize_as_any` - Whether to serialize fields with duck-typing serialization behavior.
## Returns
- `String.t()`
"""
@spec model_dump_json(SnakeBridge.Ref.t(), keyword()) ::
{:ok, String.t()} | {:error, Snakepit.Error.t()}
def model_dump_json(ref, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :model_dump_json, [], opts)
end
@doc """
Python method `AnswerCompleteness.construct`.
## Parameters
- `fields_set` (term() default: None)
- `values` (term())
## Returns
- `term()`
"""
@spec construct(SnakeBridge.Ref.t(), list(term()), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def construct(ref, args, opts \\ []) do
{args, opts} = SnakeBridge.Runtime.normalize_args_opts(args, opts)
SnakeBridge.Runtime.call_method(ref, :construct, [] ++ List.wrap(args), opts)
end
@doc """
Python method `AnswerCompleteness.from_orm`.
## Parameters
- `obj` (term())
## Returns
- `term()`
"""
@spec from_orm(SnakeBridge.Ref.t(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def from_orm(ref, obj, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :from_orm, [obj], opts)
end
@doc """
Python method `AnswerCompleteness._copy_and_set_values`.
## Parameters
- `args` (term())
- `kwargs` (term())
## Returns
- `term()`
"""
@spec _copy_and_set_values(SnakeBridge.Ref.t(), term(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def _copy_and_set_values(ref, args, kwargs, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :_copy_and_set_values, [args, kwargs], opts)
end
@doc """
Create a new Signature class with the updated field information.
Returns a new Signature class with the field, name, updated
with fields[name].json_schema_extra[key] = value.
## Parameters
- `name` - The name of the field to update.
- `type_` - The new type of the field.
- `kwargs` - The new values for the field.
## Returns
- `term()`
"""
@spec with_updated_fields(SnakeBridge.Ref.t(), String.t(), list(term()), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def with_updated_fields(ref, name, args, opts \\ []) do
{args, opts} = SnakeBridge.Runtime.normalize_args_opts(args, opts)
SnakeBridge.Runtime.call_method(ref, :with_updated_fields, [name] ++ List.wrap(args), opts)
end
@doc """
Override this method to perform additional initialization after `__init__` and `model_construct`.
This is useful if you want to do some validation that requires the entire model to be initialized.
## Parameters
- `context` (term())
## Returns
- `nil`
"""
@spec model_post_init(SnakeBridge.Ref.t(), term(), keyword()) ::
{:ok, nil} | {:error, Snakepit.Error.t()}
def model_post_init(ref, context, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :model_post_init, [context], opts)
end
@doc """
Insert a field at the end of the `inputs` or `outputs` section.
## Parameters
- `name` - Field name to add. (type: `String.t()`)
- `field` - `InputField` or `OutputField` instance to insert.
- `type_` - Optional explicit type annotation. If `type_` is `None`, the effective type is resolved by `insert`. (type: `type | None`)
## Examples
```python
import dspy
class MySig(dspy.Signature):
input_text: str = dspy.InputField(desc="Input sentence")
output_text: str = dspy.OutputField(desc="Translated sentence")
NewSig = MySig.append("confidence", dspy.OutputField(desc="Translation confidence"))
print(list(NewSig.fields.keys()))
```
## Returns
- `term()`
"""
@spec append(SnakeBridge.Ref.t(), term(), term(), list(term()), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def append(ref, name, field, args, opts \\ []) do
{args, opts} = SnakeBridge.Runtime.normalize_args_opts(args, opts)
SnakeBridge.Runtime.call_method(ref, :append, [name, field] ++ List.wrap(args), opts)
end
@doc """
Compute the class name for parametrizations of generic classes.
This method can be overridden to achieve a custom naming scheme for generic BaseModels.
## Parameters
- `params` - Tuple of types of the class. Given a generic class `Model` with 2 type variables and a concrete model `Model[str, int]`, the value `(str, int)` would be passed to `params`.
## Raises
- `ArgumentError` - Raised when trying to generate concrete names for non-generic models.
## Returns
- `String.t()`
"""
@spec model_parametrized_name(SnakeBridge.Ref.t(), {term(), term()}, keyword()) ::
{:ok, String.t()} | {:error, Snakepit.Error.t()}
def model_parametrized_name(ref, params, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :model_parametrized_name, [params], opts)
end
@doc """
Python method `AnswerCompleteness.json`.
## Parameters
- `include` ((((MapSet.t(integer()) | MapSet.t(String.t())) | term()) | term()) | nil keyword-only default: None)
- `exclude` ((((MapSet.t(integer()) | MapSet.t(String.t())) | term()) | term()) | nil keyword-only default: None)
- `by_alias` (boolean() keyword-only default: False)
- `exclude_unset` (boolean() keyword-only default: False)
- `exclude_defaults` (boolean() keyword-only default: False)
- `exclude_none` (boolean() keyword-only default: False)
- `encoder` (term() | nil keyword-only default: PydanticUndefined)
- `models_as_dict` (boolean() keyword-only default: PydanticUndefined)
- `dumps_kwargs` (term())
## Returns
- `String.t()`
"""
@spec json(SnakeBridge.Ref.t(), keyword()) :: {:ok, String.t()} | {:error, Snakepit.Error.t()}
def json(ref, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :json, [], opts)
end
@doc """
Generates a JSON schema for a model class.
## Parameters
- `by_alias` - Whether to use attribute aliases or not.
- `ref_template` - The reference template.
- `union_format` - The format to use when combining schemas from unions together. Can be one of:
- `schema_generator` - To override the logic used to generate the JSON schema, as a subclass of `GenerateJsonSchema` with your desired modifications
- `mode` - The mode in which to generate the schema.
## Returns
- `%{optional(String.t()) => term()}`
"""
@spec model_json_schema(SnakeBridge.Ref.t(), list(term()), keyword()) ::
{:ok, %{optional(String.t()) => term()}} | {:error, Snakepit.Error.t()}
def model_json_schema(ref, args, opts \\ []) do
{args, opts} = SnakeBridge.Runtime.normalize_args_opts(args, opts)
SnakeBridge.Runtime.call_method(ref, :model_json_schema, [] ++ List.wrap(args), opts)
end
@doc """
!!! abstract "Usage Documentation"
[`model_copy`](https://docs.pydantic.dev/latest/concepts/models/#model-copy)
Returns a copy of the model.
!!! note
The underlying instance's [`__dict__`][object.__dict__] attribute is copied. This
might have unexpected side effects if you store anything in it, on top of the model
fields (e.g. the value of [cached properties][functools.cached_property]).
## Parameters
- `update` - Values to change/add in the new model. Note: the data is not validated before creating the new model. You should trust this data.
- `deep` - Set to `True` to make a deep copy of the model.
## Returns
- `term()`
"""
@spec model_copy(SnakeBridge.Ref.t(), keyword()) :: {:ok, term()} | {:error, Snakepit.Error.t()}
def model_copy(ref, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :model_copy, [], opts)
end
@doc """
Python method `AnswerCompleteness.validate`.
## Parameters
- `value` (term())
## Returns
- `term()`
"""
@spec validate(SnakeBridge.Ref.t(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def validate(ref, value, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :validate, [value], opts)
end
@doc """
Compare the JSON schema of two Signature classes.
## Parameters
- `other` (term())
## Returns
- `boolean()`
"""
@spec equals(SnakeBridge.Ref.t(), term(), keyword()) ::
{:ok, boolean()} | {:error, Snakepit.Error.t()}
def equals(ref, other, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :equals, [other], opts)
end
@doc """
Python method `AnswerCompleteness.schema`.
## Parameters
- `by_alias` (boolean() default: True)
- `ref_template` (String.t() default: '#/$defs/{model}')
## Returns
- `%{optional(String.t()) => term()}`
"""
@spec schema(SnakeBridge.Ref.t(), list(term()), keyword()) ::
{:ok, %{optional(String.t()) => term()}} | {:error, Snakepit.Error.t()}
def schema(ref, args, opts \\ []) do
{args, opts} = SnakeBridge.Runtime.normalize_args_opts(args, opts)
SnakeBridge.Runtime.call_method(ref, :schema, [] ++ List.wrap(args), opts)
end
@doc """
Insert a field at a specific position among inputs or outputs.
Negative indices are supported (e.g., `-1` appends). If `type_` is omitted, the field's
existing `annotation` is used; if that is missing, `str` is used.
## Parameters
- `index` - Insertion position within the chosen section; negatives append. (type: `integer()`)
- `name` - Field name to add. (type: `String.t()`)
- `field` - InputField or OutputField instance to insert.
- `type_` - Optional explicit type annotation. (type: `type | None`)
## Raises
- `ArgumentError` - If `index` falls outside the valid range for the chosen section.
## Examples
```python
import dspy
class MySig(dspy.Signature):
input_text: str = dspy.InputField(desc="Input sentence")
output_text: str = dspy.OutputField(desc="Translated sentence")
NewSig = MySig.insert(0, "context", dspy.InputField(desc="Context for translation"))
print(list(NewSig.fields.keys()))
NewSig2 = NewSig.insert(-1, "confidence", dspy.OutputField(desc="Translation confidence"))
print(list(NewSig2.fields.keys()))
```
## Returns
- `term()`
"""
@spec insert(SnakeBridge.Ref.t(), integer(), String.t(), term(), list(term()), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def insert(ref, index, name, field, args, opts \\ []) do
{args, opts} = SnakeBridge.Runtime.normalize_args_opts(args, opts)
SnakeBridge.Runtime.call_method(ref, :insert, [index, name, field] ++ List.wrap(args), opts)
end
@doc """
Get a handler for setting an attribute on the model instance.
## Parameters
- `name` (String.t())
- `value` (term())
## Returns
- `term() | nil`
"""
@spec _setattr_handler(SnakeBridge.Ref.t(), String.t(), term(), keyword()) ::
{:ok, term() | nil} | {:error, Snakepit.Error.t()}
def _setattr_handler(ref, name, value, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :_setattr_handler, [name, value], opts)
end
@doc """
Python method `AnswerCompleteness.update_forward_refs`.
## Parameters
- `localns` (term())
## Returns
- `nil`
"""
@spec update_forward_refs(SnakeBridge.Ref.t(), keyword()) ::
{:ok, nil} | {:error, Snakepit.Error.t()}
def update_forward_refs(ref, opts \\ []) do
SnakeBridge.Runtime.call_method(ref, :update_forward_refs, [], opts)
end
@doc """
Python method `AnswerCompleteness.parse_file`.
## Parameters
- `path` (term())
- `content_type` (term())
- `encoding` (term())
- `proto` (term())
- `allow_pickle` (term())
## Returns
- `term()`
"""
@spec parse_file(SnakeBridge.Ref.t(), term(), term(), term(), term(), term(), keyword()) ::
{:ok, term()} | {:error, Snakepit.Error.t()}
def parse_file(ref, path, content_type, encoding, proto, allow_pickle, opts \\ []) do
SnakeBridge.Runtime.call_method(
ref,
:parse_file,
[path, content_type, encoding, proto, allow_pickle],
opts
)
end
@spec _abc_impl(SnakeBridge.Ref.t()) :: {:ok, term()} | {:error, Snakepit.Error.t()}
def _abc_impl(ref) do
SnakeBridge.Runtime.get_attr(ref, :_abc_impl)
end
@spec model_computed_fields(SnakeBridge.Ref.t()) :: {:ok, term()} | {:error, Snakepit.Error.t()}
def model_computed_fields(ref) do
SnakeBridge.Runtime.get_attr(ref, :model_computed_fields)
end
@spec model_config(SnakeBridge.Ref.t()) :: {:ok, term()} | {:error, Snakepit.Error.t()}
def model_config(ref) do
SnakeBridge.Runtime.get_attr(ref, :model_config)
end
@spec model_extra(SnakeBridge.Ref.t()) :: {:ok, term()} | {:error, Snakepit.Error.t()}
def model_extra(ref) do
SnakeBridge.Runtime.get_attr(ref, :model_extra)
end
@spec model_fields(SnakeBridge.Ref.t()) :: {:ok, term()} | {:error, Snakepit.Error.t()}
def model_fields(ref) do
SnakeBridge.Runtime.get_attr(ref, :model_fields)
end
@spec model_fields_set(SnakeBridge.Ref.t()) :: {:ok, term()} | {:error, Snakepit.Error.t()}
def model_fields_set(ref) do
SnakeBridge.Runtime.get_attr(ref, :model_fields_set)
end
end