Skip to content

Commit 070b754

Browse files
committed
Adding Anthropic support and test coverage
1 parent f005a8f commit 070b754

File tree

3 files changed

+6
-7
lines changed

3 files changed

+6
-7
lines changed

pydantic_ai_slim/pydantic_ai/models/anthropic.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -874,10 +874,13 @@ def _map_mcp_server_use_block(item: BetaMCPToolUseBlock, provider_name: str) ->
874874
)
875875

876876

877+
mcp_server_result_content_ta: TypeAdapter[Any] = TypeAdapter(Any)
878+
879+
877880
def _map_mcp_server_result_block(item: BetaMCPToolResultBlock, provider_name: str) -> BuiltinToolReturnPart:
878881
return BuiltinToolReturnPart(
879882
provider_name=provider_name,
880883
tool_name=CodeExecutionTool.kind,
881-
content=item.content,
884+
content=mcp_server_result_content_ta.dump_python(item.content, mode='json'),
882885
tool_call_id=item.tool_use_id,
883886
)

tests/models/test_anthropic.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3078,7 +3078,7 @@ async def test_anthropic_mcp_servers(allow_model_requests: None, anthropic_api_k
30783078
parts=[
30793079
ThinkingPart(
30803080
content='The user is asking what games they have. I have a function available called "test-server_get_my_games" that returns a list of the user\'s favorite games. This seems like the appropriate function to call to answer their question. The function doesn\'t require any parameters according to the schema, so I can call it directly.',
3081-
signature=IsStr(),
3081+
signature='EuwDCkYICBgCKkCNx3nUT7+tZhbzb0XgVYmWnCsR6L6sNy1kFWTGK6zyRD4Q8mMkrHJDXlxBw8C0p9NdyjmxgdPSbGoK0RzdrnFcEgzkzU9fCjHfzcnpbH8aDLMRKiFFZQsGs+oA9SIwMeS/AQFnsCJYn0ktKRRJe1lgXQugxIcXy4wufUx7rnLFBlkGv2nFbJCQ6m8nPM9JKtMCpptItrWIURJ1H4OSKrkULa3/x6u223x592H0EV48cBtB4zRFvK8y6M3JvMH0TXwsGw5dGw0j4oFWJZVi6RDGCzM4A0B6FExufgdqulZEPXwzOmRdT9+6YwhP934ECVkXXrnjkEOQBYR6WoYLJafsnAt6IrFjdpRqQx3GyHxnlGn5Yikmnp3jvOX/rUwBq4qaGV3GYv7K6er4eM+7E5+wBDeLCloauX1Sng+4+hrW9voWGVW/Y27YHtQ13/abLViZDJLS+hSYQzQQMI7lMkV+Ht44e3Vh2UioUVFqwmFkl0N3fn0WO+p1aDoktlN2sLRkg6ybP1S95spT+XZI21KHuASCHZ0pZKUlml1tb4BVxDdGjGC31NrBczoV/TlpyWZCrzMeoOx81vAiUAKHwQD+JdY7Xyw/UCPOSu7OzEkywKHEwcSW5qgAZHVSAZFQu+iE6uG9GAE=',
30823082
provider_name='anthropic',
30833083
),
30843084
TextPart(content="I'll check what games you have by looking up your game list."),
@@ -3152,7 +3152,7 @@ async def test_anthropic_mcp_servers_stream(allow_model_requests: None, anthropi
31523152
parts=[
31533153
ThinkingPart(
31543154
content="The user is asking about their games. I have a function called `test-server_get_my_games` that returns a list of the user's favorite games. This function doesn't require any parameters, so I can call it directly.",
3155-
signature=IsStr(),
3155+
signature='Ev4CCkYICBgCKkC2CV8NXGK/AuQ4/m1/1qE91t9kn26YXfJqV4GLu+pQ5arslF66ul0lb2tjDaq6jEoScCgXONCbjVTTGXRgL31OEgz6Hf2+sxQphfOM0NsaDAGUIjrX8JtDLUHYCSIwDiCjhcg4JzBLobWmlquAlva+JlrB3yUlyWBCOe3z0GBxqs9MGtaEsmROBfy9w5bVKuUBPWfEKKcSIj57MWaQKquRHrl+EaaTVI2/dS3fU0opvd7HTbJ647RvWIKatcw1u3Q9WlNuGhts2TzwpqvzliIkheOjbv3URnfdW2vjka5WN6sntwoqdMrmmJTMD33PLXs2PZlnFUJ2BAS0lglihGbrOrIE1gRsTjZVrhXI8ZpJWPMYJ07FdtLwd+v0F3gf32z282QuQdNlaVliNjdcV+IvfJJL8BCF7coL+fKahuu8GCLVCjwmitJEIgC3ykzuVxCGT7U6hCuEM3Oe7UcLlay9n89O2jmW/FbQIuUpNmVFrrmM3Mn1GBgB',
31563156
provider_name='anthropic',
31573157
),
31583158
BuiltinToolCallPart(

tests/models/test_openai_responses.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6240,7 +6240,6 @@ async def test_openai_responses_model_mcp_server_tool(allow_model_requests: None
62406240
BuiltinToolReturnPart(
62416241
tool_name='mcp_server',
62426242
content={
6243-
'status': 'completed',
62446243
'name': IsStr(),
62456244
'server_label': 'test_server',
62466245
'arguments': '{}',
@@ -6337,7 +6336,6 @@ async def test_openai_responses_model_mcp_server_tool_stream(allow_model_request
63376336
BuiltinToolReturnPart(
63386337
tool_name='mcp_server',
63396338
content={
6340-
'status': 'completed',
63416339
'name': 'get_my_games',
63426340
'server_label': 'test_server',
63436341
'arguments': '{}',
@@ -6413,7 +6411,6 @@ async def test_openai_responses_model_mcp_server_tool_stream(allow_model_request
64136411
part=BuiltinToolReturnPart(
64146412
tool_name='mcp_server',
64156413
content={
6416-
'status': 'completed',
64176414
'name': 'get_my_games',
64186415
'server_label': 'test_server',
64196416
'arguments': '{}',
@@ -6481,7 +6478,6 @@ async def test_openai_responses_model_mcp_server_tool_stream(allow_model_request
64816478
result=BuiltinToolReturnPart(
64826479
tool_name='mcp_server',
64836480
content={
6484-
'status': 'completed',
64856481
'name': 'get_my_games',
64866482
'server_label': 'test_server',
64876483
'arguments': '{}',

0 commit comments

Comments
 (0)