Search documentation of instructor_lite

# InstructorLite.Adapters.ChatCompletionsCompatible (instructor_lite v1.0.0)

View Source

Adapter for Chat Completions-compatible API endpoints, such as OpenAI or Grok.

This adapter uses structured outputs.

## 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.ChatCompletionsCompatible,
      adapter_context: [
        api_key: Application.fetch_env!(:instructor_lite, :openai_key),
        url: "https://api.openai.com/v1/chat/completions"
      ]
    )
    {:ok, %{name: "John", age: 25}}

# Summary

## Functions

initial_prompt(params, opts)

Updates `params` with prompt based on `json_schema` and `notes`.

parse_response(response, opts)

Parse chat completion endpoint response.

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

Updates `params` with prompt for retrying a request.

send_request(params, opts)

Make request to 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 API.

## Options

- `:api_key` (`String.t/0`) - Required. 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"`.