feat: 算力引擎 Go 后端核心(new-api)

- 统一 OpenAI 兼容 /v1 中继 + 渠道/额度/令牌/流水
- 各领域包:relay 模型网关、model 数据层、controller 管理 API
This commit is contained in:
2026-08-23 22:38:46 +08:00
commit 28e53d90fc
836 changed files with 165403 additions and 0 deletions
@@ -0,0 +1,66 @@
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "The answer is 42."
},
{
"functionCall": {
"name": "get_weather",
"args": {
"city": "Paris"
}
}
}
]
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": []
}
],
"usageMetadata": {
"promptTokenCount": 15,
"toolUsePromptTokenCount": 0,
"candidatesTokenCount": 5,
"totalTokenCount": 20,
"thoughtsTokenCount": 0,
"cachedContentTokenCount": 0,
"promptTokensDetails": null,
"toolUsePromptTokensDetails": null,
"candidatesTokensDetails": null,
"billing_usage": {
"source": "oai_chat",
"semantic": "openai",
"openai_usage": {
"prompt_tokens": 15,
"completion_tokens": 5,
"total_tokens": 20,
"usage_semantic": "openai",
"usage_source": "anthropic",
"prompt_tokens_details": {
"cached_tokens": 3,
"cached_creation_tokens": 2,
"cache_write_tokens": 2,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 0
},
"input_tokens": 15,
"output_tokens": 0,
"input_tokens_details": null,
"claude_cache_creation_5_m_tokens": 2,
"claude_cache_creation_1_h_tokens": 0
}
}
}
}
@@ -0,0 +1,64 @@
{
"id": "msg_fixed",
"model": "claude-test",
"object": "chat.completion",
"created": 0,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The answer is 42.",
"tool_calls": [
{
"id": "toolu_abc",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\":\"Paris\"}"
}
}
]
},
"finish_reason": "tool_calls"
}
],
"usage": {
"prompt_tokens": 15,
"completion_tokens": 5,
"total_tokens": 20,
"usage_semantic": "openai",
"usage_source": "anthropic",
"billing_usage": {
"source": "claude_messages",
"semantic": "anthropic",
"claude_usage": {
"input_tokens": 10,
"cache_creation_input_tokens": 2,
"cache_read_input_tokens": 3,
"output_tokens": 5,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
}
},
"prompt_tokens_details": {
"cached_tokens": 3,
"cached_creation_tokens": 2,
"cache_write_tokens": 2,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 0
},
"input_tokens": 15,
"output_tokens": 0,
"input_tokens_details": null,
"claude_cache_creation_5_m_tokens": 2,
"claude_cache_creation_1_h_tokens": 0
}
}
@@ -0,0 +1,92 @@
{
"id": "msg_fixed",
"object": "response",
"created_at": 0,
"status": "completed",
"instructions": null,
"max_output_tokens": 0,
"model": "claude-test",
"output": [
{
"type": "message",
"id": "msg_fixed_msg_0",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "The answer is 42.",
"annotations": []
}
],
"quality": "",
"size": ""
},
{
"type": "function_call",
"id": "toolu_abc",
"status": "completed",
"role": "",
"content": null,
"quality": "",
"size": "",
"call_id": "toolu_abc",
"name": "get_weather",
"arguments": "{\"city\":\"Paris\"}"
}
],
"parallel_tool_calls": false,
"previous_response_id": null,
"reasoning": null,
"store": false,
"temperature": 0,
"tool_choice": null,
"tools": null,
"top_p": 0,
"truncation": null,
"usage": {
"prompt_tokens": 15,
"completion_tokens": 5,
"total_tokens": 20,
"usage_semantic": "openai",
"usage_source": "anthropic",
"billing_usage": {
"source": "claude_messages",
"semantic": "anthropic",
"claude_usage": {
"input_tokens": 10,
"cache_creation_input_tokens": 2,
"cache_read_input_tokens": 3,
"output_tokens": 5,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
}
},
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 0
},
"input_tokens": 15,
"output_tokens": 5,
"input_tokens_details": {
"cached_tokens": 3,
"cached_creation_tokens": 2,
"cache_write_tokens": 2,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"claude_cache_creation_5_m_tokens": 2,
"claude_cache_creation_1_h_tokens": 0
},
"user": null,
"metadata": null
}
@@ -0,0 +1,55 @@
{
"id": "chatcmpl-<uuid>",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "The answer is 42."
},
{
"type": "tool_use",
"id": "call_<uuid>",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
],
"stop_reason": "tool_use",
"model": "upstream-model",
"usage": {
"input_tokens": 10,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"output_tokens": 7,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0,
"billing_usage": {
"source": "oai_chat",
"semantic": "openai",
"openai_usage": {
"prompt_tokens": 10,
"completion_tokens": 7,
"total_tokens": 15,
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 10,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 2
},
"input_tokens": 0,
"output_tokens": 0,
"input_tokens_details": null,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
}
}
}
}
@@ -0,0 +1,63 @@
{
"id": "chatcmpl-<uuid>",
"model": "upstream-model",
"object": "chat.completion",
"created": 0,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The answer is 42.",
"tool_calls": [
{
"id": "call_<uuid>",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\":\"Paris\"}"
}
}
]
},
"finish_reason": "tool_calls"
}
],
"usage": {
"prompt_tokens": 10,
"completion_tokens": 7,
"total_tokens": 15,
"billing_usage": {
"source": "gemini_chat",
"semantic": "gemini",
"gemini_usage_metadata": {
"promptTokenCount": 10,
"toolUsePromptTokenCount": 0,
"candidatesTokenCount": 5,
"totalTokenCount": 15,
"thoughtsTokenCount": 2,
"cachedContentTokenCount": 0,
"promptTokensDetails": [],
"toolUsePromptTokensDetails": [],
"candidatesTokensDetails": []
}
},
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 10,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 2
},
"input_tokens": 0,
"output_tokens": 0,
"input_tokens_details": null,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
}
}
@@ -0,0 +1,91 @@
{
"id": "chatcmpl-<uuid>",
"object": "response",
"created_at": 0,
"status": "completed",
"instructions": null,
"max_output_tokens": 0,
"model": "upstream-model",
"output": [
{
"type": "message",
"id": "chatcmpl-<uuid>_msg_0",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "The answer is 42.",
"annotations": []
}
],
"quality": "",
"size": ""
},
{
"type": "function_call",
"id": "call_<uuid>",
"status": "completed",
"role": "",
"content": null,
"quality": "",
"size": "",
"call_id": "call_<uuid>",
"name": "get_weather",
"arguments": "{\"city\":\"Paris\"}"
}
],
"parallel_tool_calls": false,
"previous_response_id": null,
"reasoning": null,
"store": false,
"temperature": 0,
"tool_choice": null,
"tools": null,
"top_p": 0,
"truncation": null,
"usage": {
"prompt_tokens": 10,
"completion_tokens": 7,
"total_tokens": 15,
"billing_usage": {
"source": "gemini_chat",
"semantic": "gemini",
"gemini_usage_metadata": {
"promptTokenCount": 10,
"toolUsePromptTokenCount": 0,
"candidatesTokenCount": 5,
"totalTokenCount": 15,
"thoughtsTokenCount": 2,
"cachedContentTokenCount": 0,
"promptTokensDetails": [],
"toolUsePromptTokensDetails": [],
"candidatesTokensDetails": []
}
},
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 2
},
"input_tokens": 10,
"output_tokens": 7,
"input_tokens_details": {
"cached_tokens": 0,
"text_tokens": 10,
"audio_tokens": 0,
"image_tokens": 0
},
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
},
"user": null,
"metadata": null
}
@@ -0,0 +1,55 @@
{
"id": "resp_fixed",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "The answer is 42."
},
{
"type": "tool_use",
"id": "call_abc",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
],
"stop_reason": "tool_use",
"model": "gpt-test",
"usage": {
"input_tokens": 10,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"output_tokens": 5,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0,
"billing_usage": {
"source": "oai_responses",
"semantic": "openai",
"openai_usage": {
"prompt_tokens": 0,
"completion_tokens": 0,
"total_tokens": 15,
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 0
},
"input_tokens": 10,
"output_tokens": 5,
"input_tokens_details": null,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
}
}
}
}
@@ -0,0 +1,62 @@
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "The answer is 42."
},
{
"functionCall": {
"name": "get_weather",
"args": {
"city": "Paris"
}
}
}
]
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": []
}
],
"usageMetadata": {
"promptTokenCount": 10,
"toolUsePromptTokenCount": 0,
"candidatesTokenCount": 5,
"totalTokenCount": 15,
"thoughtsTokenCount": 0,
"cachedContentTokenCount": 0,
"promptTokensDetails": null,
"toolUsePromptTokensDetails": null,
"candidatesTokensDetails": null,
"billing_usage": {
"source": "oai_responses",
"semantic": "openai",
"openai_usage": {
"prompt_tokens": 0,
"completion_tokens": 0,
"total_tokens": 15,
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 0
},
"input_tokens": 10,
"output_tokens": 5,
"input_tokens_details": null,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
}
}
}
}
@@ -0,0 +1,74 @@
{
"id": "resp_fixed",
"model": "gpt-test",
"object": "chat.completion",
"created": 0,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The answer is 42.",
"tool_calls": [
{
"id": "call_abc",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\":\"Paris\"}"
}
}
]
},
"finish_reason": "tool_calls"
}
],
"usage": {
"prompt_tokens": 10,
"completion_tokens": 5,
"total_tokens": 15,
"billing_usage": {
"source": "oai_responses",
"semantic": "openai",
"openai_usage": {
"prompt_tokens": 0,
"completion_tokens": 0,
"total_tokens": 15,
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 0
},
"input_tokens": 10,
"output_tokens": 5,
"input_tokens_details": null,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
}
},
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 0
},
"input_tokens": 10,
"output_tokens": 5,
"input_tokens_details": null,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
}
}
@@ -0,0 +1,55 @@
{
"id": "chatcmpl-fixed",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "The answer is 42."
},
{
"type": "tool_use",
"id": "call_abc",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
],
"stop_reason": "tool_use",
"model": "gpt-test",
"usage": {
"input_tokens": 10,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 3,
"output_tokens": 5,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0,
"billing_usage": {
"source": "oai_chat",
"semantic": "openai",
"openai_usage": {
"prompt_tokens": 10,
"completion_tokens": 5,
"total_tokens": 15,
"prompt_tokens_details": {
"cached_tokens": 3,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 2
},
"input_tokens": 0,
"output_tokens": 0,
"input_tokens_details": null,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
}
}
}
}
@@ -0,0 +1,62 @@
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "The answer is 42."
},
{
"functionCall": {
"name": "get_weather",
"args": {
"city": "Paris"
}
}
}
]
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": []
}
],
"usageMetadata": {
"promptTokenCount": 10,
"toolUsePromptTokenCount": 0,
"candidatesTokenCount": 5,
"totalTokenCount": 15,
"thoughtsTokenCount": 0,
"cachedContentTokenCount": 0,
"promptTokensDetails": null,
"toolUsePromptTokensDetails": null,
"candidatesTokensDetails": null,
"billing_usage": {
"source": "oai_chat",
"semantic": "openai",
"openai_usage": {
"prompt_tokens": 10,
"completion_tokens": 5,
"total_tokens": 15,
"prompt_tokens_details": {
"cached_tokens": 3,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 2
},
"input_tokens": 0,
"output_tokens": 0,
"input_tokens_details": null,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
}
}
}
}
@@ -0,0 +1,117 @@
{
"id": "chatcmpl-fixed",
"object": "response",
"created_at": 0,
"status": "completed",
"instructions": null,
"max_output_tokens": 0,
"model": "gpt-test",
"output": [
{
"type": "message",
"id": "chatcmpl-fixed_msg_0",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "The answer is 42.",
"annotations": []
}
],
"quality": "",
"size": ""
},
{
"type": "reasoning",
"id": "chatcmpl-fixed_reasoning_0",
"status": "completed",
"role": "",
"content": [
{
"type": "summary_text",
"text": "Deep thought.",
"annotations": null
}
],
"quality": "",
"size": ""
},
{
"type": "function_call",
"id": "call_abc",
"status": "completed",
"role": "",
"content": null,
"quality": "",
"size": "",
"call_id": "call_abc",
"name": "get_weather",
"arguments": "{\"city\":\"Paris\"}"
}
],
"parallel_tool_calls": false,
"previous_response_id": null,
"reasoning": null,
"store": false,
"temperature": 0,
"tool_choice": null,
"tools": null,
"top_p": 0,
"truncation": null,
"usage": {
"prompt_tokens": 10,
"completion_tokens": 5,
"total_tokens": 15,
"billing_usage": {
"source": "oai_chat",
"semantic": "openai",
"openai_usage": {
"prompt_tokens": 10,
"completion_tokens": 5,
"total_tokens": 15,
"prompt_tokens_details": {
"cached_tokens": 3,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 2
},
"input_tokens": 0,
"output_tokens": 0,
"input_tokens_details": null,
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
}
},
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 2
},
"input_tokens": 10,
"output_tokens": 5,
"input_tokens_details": {
"cached_tokens": 3,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"claude_cache_creation_5_m_tokens": 0,
"claude_cache_creation_1_h_tokens": 0
},
"user": null,
"metadata": null
}