import os
import time
from openai import OpenAI
from pydantic import BaseModel, ValidationError
from statebase import StateBase, StateBaseError
sb = StateBase(api_key=os.environ["STATEBASE_API_KEY"])
llm = OpenAI()
class AgentState(BaseModel):
stage: str = "gathering"
collected: dict[str, str] = {}
last_error: str | None = None
def run_agent(session_id: str, user_input: str) -> str:
context = sb.sessions.get_context(session_id=session_id, turn_limit=15, memory_limit=8)
try:
response = llm.chat.completions.create(
model=os.environ["MODEL"],
messages=[
{"role": "system", "content": f"State:\n{context.state}\nContext:\n{context}"},
{"role": "user", "content": user_input},
],
).choices[0].message.content
except Exception as e:
return handle_error(session_id, "llm_generation", e)
sb.sessions.add_turn(
session_id=session_id,
input=user_input,
output=response,
reasoning="Production loop: context + generate + log",
metadata={"model": os.environ["MODEL"]},
)
return response