Agent Openai¶
Agent OpenAI — mvp.agent_openai
Cluster: Agents & LLM | Type: component | MCP Tools: 34
Overview¶
Beta, review-pending OpenAI chat completions agent with circuit breaker, retry policy with jitter, structured logging, and Prometheus-style metrics. Wraps the official openai SDK and supports custom base URLs for OpenRouter and other OpenAI-compatible endpoints, with graceful failure when the package is absent or no API key is configured. Block contract verification_method=tier1_review_pending; @component_maturity("beta").
When to use:
- Calling GPT-4o or any OpenAI-compatible model with automatic retry and circuit-breaker protection
- Routing to OpenRouter or a self-hosted inference server via
base_url - Embedding OpenAI completions into the G6 pipeline with full observability and resource guardrails
Example:
from mvp.agent_openai import AgentOpenAIBlock, OpenAIInput, OpenAIMessage
block = AgentOpenAIBlock(name="openai")
result = block.infer(OpenAIInput(
messages=[OpenAIMessage(role="user", content="What is backpropagation?")],
model="gpt-4o-mini",
system_prompt="You are a concise ML tutor.",
))
# result.ok → True; result.value → OpenAIOutput with response, usage, finish_reason
Works well with: agent_langchain, agent_autogen, llm_router
Public API¶
AgentOpenAIPlanner¶
Runtime-first facade that falls back to real deterministic gate logic.
Constructor:
| Parameter | Type | Default |
|---|---|---|
runtime | AgentOpenAIRuntime \| None | None |
Methods:
decide(goal: str, context: str = '') -> AgentOpenAIDecision¶
decide_admission(model: str, base_url: str, deterministic_consent: bool, deterministic_allowed: bool, message_preview: str = '') -> AdmissionDecision¶
judge_guardrail(text_preview: str, rule_types: list[str], deterministic_passed: bool, deterministic_reason: str = '') -> GuardrailVerdict¶
AgentOpenAIBlock(LifecycleMixin, AIBlock[OpenAIInput, OpenAIOutput, None])¶
Beta, review-pending OpenAI chat completions agent.
| Field | Type | Default |
|---|---|---|
name | str | 'agent_openai' |
resource_bounds | ResourceBounds \| None | None |
usage | ResourceUsage | field(default_factory=ResourceUsage) |
api_key | str | '' |
timeout | float | 30.0 |
retry_policy | RetryPolicy | field(default_factory=lambda: RetryPolicy(max_attempts=3, initial_delay=1.0, jitter=True, retryable_exceptions=(ConnectionError, TimeoutError, OSError))) |
agentic_planner | 'AgentOpenAIPlanner \| None' | None |
Methods:
infer(data: OpenAIInput) -> Result[OpenAIOutput]¶
OpenAIMessage(BaseModel)¶
| Field | Type | Default |
|---|---|---|
role | str | required |
content | str | required |
OpenAIUsage(BaseModel)¶
| Field | Type | Default |
|---|---|---|
prompt_tokens | int | 0 |
completion_tokens | int | 0 |
total_tokens | int | 0 |
OpenAIInput(BaseModel)¶
| Field | Type | Default |
|---|---|---|
messages | list[OpenAIMessage] | required |
system_prompt | str | '' |
model | str | 'gpt-4o-mini' |
max_tokens | int | 1024 |
temperature | float | 0.7 |
api_key | str | '' |
base_url | str | '' |
allow_paid_api | bool | False |
run_mode | str | 'beta' |
reviewer_signature | str | '' |
OpenAIOutput(BaseModel)¶
| Field | Type | Default |
|---|---|---|
response | str | required |
finish_reason | str | 'stop' |
usage | OpenAIUsage | Field(default_factory=OpenAIUsage) |
model | str | '' |
degraded | bool | False |
degradation_reason | str | '' |
agentic_evidence | dict[str, Any] | Field(default_factory=dict) |
completion_state | str | 'qualified-draft' |
warning_card | dict[str, Any] | Field(default_factory=dict) |
evidence | dict[str, Any] | Field(default_factory=dict) |
Functions¶
build_agent_openai_planner(default_enabled: bool = True, llm_backend: str | None = None) -> AgentOpenAIPlanner | None¶
Single shared factory for the agentic admission planner (ON-BY-DEFAULT).
MCP Tools¶
| Operation | Source |
|---|---|
agent_create | openai_mcp |
agent_get | openai_mcp |
agent_update | openai_mcp |
agent_list | openai_mcp |
agent_delete | openai_mcp |
session_create | openai_mcp |
session_turn | openai_mcp |
session_get | openai_mcp |
session_list | openai_mcp |
session_delete | openai_mcp |
run_chat | openai_mcp |
run_handoff | openai_mcp |
run_structured | openai_mcp |
run_as_tool | openai_mcp |
run_guarded | openai_mcp |
stream_chat | openai_mcp |
stream_handoff | openai_mcp |
stream_session | openai_mcp |
guardrail_create | openai_mcp |
guardrail_update | openai_mcp |
guardrail_check | openai_mcp |
guardrail_list | openai_mcp |
search | openai_mcp |
openai_info | openai_mcp |
openai_status | openai_mcp |
ops | openai_mcp |
help | openai_mcp |
get_info | openai_mcp |
list_strategies | openai_mcp |
list_patterns | openai_mcp |
explain_admission_policy | openai_mcp |
explain_guardrail_policy | openai_mcp |
source_health | openai_mcp |
run_chat | openai_mcp |