more tool calling working

This commit is contained in:
2026-03-06 09:30:19 -07:00
parent 7c7e763809
commit 3a065871a9
6 changed files with 109 additions and 36 deletions

View File

@@ -2,24 +2,52 @@ defmodule ElixirAi.ChatUtils do
require Logger
import ElixirAi.AiUtils.StreamLineUtils
def ai_tool(
name: name,
description: description,
function: function,
parameters: parameters
) do
schema = %{
"type" => "function",
"function" => %{
"name" => name,
"description" => description,
"parameters" => parameters
# %{
# "type" => "object",
# "properties" => %{
# "name" => %{"type" => "string"},
# "value" => %{"type" => "string"}
# },
# "required" => ["name", "value"]
# }
}
}
%{
name: name,
definition: schema,
function: function
}
end
def request_ai_response(server, messages, tools) do
Task.start(fn ->
api_url = Application.fetch_env!(:elixir_ai, :ai_endpoint)
api_key = Application.fetch_env!(:elixir_ai, :ai_token)
model = Application.fetch_env!(:elixir_ai, :ai_model)
tool_definition = tools |> Enum.map(fn {_name, definition} -> definition end)
body = %{
model: model,
stream: true,
messages: messages |> Enum.map(&api_message/1),
tools: tool_definition
tools: Enum.map(tools, & &1.definition)
}
headers = [{"authorization", "Bearer #{api_key}"}]
Logger.info("sending AI request with body: #{inspect(body)}")
# Logger.info("sending AI request with body: #{inspect(body)}")
case Req.post(api_url,
json: body,
headers: headers,