defmodule Noizu.OpenAI.Api.Thread do require Noizu.OpenAI import Noizu.OpenAI @openai_base "https://api.openai.com/v1" def list() do url = "#{@openai_base}/threads" api_call(:get, url, nil, Noizu.OpenAI.Threads) end def get(thread_id) do url = "#{@openai_base}/threads/#{thread_id}" api_call(:get, url, nil, Noizu.OpenAI.Thread) end def create(attrs) do url = "#{@openai_base}/threads" api_call(:post, url, attrs, Noizu.OpenAI.Thread) end def update(thread_id, attrs) do url = "#{@openai_base}/threads/#{thread_id}" api_call(:post, url, attrs, Noizu.OpenAI.Thread) end def delete(thread_id) do url = "#{@openai_base}/threads/#{thread_id}" api_call(:delete, url, nil, Noizu.OpenAI.DeleteStatus) end defmodule Message do @moduledoc """ Provides functions to interact with Messages within the OpenAI API's thread context. """ require Noizu.OpenAI import Noizu.OpenAI @openai_base "https://api.openai.com/v1" # Lists messages belonging to a thread. def list(thread_id) do url = "#{@openai_base}/threads/#{thread_id}/messages" api_call(:get, url, nil, Noizu.OpenAI.Messages) end # Creates a new message for a thread. def create(thread_id, attrs) do url = "#{@openai_base}/threads/#{thread_id}/messages" api_call(:post, url, attrs, Noizu.OpenAI.Message) end # Retrieves a specific message by its ID. def get(thread_id, message_id) do url = "#{@openai_base}/threads/#{thread_id}/messages/#{message_id}" api_call(:get, url, nil, Noizu.OpenAI.Message) end # Updates a specific message by its ID. def update(thread_id, message_id, attrs) do url = "#{@openai_base}/threads/#{thread_id}/messages/#{message_id}" api_call(:patch, url, attrs, Noizu.OpenAI.Message) end # Deletes a message from a thread. def delete(thread_id, message_id) do url = "#{@openai_base}/threads/#{thread_id}/messages/#{message_id}" api_call(:delete, url, nil, Noizu.OpenAI.DeleteStatus) end end defmodule Run do @moduledoc """ Provides functions to interact with Runs within the OpenAI API. """ require Noizu.OpenAI import Noizu.OpenAI @openai_base "https://api.openai.com/v1" # Lists runs belonging to a thread. def list(thread_id, _params \\ %{}) do url = "#{@openai_base}/threads/#{thread_id}/runs" api_call(:get, url, nil, Noizu.OpenAI.Runs) end # Creates a new run for a thread. def create(thread_id, attrs) do url = "#{@openai_base}/threads/#{thread_id}/runs" api_call(:post, url, attrs, Noizu.OpenAI.Run) end # Retrieves a specific run by its ID. def get(thread_id, run_id) do url = "#{@openai_base}/threads/#{thread_id}/runs/#{run_id}" api_call(:get, url, nil, Noizu.OpenAI.Run) end # Modifies a specific run by its ID. def update(thread_id, run_id, attrs) do url = "#{@openai_base}/threads/#{thread_id}/runs/#{run_id}" api_call(:post, url, attrs, Noizu.OpenAI.Run) end # Cancels a run that is in progress. def cancel(thread_id, run_id) do url = "#{@openai_base}/threads/#{thread_id}/runs/#{run_id}/cancel" api_call(:post, url, nil, Noizu.OpenAI.Run) end # Submits tool outputs to a run that requires action. def submit_tool_outputs(thread_id, run_id, outputs) do url = "#{@openai_base}/threads/#{thread_id}/runs/#{run_id}/submit_tool_outputs" api_call(:post, url, outputs, Noizu.OpenAI.Run) end end end