more tool calling working
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user