multi

package
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 27, 2026 License: GPL-3.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SetupMultiRoutes

func SetupMultiRoutes(
	rootRouter fiber.Router,
	portalService portal.Service,
	userAgent string,
	logger *slog.Logger,
	apiToken string,
)

SetupMultiRoutes 注册 multi 兼容路由。

Types

type Handler

type Handler struct {
	// contains filtered or unexported fields
}

Handler 统一的多供应商处理器,处理 OpenAI 和 Anthropic 兼容 API 的请求

该结构体封装了处理多供应商 AI API 请求所需的服务和日志记录器

func New

func New(portalService portal.Service, userAgent string, logger *slog.Logger) *Handler

New 创建并初始化一个新的多供应商处理器实例

该函数使用依赖注入的方式创建 Handler 实例

参数:

  • portalService: AI 网关服务实例,用于处理 AI 相关请求
  • userAgent: User-Agent 配置,空则透传客户端 UA,"default" 使用 fasthttp 默认值,其他字符串则复写
  • logger: 日志记录器实例

返回值:

  • *Handler: 初始化后的多供应商处理器实例

func (*Handler) ChatCompletions

func (h *Handler) ChatCompletions(c *fiber.Ctx) error

ChatCompletions 处理 OpenAI 聊天完成请求,路径为 POST /multi/v1/chat/completions。 解析请求体并转换为统一格式,根据 stream 参数决定返回流式或非流式响应。 成功时返回 200 状态码及聊天完成响应,失败时返回 400/401/500 状态码。

@Summary 聊天完成 @Description 创建聊天完成响应,支持流式和非流式两种模式 @Tags OpenAI @Accept json @Produce json @Param request body openaiChatTypes.Request true "聊天完成请求" @Success 200 {object} openaiChatTypes.Response @Failure 400 {object} fiber.Map @Failure 401 {object} fiber.Map @Failure 500 {object} fiber.Map @Router /multi/v1/chat/completions [post] @Security ApiKeyAuth

func (*Handler) GeminiGenerateContent

func (h *Handler) GeminiGenerateContent(c *fiber.Ctx) error

GeminiGenerateContent 处理 Gemini generateContent 请求,路径为 POST /multi/v1beta/models/{model}:generateContent。 解析请求体并从参数或查询字符串中获取模型名称,转换为统一格式后调用 ChatCompletion 服务。 成功时返回 200 状态码及生成内容响应,失败时返回 400/500 状态码。

@Summary 生成内容 @Description 调用 Gemini 模型生成内容,支持通过路径参数或查询参数指定模型 @Tags Gemini @Accept json @Produce json @Param model path string true "模型名称" @Param request body geminiTypes.Request true "生成内容请求" @Success 200 {object} geminiTypes.Response @Failure 400 {object} fiber.Map @Failure 401 {object} fiber.Map @Failure 500 {object} fiber.Map @Router /multi/v1beta/models/{model}:generateContent [post] @Security ApiKeyAuth

func (*Handler) GeminiStreamGenerateContent

func (h *Handler) GeminiStreamGenerateContent(c *fiber.Ctx) error

GeminiStreamGenerateContent 处理 Gemini streamGenerateContent 请求,路径为 POST /multi/v1beta/models/{model}:streamGenerateContent。 解析请求体并从参数或查询字符串中获取模型名称,转换为统一格式后返回流式响应。 成功时返回流式 SSE 响应,失败时返回 400/500 状态码。

@Summary 流式生成内容 @Description 调用 Gemini 模型流式生成内容,支持通过路径参数或查询参数指定模型 @Tags Gemini @Accept json @Produce text/event-stream @Param model path string true "模型名称" @Param request body geminiTypes.Request true "生成内容请求" @Success 200 {object} geminiTypes.Candidate @Failure 400 {object} fiber.Map @Failure 401 {object} fiber.Map @Failure 500 {object} fiber.Map @Router /multi/v1beta/models/{model}:streamGenerateContent [post] @Security ApiKeyAuth

func (*Handler) Messages

func (h *Handler) Messages(c *fiber.Ctx) error

Messages 处理 Anthropic 消息完成请求,路径为 POST /multi/v1/messages。 解析请求体并转换为统一格式,根据 stream 参数决定返回流式或非流式响应。 成功时返回 200 状态码及消息响应,失败时返回 400/401/500 状态码。

@Summary 消息完成 @Description 创建消息完成响应,支持流式和非流式两种模式 @Tags Anthropic @Accept json @Produce json @Param request body anthropicTypes.Request true "消息请求" @Success 200 {object} anthropicTypes.MessageResponse @Failure 400 {object} fiber.Map @Failure 401 {object} fiber.Map @Failure 500 {object} fiber.Map @Router /multi/v1/messages [post] @Security ApiKeyAuth

func (*Handler) Responses

func (h *Handler) Responses(c *fiber.Ctx) error

Responses 处理 OpenAI Responses API 请求,路径为 POST /multi/v1/responses。 解析请求体并转换为统一格式,根据 stream 参数决定返回流式或非流式响应。 成功时返回 200 状态码及 Responses 响应,失败时返回 400/401/500 状态码。

@Summary Responses @Description 创建 Responses API 响应,支持流式和非流式两种模式 @Tags OpenAI @Accept json @Produce json @Param request body openaiResponsesTypes.Request true "Responses 请求" @Success 200 {object} openaiResponsesTypes.Response @Failure 400 {object} fiber.Map @Failure 401 {object} fiber.Map @Failure 500 {object} fiber.Map @Router /multi/v1/responses [post] @Security ApiKeyAuth

func (*Handler) SelectGeminiModels

func (h *Handler) SelectGeminiModels() fiber.Handler

SelectGeminiModels 处理获取 Gemini 模型列表请求,路径为 GET /multi/v1beta/models。 返回 Gemini API 格式的模型列表,包含所有可用模型的名称信息。 成功时返回 200 状态码及模型列表,失败时返回 500 状态码。

@Summary 获取 Gemini 模型列表 @Description 返回 Gemini v1beta API 格式的模型列表 @Tags Models @Accept json @Produce json @Success 200 {object} multiTypes.GeminiModelList @Failure 500 {object} fiber.Map @Router /multi/v1beta/models [get] @Security ApiKeyAuth

func (*Handler) SelectModels

func (h *Handler) SelectModels() fiber.Handler

SelectModels 处理获取模型列表请求,路径为 GET /multi/v1/models。 根据请求头中的 provider 字段返回对应格式的模型列表(OpenAI/Anthropic/Gemini)。 成功时返回 200 状态码及模型列表,失败时返回 500 状态码。

@Summary 获取模型列表 @Description 根据请求头中的 provider 字段返回对应格式的模型列表 @Tags Models @Accept json @Produce json @Success 200 {object} multiTypes.OpenAIModelList @Success 200 {object} multiTypes.AnthropicModelList @Success 200 {object} multiTypes.GeminiModelList @Failure 500 {object} fiber.Map @Router /multi/v1/models [get] @Security ApiKeyAuth

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL