mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 17:30:23 +08:00
migrate ai format conversion to responses adapters
This commit is contained in:
@@ -453,11 +453,11 @@ export const MOCK_PROVIDERS: ProviderWithEndpointsSummary[] = [
|
||||
active_models: 7,
|
||||
avg_health_score: 0.91,
|
||||
unhealthy_endpoints: 0,
|
||||
api_formats: ['CLAUDE_CLI', 'GEMINI_CLI', 'OPENAI_CLI'],
|
||||
api_formats: ['CLAUDE_CLI', 'GEMINI_CLI', 'OPENAI_RESPONSES'],
|
||||
endpoint_health_details: [
|
||||
{ api_format: 'CLAUDE_CLI', health_score: 0.73, is_active: true, active_keys: 1 },
|
||||
{ api_format: 'GEMINI_CLI', health_score: 1.0, is_active: true, active_keys: 1 },
|
||||
{ api_format: 'OPENAI_CLI', health_score: 1.0, is_active: true, active_keys: 1 }
|
||||
{ api_format: 'OPENAI_RESPONSES', health_score: 1.0, is_active: true, active_keys: 1 }
|
||||
],
|
||||
created_at: '2024-12-09T14:10:36.446217+08:00',
|
||||
updated_at: new Date().toISOString()
|
||||
@@ -504,10 +504,10 @@ export const MOCK_PROVIDERS: ProviderWithEndpointsSummary[] = [
|
||||
active_models: 5,
|
||||
avg_health_score: 1.0,
|
||||
unhealthy_endpoints: 0,
|
||||
api_formats: ['claude:cli', 'openai:cli'],
|
||||
api_formats: ['claude:cli', 'openai:responses'],
|
||||
endpoint_health_details: [
|
||||
{ api_format: 'claude:cli', health_score: 1.0, is_active: true, active_keys: 1 },
|
||||
{ api_format: 'openai:cli', health_score: 1.0, is_active: true, active_keys: 1 }
|
||||
{ api_format: 'openai:responses', health_score: 1.0, is_active: true, active_keys: 1 }
|
||||
],
|
||||
created_at: '2024-12-07T22:56:46.361092+08:00',
|
||||
updated_at: new Date().toISOString()
|
||||
@@ -529,12 +529,12 @@ export const MOCK_PROVIDERS: ProviderWithEndpointsSummary[] = [
|
||||
active_models: 7,
|
||||
avg_health_score: 1.0,
|
||||
unhealthy_endpoints: 0,
|
||||
api_formats: ['claude:cli', 'gemini:chat', 'gemini:cli', 'openai:cli'],
|
||||
api_formats: ['claude:cli', 'gemini:chat', 'gemini:cli', 'openai:responses'],
|
||||
endpoint_health_details: [
|
||||
{ api_format: 'claude:cli', health_score: 1.0, is_active: true, active_keys: 1 },
|
||||
{ api_format: 'gemini:chat', health_score: 1.0, is_active: true, active_keys: 1 },
|
||||
{ api_format: 'gemini:cli', health_score: 1.0, is_active: true, active_keys: 1 },
|
||||
{ api_format: 'openai:cli', health_score: 1.0, is_active: true, active_keys: 1 }
|
||||
{ api_format: 'openai:responses', health_score: 1.0, is_active: true, active_keys: 1 }
|
||||
],
|
||||
created_at: '2024-12-07T15:16:55.807595+08:00',
|
||||
updated_at: new Date().toISOString()
|
||||
@@ -556,14 +556,14 @@ export const MOCK_PROVIDERS: ProviderWithEndpointsSummary[] = [
|
||||
active_models: 8,
|
||||
avg_health_score: 0.863,
|
||||
unhealthy_endpoints: 1,
|
||||
api_formats: ['claude:chat', 'claude:cli', 'gemini:chat', 'gemini:cli', 'openai:chat', 'openai:cli'],
|
||||
api_formats: ['claude:chat', 'claude:cli', 'gemini:chat', 'gemini:cli', 'openai:chat', 'openai:responses'],
|
||||
endpoint_health_details: [
|
||||
{ api_format: 'claude:chat', health_score: 1.0, is_active: true, active_keys: 2 },
|
||||
{ api_format: 'claude:cli', health_score: 0.48, is_active: true, active_keys: 2 },
|
||||
{ api_format: 'gemini:chat', health_score: 1.0, is_active: true, active_keys: 2 },
|
||||
{ api_format: 'gemini:cli', health_score: 0.85, is_active: true, active_keys: 2 },
|
||||
{ api_format: 'openai:chat', health_score: 0.85, is_active: true, active_keys: 2 },
|
||||
{ api_format: 'openai:cli', health_score: 1.0, is_active: true, active_keys: 1 }
|
||||
{ api_format: 'openai:responses', health_score: 1.0, is_active: true, active_keys: 1 }
|
||||
],
|
||||
created_at: '2024-12-07T22:56:09.712806+08:00',
|
||||
updated_at: new Date().toISOString()
|
||||
@@ -881,7 +881,8 @@ export const MOCK_API_FORMATS = {
|
||||
{ value: 'claude:chat', label: 'Claude Chat', default_path: '/v1/messages', aliases: [] },
|
||||
{ value: 'claude:cli', label: 'Claude CLI', default_path: '/v1/messages', aliases: [] },
|
||||
{ value: 'openai:chat', label: 'OpenAI Chat', default_path: '/v1/chat/completions', aliases: [] },
|
||||
{ value: 'openai:cli', label: 'OpenAI CLI', default_path: '/v1/responses', aliases: [] },
|
||||
{ value: 'openai:responses', label: 'OpenAI Responses', default_path: '/v1/responses', aliases: ['openai:cli'] },
|
||||
{ value: 'openai:responses:compact', label: 'OpenAI Responses Compact', default_path: '/v1/responses/compact', aliases: ['openai:compact'] },
|
||||
{ value: 'openai:image', label: 'OpenAI Image', default_path: '/v1/images/generations', aliases: [] },
|
||||
{ value: 'openai:video', label: 'OpenAI Video', default_path: '/v1/videos', aliases: [] },
|
||||
{ value: 'gemini:chat', label: 'Gemini Chat', default_path: '/v1beta/models/{model}:{action}', aliases: [] },
|
||||
|
||||
@@ -141,7 +141,7 @@ function generateHealthEvents(
|
||||
// Mock 端点健康数据
|
||||
// 注意:success_rate 使用 0-1 之间的小数,前端会乘以 100 显示为百分比
|
||||
// 事件的成功/失败/跳过比例必须与 success_rate 保持一致
|
||||
// 覆盖所有 API 格式:claude, claude_cli, openai, openai_cli, gemini, gemini_cli
|
||||
// 覆盖所有 API 格式:claude, claude_cli, openai, openai_responses, gemini, gemini_cli
|
||||
const MOCK_ENDPOINT_STATUS = {
|
||||
generated_at: new Date().toISOString(),
|
||||
formats: [
|
||||
@@ -216,7 +216,7 @@ const MOCK_ENDPOINT_STATUS = {
|
||||
events: generateHealthEvents(60, 0.974, 0.022, 0.004, 700, 400)
|
||||
},
|
||||
{
|
||||
api_format: 'openai:cli',
|
||||
api_format: 'openai:responses',
|
||||
api_path: '/v1/responses',
|
||||
total_attempts: 2340,
|
||||
success_count: 2200,
|
||||
@@ -324,7 +324,7 @@ function generateMockUsageRecords(count: number = 100) {
|
||||
{ id: 'demo-user-uuid-0004', username: 'Bob Zhang', email: 'bob@demo.aether.ai' }
|
||||
]
|
||||
|
||||
const apiFormats = ['claude:chat', 'claude:cli', 'openai:chat', 'openai:cli', 'gemini:chat', 'gemini:cli']
|
||||
const apiFormats = ['claude:chat', 'claude:cli', 'openai:chat', 'openai:responses', 'gemini:chat', 'gemini:cli']
|
||||
const statusOptions: Array<'completed' | 'failed' | 'streaming'> = ['completed', 'completed', 'completed', 'completed', 'failed', 'streaming']
|
||||
|
||||
for (let i = 0; i < count; i++) {
|
||||
@@ -337,7 +337,7 @@ function generateMockUsageRecords(count: number = 100) {
|
||||
if (model.provider === 'anthropic') {
|
||||
apiFormat = Math.random() > 0.3 ? 'claude:cli' : 'claude:chat'
|
||||
} else if (model.provider === 'openai') {
|
||||
apiFormat = Math.random() > 0.3 ? 'openai:cli' : 'openai:chat'
|
||||
apiFormat = Math.random() > 0.3 ? 'openai:responses' : 'openai:chat'
|
||||
} else {
|
||||
apiFormat = Math.random() > 0.3 ? 'gemini:cli' : 'gemini:chat'
|
||||
}
|
||||
@@ -445,7 +445,7 @@ function getMockEndpointExtras(apiFormat: string) {
|
||||
accept_formats: ['openai:chat', 'claude:chat']
|
||||
}
|
||||
extras.config = { upstream_stream_policy: 'force_stream' }
|
||||
} else if (normalizedFormat === 'openai:cli') {
|
||||
} else if (normalizedFormat === 'openai:responses' || normalizedFormat === 'openai:cli') {
|
||||
extras.config = { upstream_stream_policy: 'force_non_stream' }
|
||||
} else if (normalizedFormat === 'gemini:chat') {
|
||||
extras.custom_path = '/v1beta/models/gemini-3-pro-preview:generateContent'
|
||||
|
||||
Reference in New Issue
Block a user