hexastack-ai
AI engine, LLM provider integration (LiteLLM, Instructor, PydanticAI), and CQRS agent tool reflection for the Hexastack hexagonal architecture framework.
1. Overview
hexastack-ai integrates an agnostic, production-grade AI stack directly into the Hexastack architecture:
- LiteLLM: Unified driver abstraction across 100+ LLM providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, Groq, Bedrock).
- Instructor: Self-correcting structured output validation returning strongly typed Pydantic models.
- PydanticAI: Type-safe agent loop orchestration and tool execution.
- CQRS Tool Reflection: Automatically turns Hexastack CQRS Commands and Queries into callable AI Agent tools.
2. Architecture & Relationships
graph TD
subgraph Core ["hexastack-core"]
PORT["LlmProviderPort"]
MEM["InMemoryLlmProvider"]
end
subgraph AI ["hexastack-ai"]
BOOT["AiBootstrapper (order=18)"]
ADAPTER["LiteLlmAdapter"]
TOOLS["create_cqrs_agent / create_tool_for_message"]
AGENT_ADAPTER["PydanticAiAgentAdapter"]
end
subgraph CQRS ["hexastack-cqrs"]
PIPELINE["ExecutionPipeline"]
CMDS["Commands & Queries"]
end
subgraph UpstreamAI ["Agnostic AI Stack"]
LITE["LiteLLM (100+ Providers)"]
INST["Instructor (Schema Validation)"]
PY_AI["PydanticAI (Agent Execution)"]
end
BOOT -->|binds into DI| PORT
ADAPTER -. implements .-> PORT
ADAPTER --> LITE
ADAPTER --> INST
TOOLS --> PIPELINE
TOOLS --> PY_AI
AGENT_ADAPTER --> PY_AI
3. Installation
# Standalone install
pip install hexastack-ai
# Via umbrella package
pip install "hexastack[ai]"
4. Configuration Reference
[hexastack.ai]
# Provider: "memory" (default for testing), "litellm", "openai", "anthropic", "gemini", "ollama"
provider = "litellm"
model = "gpt-4o-mini"
temperature = 0.2
max_tokens = 2048
api_key = "sk-..." # Or set standard env var OPENAI_API_KEY / ANTHROPIC_API_KEY
# LiteLLM Dialect Settings
[hexastack.ai.litellm]
drop_params = true
num_retries = 3
timeout = 60.0
api_base = "http://localhost:4000" # Optional LiteLLM proxy URL
# Ollama Local Dialect Settings
[hexastack.ai.ollama]
base_url = "http://localhost:11434"
# PydanticAI Agent Settings
[hexastack.ai.agent]
max_turns = 10
system_prompt = "You are a helpful AI assistant."
5. Usage Examples
1. Structured Output Extraction
from pydantic import BaseModel
from hexastack_core.ports.ai import LlmProviderPort
class InvoiceDTO(BaseModel):
customer_id: str
total_amount: float
items: list[str]
def extract_invoice(llm: LlmProviderPort, text: str) -> InvoiceDTO:
return llm.generate_structured(
prompt=f"Extract invoice details from: {text}",
response_schema=InvoiceDTO,
)
2. Auto-Reflecting CQRS Commands as Agent Tools
from hexastack_core.domain import Command, Query
from hexastack_ai.infra.tools import create_cqrs_agent
class CancelSubscriptionCommand(Command):
user_id: str
reason: str
class GetUserPlanQuery(Query[str]):
user_id: str
# Create PydanticAI agent with CQRS handlers as native tools:
agent = create_cqrs_agent(
pipeline=runtime.pipeline,
messages=[CancelSubscriptionCommand, GetUserPlanQuery],
model="anthropic/claude-3-5-sonnet",
system_prompt="You are a customer support agent.",
)
# Agent selects appropriate tools and executes them via Hexastack ExecutionPipeline:
result = agent.run_sync("Cancel subscription for user 123 due to pricing.")
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hexastack_ai-0.0.0-py3-none-any.whl.
File metadata
- Download URL: hexastack_ai-0.0.0-py3-none-any.whl
- Upload date:
- Size: 11.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c7e0a9181c57859ac1ab3a2542accd813262d80c90ddf38debb6793c430e3ab
|
|
| MD5 |
493f681e0a341cbd2855348171552fe7
|
|
| BLAKE2b-256 |
9fd84c8ceccfbe7ba57eaef6319f728a7321e2a190f3cf891c4ee5c2fc284e1e
|