|
2 | 2 | from agentex.lib.sdk.fastacp.fastacp import FastACP |
3 | 3 | from agentex.lib.types.acp import SendMessageParams |
4 | 4 |
|
| 5 | + |
5 | 6 | from agentex.lib.types.task_message_updates import TaskMessageUpdate |
6 | 7 | from agentex.types.task_message import TaskMessageContent |
7 | 8 | from agentex.types.task_message_content import TextContent |
8 | 9 | from agentex.lib.utils.logging import make_logger |
| 10 | +from agentex.lib.utils.model_utils import BaseModel |
9 | 11 |
|
10 | 12 | logger = make_logger(__name__) |
11 | 13 |
|
|
16 | 18 | ) |
17 | 19 |
|
18 | 20 |
|
| 21 | +class StateModel(BaseModel): |
| 22 | + system_prompt: str |
| 23 | + model: str |
| 24 | + |
19 | 25 | @acp.on_message_send |
20 | 26 | async def handle_message_send( |
21 | 27 | params: SendMessageParams |
22 | 28 | ) -> Union[TaskMessageContent, AsyncGenerator[TaskMessageUpdate, None]]: |
| 29 | + from agentex.lib import adk |
23 | 30 | """Default message handler with streaming support""" |
| 31 | + # Try to retrieve the state. If it doesn't exist, create it. |
| 32 | + task_state = await adk.state.get_by_task_and_agent(task_id=params.task.id, agent_id=params.agent.id) |
| 33 | + |
| 34 | + if not task_state: |
| 35 | + # If the state doesn't exist, create it. |
| 36 | + state = StateModel(system_prompt="You are a helpful assistant that can answer questions.", model="gpt-4o-mini") |
| 37 | + task_state = await adk.state.create(task_id=params.task.id, agent_id=params.agent.id, state=state) |
| 38 | + else: |
| 39 | + state = StateModel.model_validate(task_state.state) |
24 | 40 | return TextContent( |
25 | 41 | author="agent", |
26 | 42 | content=f"Hello! I've received your message. Here's a generic response, but in future tutorials we'll see how you can get me to intelligently respond to your message. This is what I heard you say: {params.content.content}", |
|
0 commit comments