AI网关新增TTS/重排/审核端点,xAI工具扩展,swagger修缺
- 新端点 /ai/v1/audio/speech(xai.grok-tts)、/rerank(cohere.rerank-v4)、/moderations(OCI Guardrails) - Responses 放行 code_interpreter 与远程 mcp 工具,web_search/x_search 解除仅非流式限制 - 模型能力映射扩展:TEXT_RERANK→RERANK、TEXT_TO_AUDIO→TTS - AI 网关文档独立 docs/ai-gateway.md,字段兼容矩阵只列支持项;README 精简引用 - swagger 修缺:135 处响应注解具体化,RawMessage/联合类型统一渲染 AnyJSON,overrides 迁至 docs/.swaggo - CHANGELOG 0.4.0,版本段不再记日期;DASH_VERSION v0.4.0
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
package aiwire
|
||||
|
||||
// AnyJSON 仅供 swagger 文档渲染:经 .swaggo 全局替换,代表任意 JSON 值
|
||||
// (json.RawMessage 与 string/数组联合类型),运行时代码不使用。
|
||||
type AnyJSON struct{}
|
||||
@@ -0,0 +1,45 @@
|
||||
package aiwire
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
// ModerationsRequest 是 /ai/v1/moderations 请求体;input 兼容 OpenAI 的
|
||||
// string 与 []string 两种形态,model 字段接受但忽略(上游为服务级 API)。
|
||||
type ModerationsRequest struct {
|
||||
Model string `json:"model,omitempty"`
|
||||
Input json.RawMessage `json:"input"`
|
||||
}
|
||||
|
||||
// ModerationPii 是一处 PII 命中(OCI 扩展,OpenAI 协议无对应物)。
|
||||
type ModerationPii struct {
|
||||
Text string `json:"text"`
|
||||
Label string `json:"label"`
|
||||
Score float64 `json:"score"`
|
||||
Offset int `json:"offset"`
|
||||
Length int `json:"length"`
|
||||
}
|
||||
|
||||
// ModerationResult 是一条输入的审核结果:categories / category_scores 用
|
||||
// OCI 原生维度(overall / blocklist / prompt_injection),pii 为扩展字段。
|
||||
type ModerationResult struct {
|
||||
Flagged bool `json:"flagged"`
|
||||
Categories map[string]bool `json:"categories"`
|
||||
CategoryScores map[string]float64 `json:"category_scores"`
|
||||
Pii []ModerationPii `json:"pii,omitempty"`
|
||||
}
|
||||
|
||||
// ModerationsResponse 是 /ai/v1/moderations 响应体(OpenAI moderations 外壳)。
|
||||
type ModerationsResponse struct {
|
||||
ID string `json:"id"`
|
||||
Model string `json:"model"`
|
||||
Results []ModerationResult `json:"results"`
|
||||
}
|
||||
|
||||
// SpeechRequest 描述 /ai/v1/audio/speech 请求体的已知字段(文档用途)。
|
||||
// 直通端点实际按原样透传,未列字段与 xAI 专属参数(如 output_format)同样保留。
|
||||
type SpeechRequest struct {
|
||||
Model string `json:"model"`
|
||||
Input string `json:"input"`
|
||||
Voice string `json:"voice,omitempty"`
|
||||
ResponseFormat string `json:"response_format,omitempty"`
|
||||
Language string `json:"language,omitempty"`
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package aiwire
|
||||
|
||||
// RerankRequest 是 /ai/v1/rerank 请求体(Jina / Cohere 通行风格)。
|
||||
type RerankRequest struct {
|
||||
Model string `json:"model"`
|
||||
Query string `json:"query"`
|
||||
Documents []string `json:"documents"`
|
||||
TopN *int `json:"top_n,omitempty"`
|
||||
ReturnDocuments *bool `json:"return_documents,omitempty"`
|
||||
}
|
||||
|
||||
// RerankDocument 包装原文,仅在 return_documents 时返回。
|
||||
type RerankDocument struct {
|
||||
Text string `json:"text"`
|
||||
}
|
||||
|
||||
// RerankResult 是一条重排结果:index 指向请求 documents 下标。
|
||||
type RerankResult struct {
|
||||
Index int `json:"index"`
|
||||
RelevanceScore float64 `json:"relevance_score"`
|
||||
Document *RerankDocument `json:"document,omitempty"`
|
||||
}
|
||||
|
||||
// RerankResponse 是 /ai/v1/rerank 响应体。
|
||||
type RerankResponse struct {
|
||||
Model string `json:"model"`
|
||||
Results []RerankResult `json:"results"`
|
||||
}
|
||||
@@ -184,3 +184,16 @@ type RespError struct {
|
||||
type RespIncomplete struct {
|
||||
Reason string `json:"reason"`
|
||||
}
|
||||
|
||||
// RespResponse 描述 /ai/v1/responses 非流式响应的常用顶层字段(文档用途)。
|
||||
// 直通端点原样返回上游 JSON,未列字段(reasoning、incomplete_details 等)同样保留。
|
||||
type RespResponse struct {
|
||||
ID string `json:"id"`
|
||||
Object string `json:"object"`
|
||||
CreatedAt int64 `json:"created_at"`
|
||||
Status string `json:"status"`
|
||||
Model string `json:"model"`
|
||||
Output json.RawMessage `json:"output"`
|
||||
Usage *RespUsage `json:"usage,omitempty"`
|
||||
Error *RespError `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user