barbitoff programmer`s blog

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

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

Google ADK + VertexAI + Claude: работа за HTTP прокси

Проблема

Пытаюсь запустить решение на Google ADK, использующее VertexAI и одну из моделей Claude, за HTTP прокси-сервером. Вызов идет мимо прокси, что приводит к ошибке, хотя прокси прописан в переменной окружения HTTPS_PROXY.

Решение

Вручную расширить класс ADK-модели Claude, добавив поддержку прокси:

from google.adk.agents import Agent
from google.adk.models.anthropic_llm import Claude
from google.adk.models.registry import LLMRegistry
from anthropic import AnthropicVertex
from functools import cached_property
import os
import httpx

class ClaudeWithProxySupport(Claude):
    @cached_property
    def _anthropic_client(self) -> AnthropicVertex:
        proxy = os.getenv("HTTPS_PROXY")
        if not proxy:
            return super()._anthropic_client

        if (
            "GOOGLE_CLOUD_PROJECT" not in os.environ
            or "GOOGLE_CLOUD_LOCATION" not in os.environ
        ):
            raise ValueError(
                "GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION must be set "
                "for using Anthropic on Vertex."
            )

        return AnthropicVertex(
            project_id=os.environ["GOOGLE_CLOUD_PROJECT"],
            region=os.environ["GOOGLE_CLOUD_LOCATION"],
            http_client=httpx.Client(proxy=proxy),
        )


# Register the custom model
LLMRegistry.register(ClaudeWithProxySupport) 

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

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