FIX: Anthropic multimodal(Image) message for Anthropic >= 0.48 aware (#6054)

## Why are these changes needed?
This PR fixes a `TypeError: Cannot instantiate typing.Union` that occurs
when using the `MultimodalWebSurfer_agent` with Anthropic models. The
error was caused by the incorrect usage of `typing.Union` as a class
constructor instead of a type hint within the `_anthropic_client.py`
file. The code was attempting to instantiate `typing.Union`, which is
not allowed. The fix correctly uses `typing.Union` within type hints,
and uses the correct `Base64ImageSourceParam` type. It also updates the
`pyproject.toml` dependency.

## Related issue number
Closes #6035 

## Checks

- [ ] I've included any doc changes needed for
<https://microsoft.github.io/autogen/>. See
<https://github.com/microsoft/autogen/blob/main/CONTRIBUTING.md> to
build and test documentation locally.
- [ ] I've added tests (if relevant) corresponding to the changes
introduced in this PR.
- [v] I've made sure all auto checks have passed.

---------

Co-authored-by: Victor Dibia <victordibia@microsoft.com>
This commit is contained in:
EeS 2025-03-22 16:46:55 +09:00 committed by GitHub
parent a2add02b12
commit bca4d7e82f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 10 additions and 5 deletions

View File

@ -19,6 +19,7 @@ dependencies = [
]
[project.optional-dependencies]
anthropic = ["anthropic>=0.48"]
langchain = ["langchain_core~= 0.3.3"]
azure = [
"azure-ai-inference>=1.0.0b7",

View File

@ -25,6 +25,7 @@ from typing import (
import tiktoken
from anthropic import AsyncAnthropic, AsyncStream
from anthropic.types import (
Base64ImageSourceParam,
ContentBlock,
ImageBlockParam,
Message,
@ -36,7 +37,6 @@ from anthropic.types import (
ToolResultBlockParam,
ToolUseBlock,
)
from anthropic.types.image_block_param import Source
from autogen_core import (
EVENT_LOGGER_NAME,
TRACE_LOGGER_NAME,
@ -160,7 +160,7 @@ def user_message_to_anthropic(message: UserMessage) -> MessageParam:
blocks.append(
ImageBlockParam(
type="image",
source=Source(
source=Base64ImageSourceParam(
type="base64",
media_type=get_mime_type_from_image(part),
data=part.to_base64(),

View File

@ -290,7 +290,7 @@ wheels = [
[[package]]
name = "anthropic"
version = "0.45.2"
version = "0.49.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "anyio" },
@ -301,9 +301,9 @@ dependencies = [
{ name = "sniffio" },
{ name = "typing-extensions" },
]
sdist = { url = "https://files.pythonhosted.org/packages/15/74/2b2485fc120da834c0c5be07462541ec082e9fa8851d845f2587e480535a/anthropic-0.45.2.tar.gz", hash = "sha256:32a18b9ecd12c91b2be4cae6ca2ab46a06937b5aa01b21308d97a6d29794fb5e", size = 200901 }
sdist = { url = "https://files.pythonhosted.org/packages/86/e3/a88c8494ce4d1a88252b9e053607e885f9b14d0a32273d47b727cbee4228/anthropic-0.49.0.tar.gz", hash = "sha256:c09e885b0f674b9119b4f296d8508907f6cff0009bc20d5cf6b35936c40b4398", size = 210016 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/74/86/e81814e542d1eaeec84d2312bec93a99b9ef1d78d9bfae1fc5dd74abdf15/anthropic-0.45.2-py3-none-any.whl", hash = "sha256:ecd746f7274451dfcb7e1180571ead624c7e1195d1d46cb7c70143d2aedb4d35", size = 222797 },
{ url = "https://files.pythonhosted.org/packages/76/74/5d90ad14d55fbe3f9c474fdcb6e34b4bed99e3be8efac98734a5ddce88c1/anthropic-0.49.0-py3-none-any.whl", hash = "sha256:bbc17ad4e7094988d2fa86b87753ded8dce12498f4b85fe5810f208f454a8375", size = 243368 },
]
[[package]]
@ -589,6 +589,9 @@ dependencies = [
]
[package.optional-dependencies]
anthropic = [
{ name = "anthropic" },
]
azure = [
{ name = "azure-ai-inference" },
{ name = "azure-core" },
@ -719,6 +722,7 @@ dev = [
[package.metadata]
requires-dist = [
{ name = "aiofiles", marker = "extra == 'openai'" },
{ name = "anthropic", marker = "extra == 'anthropic'", specifier = ">=0.48" },
{ name = "asyncio-atexit", marker = "extra == 'docker'", specifier = ">=1.0.1" },
{ name = "autogen-agentchat", marker = "extra == 'file-surfer'", editable = "packages/autogen-agentchat" },
{ name = "autogen-agentchat", marker = "extra == 'magentic-one'", editable = "packages/autogen-agentchat" },