Models API Reference

class llm_async.models.message.Message(role: Literal['system', 'user', 'assistant', 'tool'], content: str | list[dict[str, Any]], tool_calls: list[ToolCall] | None = None, reasoning: str | None = None, reasoning_details: list[dict[str, Any] | str] | None = None, stop_reason: str | None = None, original: dict[str, Any] | None = None)[source]

Bases: object

Represents a single chat message.

The preferred way to build messages for acomplete. Accepts plain dicts as well, but using Message provides role validation and type safety.

Example:

from llm_async.models.message import Message

messages = [
    Message("system", "You are a helpful assistant."),
    Message("user", "Hello, how are you?"),
]
Args:

role: One of "system", "user", "assistant", "tool". content: Text content or a list of content parts (for multimodal). tool_calls: Optional list of tool calls attached to this message. original: Raw provider payload, used internally when round-tripping responses.

content: str | list[dict[str, Any]][source]
original: dict[str, Any] | None = None[source]
reasoning: str | None = None[source]
reasoning_details: list[dict[str, Any] | str] | None = None[source]
role: Literal['system', 'user', 'assistant', 'tool'][source]
stop_reason: str | None = None[source]
tool_calls: list[ToolCall] | None = None[source]
llm_async.models.message.message_to_dict(message: Message) dict[str, Any][source]
llm_async.models.message.normalize_messages(messages: Sequence[Message | Mapping[str, Any]]) list[Message][source]
llm_async.models.message.validate_messages(messages: Sequence[Message]) None[source]
class llm_async.models.response.Response(original: 'dict[str, Any]', provider_name: 'str', main_response: 'Message | None' = None, stream: 'bool' = False, stream_generator: 'AsyncIterator[StreamChunk] | None' = None)[source]

Bases: object

main_response: Message | None = None[source]
original: dict[str, Any][source]
provider_name: str[source]
stream: bool = False[source]
async stream_content() AsyncIterator[str][source]

Convenience method to iterate over stream content

stream_generator: AsyncIterator[StreamChunk] | None = None[source]
class llm_async.models.response.StreamChunk(content: str | None, original: dict[str, Any])[source]

Bases: object

Represents a single chunk from a streaming response.

  • content: the textual content of the chunk (may be None)

  • original: the original parsed JSON chunk from the provider

content: str | None[source]
original: dict[str, Any][source]
class llm_async.models.tool_call.ToolCall(id: 'str', type: 'str', name: 'str | None' = None, input: 'dict[str, Any] | None' = None, function: 'dict[str, Any] | None' = None)[source]

Bases: object

static from_responses_api_function_call(fc_id: str, call_id: str, name: str, arguments: str) ToolCall[source]

Create ToolCall from Responses API function call.

function: dict[str, Any] | None = None[source]
static function_call_output(call_id: str, output: str) ToolCall[source]

Create a function call output ToolCall for Responses API.

id: str[source]
input: dict[str, Any] | None = None[source]
name: str | None = None[source]
to_responses_api_message() dict[str, Any][source]

Convert to OpenAI Responses API format message.

type: str[source]
class llm_async.models.response_schema.ResponseSchema(schema: 'Mapping[str, Any]', name: 'str' = 'response', strict: 'bool' = True, mime_type: 'str' = 'application/json')[source]

Bases: object

classmethod coerce(value: ResponseSchema | Mapping[str, Any] | None) ResponseSchema | None[source]
for_google() dict[str, Any][source]
for_openai() dict[str, Any][source]
for_openai_responses() dict[str, Any][source]
for_openrouter() dict[str, Any][source]
mime_type: str = 'application/json'[source]
name: str = 'response'[source]
schema: Mapping[str, Any][source]
strict: bool = True[source]
class llm_async.models.event.Event(topic: str, payload: dict[str, Any], timestamp: datetime)[source]

Bases: object

Represents a pub/sub event for tool execution.

payload: dict[str, Any][source]
timestamp: datetime[source]
topic: str[source]

Tool

class llm_async.models.Tool(name: str, description: str, parameters: dict[str, Any] | None = None, input_schema: dict[str, Any] | None = None)[source]

Bases: object

description: str[source]
input_schema: dict[str, Any] | None = None[source]
name: str[source]
parameters: dict[str, Any] | None = None[source]