nutricore / server.py
GitHub Actions
Deploy: fd7352bd4a3722db55d92a07f0e5e9dd211faf54
0d8c5a5
Raw
History Blame Contribute Delete
1.26 kB
"""
Nutricore Food Solution - ChatKit Server
"""
from collections.abc import AsyncIterator
from chatkit.server import ChatKitServer
from chatkit.types import ThreadMetadata, ThreadStreamEvent, UserMessageItem
from chatkit.agents import AgentContext, simple_to_agent_input, stream_agent_response
from agents import Runner
from agent import nutri_agent
from store import InMemoryStore
class NutricoreServer(ChatKitServer[dict]):
def __init__(self, store: InMemoryStore):
super().__init__(store)
async def respond(
self,
thread: ThreadMetadata,
input_user_message: UserMessageItem | None,
context: dict,
) -> AsyncIterator[ThreadStreamEvent]:
items_page = await self.store.load_thread_items(
thread.id, after=None, limit=20, order="asc", context=context
)
agent_input = await simple_to_agent_input(items_page.data)
agent_context = AgentContext(thread=thread, store=self.store, request_context=context)
result = Runner.run_streamed(nutri_agent, agent_input, context=agent_context)
async for event in stream_agent_response(agent_context, result):
yield event
store = InMemoryStore()
nutricore_server = NutricoreServer(store=store)