Current section
Files
Jump to
Current section
Files
test/mocks/run.ex
defmodule OpenAi.Mocks.Run do
def object(data) do
%{
assistant_id: "a_abcd1234",
cancelled_at: 123_456,
completed_at: 123_456,
created_at: 123_456,
expires_at: 123_456,
failed_at: 123_456,
id: "r_abcd1234",
instructions: "instructions",
max_completion_tokens: 1000,
max_prompt_tokens: 1000,
model: "text-embedding-ada-002",
object: "thread.run",
parallel_tool_calls: true,
started_at: 123_456,
status: "completed",
temperature: 0.5,
thread_id: "t_abcd1234"
}
|> Map.merge(data)
|> Map.merge(%{
incomplete_details: data |> Map.get(:incomplete_details, %{}) |> incomplete_details(),
last_error: data |> Map.get(:last_error, %{}) |> last_error(),
metadata: data |> Map.get(:metadata, %{"key" => "value"}),
required_action: data |> Map.get(:required_action, %{}) |> required_action(),
response_format:
data |> Map.get(:response_format, %{}) |> OpenAi.Mocks.Assistant.response_format(),
tool_choice: data |> Map.get(:tool_choice, %{}) |> OpenAi.Mocks.Assistant.tool_choice(),
tools:
data
|> Map.get(:tools, [%{type: "file_search"}, %{type: "function"}, %{}])
|> Enum.map(&OpenAi.Mocks.Assistant.tool(&1)),
top_p: 123,
truncation_strategy:
data |> Map.get(:truncation_strategy, %{}) |> OpenAi.Mocks.Truncation.object(),
usage: data |> Map.get(:usage, %{}) |> completion_usage()
})
end
def incomplete_details(data) do
%{
reason: "max_completion_tokens"
}
|> Map.merge(data)
end
def last_error(data) do
%{
code: "server_error",
message: "error_message"
}
|> Map.merge(data)
end
def required_action(data) do
%{
type: "submit_tool_outputs",
submit_tool_outputs: data |> Map.get(:submit_tool_outputs, %{}) |> submit_tool_outputs()
}
|> Map.merge(data)
end
def submit_tool_outputs(data) do
%{
tool_calls: data |> Map.get(:tool_calls, [%{}]) |> Enum.map(&tool_call(&1))
}
end
def tool_call(data) do
%{
function: data |> Map.get(:function, %{}) |> tool_call_function(),
id: "tc_abcd1234",
type: "function"
}
|> Map.merge(data)
end
def tool_call_function(data) do
%{
arguments: "arguments",
name: "tool_call_function"
}
|> Map.merge(data)
end
def completion_usage(data) do
%{
completion_count: 1,
prompt_tokens: 1000,
total_tokens: 1000
}
|> Map.merge(data)
end
def step(data) do
%{
assistant_id: "a_abcd1234",
cancelled_at: 123_456,
completed_at: 123_456,
created_at: 123_456,
expired_at: 123_456,
failed_at: 123_456,
id: "s_abcd1234",
object: "thread.run.step",
run_id: "r_abcd1234",
status: "completed",
thread_id: "t_abcd1234",
type: "message_creation"
}
|> Map.merge(data)
|> Map.merge(%{
last_error: data |> Map.get(:last_error, %{}) |> last_error(),
metadata: data |> Map.get(:metadata, %{"key" => "value"}),
step_details:
data
|> Map.get(:step_details, %{})
|> step_details(),
usage: data |> Map.get(:usage, %{}) |> completion_usage()
})
end
def step_details(%{type: "tool_calls"} = data) do
%{
tool_calls: data |> Map.get(:message_creation, %{}) |> message_creation(),
type: "message_creation"
}
end
def step_details(data) do
%{
message_creation: data |> Map.get(:message_creation, %{}) |> message_creation(),
type: "message_creation"
}
end
def message_creation(data) do
%{
message_id: "m_abcd1234"
}
|> Map.merge(data)
end
end