Skip to main content

Text Generation

Smallest “hello world” for text generation.

For a full runnable script, see packages/dhenara_ai/examples/01_text_generation.py.

import os

from dhenara.ai import AIModelClient
from dhenara.ai.types import AIModelAPI, AIModelAPIProviderEnum, AIModelCallConfig, AIModelEndpoint
from dhenara.ai.types.genai.foundation_models.anthropic.chat import ClaudeSonnet45


api = AIModelAPI(
provider=AIModelAPIProviderEnum.ANTHROPIC,
api_key=os.environ["ANTHROPIC_API_KEY"],
)

endpoint = AIModelEndpoint(api=api, ai_model=ClaudeSonnet45)

client = AIModelClient(
model_endpoint=endpoint,
config=AIModelCallConfig(
max_output_tokens=400,
streaming=False,
),
is_async=False,
)

response = client.generate(
prompt="What are three ways to improve productivity?",
instructions=["Be specific and actionable."],
)

assert response.chat_response
print(response.chat_response.text())

# Optional metrics (if enabled)
print(response.chat_response.usage)
print(response.chat_response.usage_charge)

Reasoning / thinking models

If you enable reasoning on a reasoning-capable model, you can also read any exposed “thinking text” via reasoning().

from dhenara.ai import AIModelClient
from dhenara.ai.types import AIModelCallConfig


client = AIModelClient(
model_endpoint=endpoint,
config=AIModelCallConfig(
reasoning=True,
reasoning_effort="medium",
max_reasoning_tokens=800,
streaming=False,
),
is_async=False,
)

response = client.generate(prompt="Summarize time blocking in 4 bullets.")

assert response.chat_response
print(response.chat_response.reasoning() or "")
print(response.chat_response.text())