InstructorLite.Adapters.OpenAI (instructor_lite v0.3.0)

View Source

OpenAI adapter.

This adapter is implemented using chat completions endpoint and structured outputs.

JSON mode

Even though the adapter uses strict JSON Schema mode by default, it respects all explicitly provided keys in params. To switch to a less strict JSON mode, simply provide the response_format key in your params.

Params

params argument should be shaped as a Create chat completion request body.

Example

InstructorLite.instruct(%{
    messages: [%{role: "user", content: "John is 25yo"}],
    model: "gpt-4o-mini",
    service_tier: "default"
  },
  response_model: %{name: :string, age: :integer},
  adapter: InstructorLite.Adapters.OpenAI,
  adapter_context: [api_key: Application.fetch_env!(:instructor_lite, :openai_key)]
)
{:ok, %{name: "John", age: 25}}

Summary

Functions

Updates params with prompt based on json_schema and notes.

Parse chat completion endpoint response.

Updates params with prompt for retrying a request.

Make request to OpenAI API.

Functions

initial_prompt(params, opts)

Updates params with prompt based on json_schema and notes.

Also specifies default gpt-4o-mini model if not provided by a user.

parse_response(response, opts)

Parse chat completion endpoint response.

Can return:

  • {:ok, parsed_json} on success.
  • {:error, :refusal, reason} on refusal.
  • {:error, :unexpected_response, response} if response is of unexpected shape.

retry_prompt(params, resp_params, errors, response, opts)

Updates params with prompt for retrying a request.

send_request(params, opts)

Make request to OpenAI API.

Options

  • :api_key (String.t/0) - Required. OpenAI API key

  • :http_client (atom/0) - Any module that follows Req.post/2 interface The default value is Req.

  • :http_options (keyword/0) - Options passed to http_client.post/2 The default value is [receive_timeout: 60000].

  • :url (String.t/0) - API endpoint to use for sending requests The default value is "https://api.openai.com/v1/chat/completions".