Messages
The messages and amessages functions use the Anthropic Messages API format. All providers support this through automatic conversion, so you can use the same Anthropic-style message format regardless of backend.
any_llm.messages()
Section titled “any_llm.messages()”def messages( model: str, messages: list[dict[str, Any]], max_tokens: int, *, provider: str | LLMProvider | None = None, system: str | None = None, temperature: float | None = None, top_p: float | None = None, top_k: int | None = None, stream: bool | None = None, stop_sequences: list[str] | None = None, tools: list[dict[str, Any]] | None = None, tool_choice: dict[str, Any] | None = None, metadata: dict[str, Any] | None = None, thinking: dict[str, Any] | None = None, api_key: str | None = None, api_base: str | None = None, client_args: dict[str, Any] | None = None, **kwargs: Any,) -> MessageResponse | Iterator[MessageStreamEvent]any_llm.amessages()
Section titled “any_llm.amessages()”Async variant with the same parameters. Returns MessageResponse | AsyncIterator[MessageStreamEvent].
async def amessages( model: str, messages: list[dict[str, Any]], max_tokens: int, *, provider: str | LLMProvider | None = None, system: str | None = None, temperature: float | None = None, top_p: float | None = None, top_k: int | None = None, stream: bool | None = None, stop_sequences: list[str] | None = None, tools: list[dict[str, Any]] | None = None, tool_choice: dict[str, Any] | None = None, metadata: dict[str, Any] | None = None, thinking: dict[str, Any] | None = None, api_key: str | None = None, api_base: str | None = None, client_args: dict[str, Any] | None = None, **kwargs: Any,) -> MessageResponse | AsyncIterator[MessageStreamEvent]Parameters
Section titled “Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
model | str | required | Model identifier. Recommended: Use with separate provider parameter. Alternative: Combined format ‘provider:model’. |
messages | list[dict[str, Any]] | required | List of messages in Anthropic format. |
max_tokens | int | required | Maximum number of tokens to generate. |
provider | str | LLMProvider | None | None | Provider name to use for the request. |
system | str | None | None | System prompt. |
temperature | float | None | None | Controls randomness (0.0 to 1.0). |
top_p | float | None | None | Controls diversity via nucleus sampling. |
top_k | int | None | None | Only sample from the top K options. |
stream | bool | None | None | Whether to stream the response. |
stop_sequences | list[str] | None | None | Custom stop sequences. |
tools | list[dict[str, Any]] | None | None | List of tools in Anthropic format. |
tool_choice | dict[str, Any] | None | None | Controls which tool the model uses. |
metadata | dict[str, Any] | None | None | Request metadata. |
thinking | dict[str, Any] | None | None | Thinking/reasoning configuration. |
api_key | str | None | None | API key for the provider. |
api_base | str | None | None | Base URL for the provider API. |
client_args | dict[str, Any] | None | None | Additional provider-specific arguments for client instantiation. |
**kwargs | Any | required | Additional provider-specific arguments. |
Return Value
Section titled “Return Value”- Non-streaming: Returns a
MessageResponseobject. - Streaming (
stream=True): Returns anIterator[MessageStreamEvent](sync) orAsyncIterator[MessageStreamEvent](async).
Basic message
Section titled “Basic message”from any_llm.api import messages
response = messages( model="claude-sonnet-4-20250514", provider="anthropic", messages=[{"role": "user", "content": "Hello!"}], max_tokens=1024,)print(response.content[0].text)With system prompt
Section titled “With system prompt”response = messages( model="claude-sonnet-4-20250514", provider="anthropic", messages=[{"role": "user", "content": "Translate to French: Hello"}], max_tokens=1024, system="You are a professional translator.",)import asynciofrom any_llm.api import amessages
async def main(): response = await amessages( model="claude-sonnet-4-20250514", provider="anthropic", messages=[{"role": "user", "content": "Hello!"}], max_tokens=1024, ) print(response.content[0].text)
asyncio.run(main())