client side and server side tool calling

This commit is contained in:
2026-03-06 09:54:00 -07:00
parent 3a065871a9
commit 713b3a2ff0
3 changed files with 52 additions and 15 deletions

View File

@@ -43,6 +43,13 @@ defmodule ElixirAi.ChatRunner do
description: "read a key value pair that was previously stored with store_thing",
function: &ElixirAi.ToolTesting.get_thing/1,
parameters: ElixirAi.ToolTesting.get_thing_params()
),
ai_tool(
name: "set_background_color",
description:
"set the background color of the chat interface, accepts specified tailwind colors",
function: &ElixirAi.ToolTesting.set_background_color/1,
parameters: ElixirAi.ToolTesting.set_background_color_params()
)
]
end

View File

@@ -28,21 +28,41 @@ defmodule ElixirAi.ToolTesting do
}
end
def store_thing_definition(name) do
def store_thing_params do
%{
"type" => "function",
"function" => %{
"name" => name,
"description" => "store key value pair",
"parameters" => %{
"type" => "object",
"properties" => %{
"name" => %{"type" => "string"},
"value" => %{"type" => "string"}
},
"required" => ["name", "value"]
"type" => "object",
"properties" => %{
"name" => %{"type" => "string"},
"value" => %{"type" => "string"}
},
"required" => ["name", "value"]
}
end
def set_background_color(%{"color" => color}) do
Phoenix.PubSub.broadcast(ElixirAi.PubSub, "ai_chat", {:set_background_color, color})
end
def set_background_color_params do
valid_tailwind_colors = [
"bg-cyan-950/30",
"bg-red-950/30",
"bg-green-950/30",
"bg-blue-950/30",
"bg-yellow-950/30",
"bg-purple-950/30",
"bg-pink-950/30"
]
%{
"type" => "object",
"properties" => %{
"color" => %{
"type" => "string",
"enum" => valid_tailwind_colors
}
}
},
"required" => ["color"]
}
end