Skip to content

Commit cf309bc

Browse files
authored
Merge pull request #192 from pdettori/fix/await-task-updater-187
fix(a2a): await async TaskUpdater methods in currency converter
2 parents 19e24ea + 1935884 commit cf309bc

3 files changed

Lines changed: 15 additions & 8 deletions

File tree

a2a/a2a_currency_converter/app/agent.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,16 @@
99
from langchain_core.tools import tool
1010
from langchain_openai import ChatOpenAI
1111
from langgraph.checkpoint.memory import MemorySaver
12+
from langgraph.checkpoint.serde.jsonplus import JsonPlusSerializer
1213
from langgraph.prebuilt import create_react_agent
1314
from pydantic import BaseModel
1415
from pydantic_settings import BaseSettings
1516

16-
memory = MemorySaver()
17+
memory = MemorySaver(
18+
serde=JsonPlusSerializer(
19+
allowed_msgpack_modules=[("app.agent", "ResponseFormat")],
20+
),
21+
)
1722

1823

1924
class Configuration(BaseSettings):

a2a/a2a_currency_converter/app/agent_executor.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ async def execute(
6060

6161
if not is_task_complete and not require_user_input:
6262
logger.info(f"Updating status for non-input task: {task.id}")
63-
updater.update_status(
63+
await updater.update_status(
6464
TaskState.working,
6565
new_agent_text_message(
6666
item["content"],
@@ -70,7 +70,7 @@ async def execute(
7070
)
7171
elif require_user_input:
7272
logger.info(f"Updating status for input task: {task.id}")
73-
updater.update_status(
73+
await updater.update_status(
7474
TaskState.input_required,
7575
new_agent_text_message(
7676
item["content"],
@@ -82,11 +82,11 @@ async def execute(
8282
break
8383
else:
8484
logger.info("Adding artifact for item")
85-
updater.add_artifact(
85+
await updater.add_artifact(
8686
[Part(root=TextPart(text=item["content"]))],
8787
name="conversion_result",
8888
)
89-
updater.complete()
89+
await updater.complete()
9090
break
9191

9292
except InternalServerError as e:
@@ -100,7 +100,7 @@ async def execute(
100100
"""
101101
logger.error(msg=msg)
102102
logger.error(msg=f"Raw InternalServerError: {e}")
103-
updater.update_status(
103+
await updater.update_status(
104104
TaskState.input_required,
105105
new_agent_text_message(
106106
msg,
@@ -123,7 +123,7 @@ async def execute(
123123
The key should match your OpenAI key."""
124124
logger.error(msg=msg)
125125
logger.error(msg=f"Raw AuthenticationError {e}")
126-
updater.update_status(
126+
await updater.update_status(
127127
TaskState.input_required,
128128
new_agent_text_message(
129129
msg,
@@ -136,7 +136,7 @@ async def execute(
136136
except Exception as e:
137137
logger.error(f"An error occurred while streaming the response: {e}")
138138
logger.info(msg=f"The error is a {type(e)}")
139-
updater.update_status(
139+
await updater.update_status(
140140
TaskState.input_required,
141141
new_agent_text_message(
142142
# We don't show the error to the user, as it may have credentials

tests/a2a/test_currency_converter.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
"langgraph",
1616
"langgraph.checkpoint",
1717
"langgraph.checkpoint.memory",
18+
"langgraph.checkpoint.serde",
19+
"langgraph.checkpoint.serde.jsonplus",
1820
"langgraph.prebuilt",
1921
]:
2022
sys.modules.setdefault(mod, MagicMock())

0 commit comments

Comments
 (0)