"""DoubaoProvider - 字节豆包 Provider 支持豆包 1.6 Pro/Lite 系列模型。 API:火山引擎 OpenAI 兼容接口 鉴权:Bearer API Key(火山引擎 IAM) """ from __future__ import annotations import logging from typing import Any from agentkit.llm.providers.openai import OpenAICompatibleProvider logger = logging.getLogger(__name__) # 豆包模型映射 DOUBAO_MODEL_MAP = { "doubao-pro-32k": "doubao-pro-32k", "doubao-pro-128k": "doubao-pro-128k", "doubao-lite-32k": "doubao-lite-32k", "doubao-lite-128k": "doubao-lite-128k", "doubao-vision": "doubao-vision", } # 火山引擎 API base URL DOUBAO_DEFAULT_BASE_URL = "https://ark.cn-beijing.volces.com/api/v3" class DoubaoProvider(OpenAICompatibleProvider): """字节豆包 Provider 通过火山引擎 OpenAI 兼容接口调用豆包模型。 使用方式: provider = DoubaoProvider( api_key="your_ark_api_key", # 可选:指定推理接入点 ID 作为 default_model default_model="doubao-pro-32k", ) 注意:火山引擎需要在控制台创建"推理接入点"获取 Service ID, 也可以直接使用模型名称作为 endpoint_id。 """ def __init__( self, api_key: str, base_url: str = DOUBAO_DEFAULT_BASE_URL, default_model: str = "doubao-pro-32k", **kwargs: Any, ): super().__init__( api_key=api_key, base_url=base_url, default_model=default_model, **kwargs, ) async def chat(self, request): """发送 chat 请求,处理豆包模型映射""" request.model = DOUBAO_MODEL_MAP.get(request.model, request.model) return await super().chat(request)