AI.Completion (fnord v0.8.33)
View SourceThis module sends a request to the model and handles the response. It is able to handle tool calls and responses.
Input options
toolbox
- a map of tool names to modules implementingAI.Tools
; the specs list is derived automatically viaAI.Tools.toolbox_to_specs/1
.
Output options
Output is controlled by the following mechanisms.
log_msgs
- log messages from the user and assistant asinfo
log_tool_calls
- log tool calls asinfo
and tool call results asdebug
LOGGER_LEVEL
must be set to debug
to see the output of tool call results.
Summary
Functions
Returns a map of tool names to the number of times each tool was called in the most recent round of the conversation, starting from the most recent user message.
Types
@type response() :: {:ok, t()} | {:error, t()} | {:error, binary()} | {:error, :context_length_exceeded, non_neg_integer()}
@type t() :: %AI.Completion{ archive_notes: boolean(), compact?: bool(), log_msgs: boolean(), log_tool_calls: boolean(), messages: [AI.Util.msg()], model: String.t(), name: String.t() | nil, replay_conversation: boolean(), response: String.t() | nil, response_format: map() | nil, specs: [AI.Tools.tool_spec()] | nil, tool_call_requests: list(), toolbox: AI.Tools.toolbox() | nil, usage: integer() }
Functions
@spec handle_tool_call(t(), AI.Util.tool_call()) :: {:ok, AI.Util.tool_request_msg(), AI.Util.tool_response_msg()}
@spec new_from_conversation(Store.Project.Conversation.t(), Keyword.t()) :: {:ok, t()} | {:error, :conversation_not_found}
@spec tools_used(t()) :: %{required(binary()) => non_neg_integer()}
Returns a map of tool names to the number of times each tool was called in the most recent round of the conversation, starting from the most recent user message.