LLM profiles

An LLM profile is one model at one vendor: how to reach the model and what the model costs. Agents name the profile in the llm command. To use another model, define another profile.

Settings

FieldTypeDefaultDescription
namerequiredstringThe name this profile is referred to by, in agents and in other configuration.
docstringFree-text notes about this profile, for whoever maintains the configuration.
vendorstring"openai"The LLM vendor. Reports are organized under this name.
adapterstring"openai"The adapter class that connects to this LLM. It must implement the LlmAdapter interface and be on the allowlist.
urldynamic string"https://api.openai.com"The URL of the LLM server.
headersobject of string → dynamic stringHeaders added to the request. Values are dynamic strings, as in agents.
queryParamsobject of string → dynamic stringQuery parameters. Values are dynamic strings, as in agents.
additionalParamsdynamic dictAdditional parameters to send to the LLM. They are merged with the parameters the adapter class produces and win wherever the two disagree. String values are interpreted as dynamic strings, as in agents.
modelrequiredstringThe model this profile calls. A profile represents one model of one vendor; to use another model, define another profile.
pricingModelDetailsThe model's prices per million tokens. The cost of a run is calculated from these.
maxTokensinteger5000The token ceiling for agents using this profile. An agent may ask for fewer but not more. What it counts depends on the vendor.
retriesinteger1How many times a failed request is retried.
connectionPoolNamestring"default"The connection pool used for calls to the LLM server.
maxToolsinteger10The most tools that may be sent in a single call.
toolErrorPromptstring"Tool returned an error. If changing the arguments to the tool would get past this error, change the arguments. Otherwise, if the tool can be skipped, skip it. As a last resort, provide a text error message and end the conversation."The user prompt sent to the LLM when a tool call fails.

Model prices

Prices are per million tokens. The cost report and the per-run spend limit are computed from these prices.

FieldTypeDefaultDescription
inputTextnumber0Price per million input text tokens.
outputTextnumber0Price per million output text tokens.
inputImagenumber0Price per million input image tokens.
outputImagenumber0Price per million output image tokens.

Dynamic values

url, the values in headers, and the string values in additionalParams are dynamic strings. These values are evaluated for every call with the same rules as an agent expression. A secret read at call time keeps the key out of the configuration: { f"Bearer {sys.secret['OPENAI_API_KEY']}" }.

Seeded profiles

A new account has profiles for OpenAI (gpt5_mini, and gpt_image for image generation), Anthropic (claude_haiku) and Gemini (gemini_flash, and gemini_image for image generation). Each profile reads its key from the environment. Edit the model and the prices to match your contracts.

Other vendors

Any endpoint that speaks one of the three protocols needs only a profile with the endpoint's URL. Any other endpoint needs an adapter.