barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

вторник, 10 июня 2025 г.

Google ADK + AWS Bedrock + Claude

Google ADK "из коробки" не поддерживает работу с AWS Bedrock. Можно его подключить через LiteLLM, но это может быть сопряжено с трудностями, например, из-за конфликта версий зависимостей. Есть вариант проще - подключить зависимость anthropic[bedrock], после чего отнаследоваться от класса модели Claude, входящего в ADK и использующего VertexAI, заменив клиента на Bedrock-клиента. Dirty, но работает:

import os
import httpx
from functools import cached_property
from typing_extensions import override
from google.adk.models.anthropic_llm import Claude
from google.adk.models.registry import LLMRegistry
from anthropic import AnthropicBedrock class ClaudeOnBedrock(Claude):
    @staticmethod
    @override
    def supported_models() -> list[str]:
        return [r".*anthropic.claude-3-.*", r".*anthropic.claude-.*-4.*"]
   
    @override
    @cached_property
    def _anthropic_client(self) -> AnthropicBedrock:
        proxy = os.getenv("HTTPS_PROXY")
        if proxy:
            return AnthropicBedrock(http_client=httpx.Client(proxy=proxy),
                aws_region="***")
        return AnthropicBedrock(aws_region="***")

# Register the custom model
LLMRegistry.register(ClaudeOnBedrock)

Комментариев нет:

Отправить комментарий