bd6681c454
- Adapter 之前漏传 reasoning_effort,platform-config.yaml 里配置的 minimal 未生效,可能导致脚本生成走完整推理链变慢 - 豆包 Seed 2.0 Pro 强制固定 temperature=1,传参无效,全部移除 - 移除 script_service.generate_script/polish_content 和 script.py generate_title 中的 temperature 硬编码
94 lines
3.0 KiB
Python
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
|