Basic Chat Completion

Use Message to build messages — it provides role validation and type safety. Plain dicts are also accepted by all providers.

OpenAI

import asyncio
from llm_async import OpenAIProvider
from llm_async.models.message import Message

async def main():
    provider = OpenAIProvider(api_key="your-openai-api-key")
    response = await provider.acomplete(
        model="gpt-4o-mini",
        messages=[
            Message("system", "You are a helpful assistant."),
            Message("user", "Hello, how are you?"),
        ]
    )
    print(response.main_response.content)

asyncio.run(main())

OpenRouter

import asyncio
import os
from llm_async import OpenRouterProvider
from llm_async.models.message import Message

async def main():
    provider = OpenRouterProvider(api_key=os.getenv("OPENROUTER_API_KEY"))
    response = await provider.acomplete(
        model="openrouter/auto",
        messages=[
            Message("system", "You are a helpful assistant."),
            Message("user", "Hello, how are you?"),
        ],
        http_referer="https://github.com/your-username/your-app",
        x_title="My AI App"
    )
    print(response.main_response.content)

asyncio.run(main())

Google Gemini

import asyncio
from llm_async.providers.google import GoogleProvider
from llm_async.models.message import Message

async def main():
    provider = GoogleProvider(api_key="your-google-gemini-api-key")
    response = await provider.acomplete(
        model="gemini-2.5-flash",
        messages=[
            Message("user", "Hello, how are you?"),
        ]
    )
    print(response.main_response.content)

asyncio.run(main())