新增功能: - 新增 claude-to-openai channel 类型,支持 Claude 协议请求转换为 OpenAI 协议 - 支持流式和非流式响应转换 - 完整的 SSE 事件转换 (message_start, content_block_*, message_delta, message_stop) - 支持工具调用 (tool_use) 转换 优化: - 统一在上层完成模型名映射,移除各 provider 重复逻辑 - 添加通配符匹配支持 (如 *claude*, claude-*) - 简化代码,移除冗余变量 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
92 lines
1.7 KiB
TypeScript
92 lines
1.7 KiB
TypeScript
type Variables = {
|
|
lang: string | undefined | null
|
|
}
|
|
|
|
type CloudflareBindings = {
|
|
DB: D1Database;
|
|
ASSETS: Fetcher;
|
|
ADMIN_TOKEN: string;
|
|
}
|
|
|
|
type HonoCustomType = {
|
|
"Bindings": CloudflareBindings;
|
|
"Variables": Variables;
|
|
}
|
|
|
|
// 数据库表行的基础结构
|
|
type BaseDbRow = {
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
|
|
// channel_config 表的行结构
|
|
type ChannelConfigRow = BaseDbRow & {
|
|
key: string;
|
|
value: string; // JSON 字符串,解析后为 ChannelConfig 类型
|
|
}
|
|
|
|
// api_token 表的行结构
|
|
type ApiTokenRow = BaseDbRow & {
|
|
key: string;
|
|
value: string; // JSON 字符串,解析后为 ApiTokenData 类型
|
|
usage: number;
|
|
}
|
|
|
|
type ChannelType =
|
|
| "azure-openai"
|
|
| "openai"
|
|
| "claude"
|
|
| "claude-to-openai"
|
|
| "openai-responses"
|
|
| "azure-openai-responses"
|
|
| undefined
|
|
| null;
|
|
|
|
type ChannelConfig = {
|
|
name: string;
|
|
type: ChannelType;
|
|
endpoint: string;
|
|
api_key: string;
|
|
api_version?: string;
|
|
deployment_mapper: Record<string, string>;
|
|
model_pricing?: Record<string, ModelPricing>;
|
|
}
|
|
|
|
type ChannelConfigMap = {
|
|
[key: string]: ChannelConfig;
|
|
}
|
|
|
|
type OpenAIResponse = {
|
|
usage?: Usage
|
|
}
|
|
|
|
type Usage = {
|
|
prompt_tokens?: number,
|
|
completion_tokens?: number,
|
|
total_tokens?: number,
|
|
cached_tokens?: number,
|
|
}
|
|
|
|
type AwslKeyPayload = {
|
|
channel_key: string;
|
|
multipler: number | undefined | null;
|
|
}
|
|
|
|
type CommonResponse = {
|
|
success?: boolean;
|
|
message?: string;
|
|
data?: any;
|
|
}
|
|
|
|
type ModelPricing = {
|
|
input: number;
|
|
output: number;
|
|
cache?: number;
|
|
}
|
|
|
|
type ApiTokenData = {
|
|
name: string;
|
|
channel_keys: string[];
|
|
total_quota: number;
|
|
}
|