Files
meijiaka-zy/python-api/app/ai/adapters/volcengine_ark_adapter.py
T
小鱼开发 bd6681c454 fix(adapter): VolcengineArkAdapter 转发 reasoning_effort,移除 temperature 传参
- Adapter 之前漏传 reasoning_effort,platform-config.yaml 里配置的
  minimal 未生效,可能导致脚本生成走完整推理链变慢
- 豆包 Seed 2.0 Pro 强制固定 temperature=1,传参无效,全部移除
- 移除 script_service.generate_script/polish_content 和 script.py
  generate_title 中的 temperature 硬编码
2026-05-05 21:52:09 +08:00

94 lines
3.0 KiB
Python

"""
火山方舟 Adapter
================
实现 PlatformAdapter + SyncCapable。
直接接入 VolcengineProvider,提供标准 Protocol 接口。
"""
from __future__ import annotations
import logging
from typing import Any
from app.ai.adapters.base import AdapterResponse, PlatformAdapter, SyncCapable
from app.ai.adapters.constants import Method
from app.ai.providers.volcengine_provider import VolcengineProvider
from app.core.exceptions import PlatformError, PlatformErrorType
logger = logging.getLogger(__name__)
class VolcengineArkAdapter(PlatformAdapter, SyncCapable):
"""火山方舟 LLM 平台标准 Adapter"""
platform_id = "volcengine_ark"
def __init__(self, provider: VolcengineProvider):
self.provider = provider
# ── PlatformAdapter ──
async def health(self) -> AdapterResponse:
try:
health = await self.provider.health_check()
return AdapterResponse(
success=health.is_available,
data={"response_time_ms": health.response_time},
)
except Exception as e:
return AdapterResponse(
success=False,
error_message=str(e),
retryable=False,
)
async def close(self) -> None:
if hasattr(self.provider.client, "close"):
await self.provider.client.close()
# ── SyncCapable ──
async def call(self, method: str, payload: dict[str, Any]) -> AdapterResponse:
try:
if method == Method.CHAT:
result = await self.provider.generate(
prompt=payload["prompt"],
model=payload.get("model"),
max_tokens=payload.get("max_tokens"),
system_prompt=payload.get("system_prompt"),
reasoning_effort=payload.get("reasoning_effort"),
)
return AdapterResponse(
success=True,
data={
"content": result.content,
"usage": result.usage,
"model": result.model,
},
)
elif method == Method.EMBEDDING:
result = await self.provider.create_embeddings(
texts=payload["texts"],
model=payload.get("model"),
)
return AdapterResponse(success=True, data=result)
else:
return AdapterResponse(
success=False,
error_message=f"不支持的方法: {method}",
retryable=False,
)
except PlatformError:
raise
except Exception as e:
raise PlatformError(
f"火山方舟 {method} 调用失败: {e}",
platform="volcengine_ark",
retryable=False,
error_type=PlatformErrorType.UNKNOWN,
) from e