Documentation
¶
Index ¶
- Constants
- func ApplyGeminiThinkingConfig(geminiRequest *dto.GeminiChatRequest, info *relaycommon.RelayInfo, ...)
- func BuildMessageDeltaPatchUsage(claudeResponse *dto.ClaudeResponse, claudeInfo *ClaudeResponseInfo) *dto.ClaudeUsage
- func ChatCompletionsRequestToResponsesRequest(req *dto.GeneralOpenAIRequest) (*dto.OpenAIResponsesRequest, error)
- func ChatCompletionsResponseToResponsesResponse(resp *dto.OpenAITextResponse, id string) (*dto.OpenAIResponsesResponse, *dto.Usage, error)
- func ClaudeMessagesRequestToOpenAIChat(claudeRequest dto.ClaudeRequest, info *relaycommon.RelayInfo) (*dto.GeneralOpenAIRequest, error)
- func ExtractOutputTextFromResponses(resp *dto.OpenAIResponsesResponse) string
- func ExtractReasoningTextFromResponses(resp *dto.OpenAIResponsesResponse) string
- func FinalizeResponsesToChatStream(state *ResponsesToChatStreamState) []dto.ChatCompletionsStreamResponse
- func FormatClaudeResponseInfo(claudeResponse *dto.ClaudeResponse, ...) bool
- func GeminiGenerateContentRequestToOpenAIChat(geminiRequest *dto.GeminiChatRequest, info *relaycommon.RelayInfo) (*dto.GeneralOpenAIRequest, error)
- func NormalizeCacheCreationSplit(totalTokens int, tokens5m int, tokens1h int) (int, int)
- func OpenAIChatRequestToClaudeMessages(c *gin.Context, textRequest dto.GeneralOpenAIRequest) (*dto.ClaudeRequest, error)
- func OpenAIChatRequestToGeminiGenerateContent(c *gin.Context, textRequest dto.GeneralOpenAIRequest, ...) (*dto.GeminiChatRequest, error)
- func OpenAIResponsesRequestToClaudeMessages(c *gin.Context, req *dto.OpenAIResponsesRequest) (*dto.ClaudeRequest, error)
- func OpenAIResponsesRequestToGeminiChat(c *gin.Context, req *dto.OpenAIResponsesRequest, info *relaycommon.RelayInfo) (*dto.GeminiChatRequest, error)
- func PatchClaudeMessageDeltaUsageData(data string, usage *dto.ClaudeUsage) string
- func ResponseClaude2OpenAI(claudeResponse *dto.ClaudeResponse) *dto.OpenAITextResponse
- func ResponseGeminiChat2OpenAI(id string, created int64, response *dto.GeminiChatResponse) *dto.OpenAITextResponse
- func ResponseOpenAI2Claude(openAIResponse *dto.OpenAITextResponse, info *relaycommon.RelayInfo) *dto.ClaudeResponse
- func ResponseOpenAI2Gemini(openAIResponse *dto.OpenAITextResponse, info *relaycommon.RelayInfo) *dto.GeminiChatResponse
- func ResponsesFinishReasonFromStatus(resp *dto.OpenAIResponsesResponse) (string, bool)
- func ResponsesRequestToChatCompletionsRequest(req *dto.OpenAIResponsesRequest) (*dto.GeneralOpenAIRequest, error)
- func ResponsesResponseToChatCompletionsResponse(resp *dto.OpenAIResponsesResponse, id string) (*dto.OpenAITextResponse, *dto.Usage, error)
- func ResponsesStatusFromChatFinishReason(finishReason string) (string, *dto.IncompleteDetails)
- func ResponsesStreamEventToChatChunks(event *dto.ResponsesStreamResponse, state *ResponsesToChatStreamState) ([]dto.ChatCompletionsStreamResponse, error)
- func SetMediaResolver(resolver MediaResolver)
- func ShouldChatCompletionsUseResponsesGlobal(channelID int, channelType int, model string) bool
- func ShouldChatCompletionsUseResponsesPolicy(policy model_setting.ChatCompletionsToResponsesPolicy, channelID int, ...) bool
- func StopReasonClaudeToOpenAI(reason string) string
- func StreamResponseClaude2OpenAI(claudeResponse *dto.ClaudeResponse) *dto.ChatCompletionsStreamResponse
- func StreamResponseGeminiChat2OpenAI(geminiResponse *dto.GeminiChatResponse) (*dto.ChatCompletionsStreamResponse, bool)
- func StreamResponseOpenAI2Claude(openAIResponse *dto.ChatCompletionsStreamResponse, info *relaycommon.RelayInfo) []*dto.ClaudeResponse
- func StreamResponseOpenAI2Gemini(openAIResponse *dto.ChatCompletionsStreamResponse, info *relaycommon.RelayInfo) *dto.GeminiChatResponse
- func UsageFromChatUsage(src *dto.Usage) *dto.Usage
- func UsageFromClaudeAPIUsage(usage *dto.ClaudeUsage) *dto.Usage
- func UsageFromClaudeUsage(usage *dto.Usage) *dto.Usage
- func UsageFromGeminiMetadata(metadata *dto.GeminiUsageMetadata, fallbackPromptTokens int) *dto.Usage
- func UsageFromResponsesUsage(src *dto.Usage) *dto.Usage
- type ChatToResponsesStreamEvent
- type ChatToResponsesStreamState
- type ClaudeResponseInfo
- type MediaResolver
- type RequestConverterFunc
- type RequestConverterQuality
- type RequestConverterSpec
- type RequestResult
- func ConvertRequest(c *gin.Context, info *relaycommon.RelayInfo, target types.RelayFormat, ...) (*RequestResult, error)
- func ConvertRequestByID(c *gin.Context, info *relaycommon.RelayInfo, converter string, request any) (*RequestResult, error)
- func ConvertRequestVia(c *gin.Context, info *relaycommon.RelayInfo, request any, ...) (*RequestResult, error)
- type RequestStep
- type ResponseConverterFunc
- type ResponseConverterQuality
- type ResponseConverterSpec
- type ResponseResult
- func ConvertResponse(c *gin.Context, info *relaycommon.RelayInfo, target types.RelayFormat, ...) (*ResponseResult, error)
- func ConvertResponseByID(c *gin.Context, info *relaycommon.RelayInfo, converter string, response any) (*ResponseResult, error)
- func ConvertStreamResponse(c *gin.Context, info *relaycommon.RelayInfo, target types.RelayFormat, ...) (*ResponseResult, error)
- func ConvertStreamResponseChunk(c *gin.Context, info *relaycommon.RelayInfo, state *ResponseStreamState, ...) ([]ResponseResult, error)
- func FinalizeStreamResponse(c *gin.Context, info *relaycommon.RelayInfo, state *ResponseStreamState) ([]ResponseResult, error)
- type ResponseStep
- type ResponseStreamChunkConverterFunc
- type ResponseStreamConverterFunc
- type ResponseStreamFinalizerFunc
- type ResponseStreamOptions
- type ResponseStreamState
- type ResponseStreamStateFactory
- type ResponsesBufferedAccumulator
- type ResponsesToChatStreamState
- type TextConverterQuality
- type TextConverterSpec
- type TextRequestSide
- type TextResponseSide
Constants ¶
View Source
const ( ConverterNone = "none" ConverterClaudeMessagesToOpenAIChat = "anthropic_messages_to_openai_chat_completions" ConverterOpenAIChatToClaudeMessages = "openai_chat_completions_to_anthropic_messages" ConverterOpenAIChatToOpenAIResponses = "openai_chat_completions_to_openai_responses" ConverterOpenAIResponsesToOpenAIChat = "openai_responses_to_openai_chat_completions" ConverterOpenAIResponsesToGemini = "openai_responses_to_gemini_generate_content" ConverterGeminiContentToOpenAIChat = "gemini_generate_content_to_openai_chat_completions" ConverterOpenAIChatToGeminiContent = "openai_chat_completions_to_gemini_generate_content" )
View Source
const ( ResponseConverterOAIChatToOAIResponses = "oai_chat_to_oai_responses_resp" ResponseConverterOAIResponsesToOAIChat = "oai_responses_to_oai_chat_resp" ResponseConverterOAIChatToClaudeMessages = "oai_chat_to_claude_messages_resp" ResponseConverterOAIChatToGeminiChat = "oai_chat_to_gemini_chat_resp" ResponseConverterClaudeMessagesToOAIChat = "claude_messages_to_oai_chat_resp" ResponseConverterGeminiChatToOAIChat = "gemini_chat_to_oai_chat_resp" )
Variables ¶
This section is empty.
Functions ¶
func ApplyGeminiThinkingConfig ¶
func ApplyGeminiThinkingConfig(geminiRequest *dto.GeminiChatRequest, info *relaycommon.RelayInfo, oaiRequest ...dto.GeneralOpenAIRequest)
func BuildMessageDeltaPatchUsage ¶
func BuildMessageDeltaPatchUsage(claudeResponse *dto.ClaudeResponse, claudeInfo *ClaudeResponseInfo) *dto.ClaudeUsage
func ChatCompletionsRequestToResponsesRequest ¶
func ChatCompletionsRequestToResponsesRequest(req *dto.GeneralOpenAIRequest) (*dto.OpenAIResponsesRequest, error)
func ChatCompletionsResponseToResponsesResponse ¶
func ChatCompletionsResponseToResponsesResponse(resp *dto.OpenAITextResponse, id string) (*dto.OpenAIResponsesResponse, *dto.Usage, error)
func ClaudeMessagesRequestToOpenAIChat ¶
func ClaudeMessagesRequestToOpenAIChat(claudeRequest dto.ClaudeRequest, info *relaycommon.RelayInfo) (*dto.GeneralOpenAIRequest, error)
func ExtractOutputTextFromResponses ¶
func ExtractOutputTextFromResponses(resp *dto.OpenAIResponsesResponse) string
func ExtractReasoningTextFromResponses ¶
func ExtractReasoningTextFromResponses(resp *dto.OpenAIResponsesResponse) string
func FinalizeResponsesToChatStream ¶
func FinalizeResponsesToChatStream(state *ResponsesToChatStreamState) []dto.ChatCompletionsStreamResponse
func FormatClaudeResponseInfo ¶
func FormatClaudeResponseInfo(claudeResponse *dto.ClaudeResponse, oaiResponse *dto.ChatCompletionsStreamResponse, claudeInfo *ClaudeResponseInfo) bool
func GeminiGenerateContentRequestToOpenAIChat ¶
func GeminiGenerateContentRequestToOpenAIChat(geminiRequest *dto.GeminiChatRequest, info *relaycommon.RelayInfo) (*dto.GeneralOpenAIRequest, error)
func OpenAIChatRequestToClaudeMessages ¶
func OpenAIChatRequestToClaudeMessages(c *gin.Context, textRequest dto.GeneralOpenAIRequest) (*dto.ClaudeRequest, error)
func OpenAIChatRequestToGeminiGenerateContent ¶
func OpenAIChatRequestToGeminiGenerateContent(c *gin.Context, textRequest dto.GeneralOpenAIRequest, info *relaycommon.RelayInfo) (*dto.GeminiChatRequest, error)
func OpenAIResponsesRequestToClaudeMessages ¶
func OpenAIResponsesRequestToClaudeMessages(c *gin.Context, req *dto.OpenAIResponsesRequest) (*dto.ClaudeRequest, error)
func OpenAIResponsesRequestToGeminiChat ¶
func OpenAIResponsesRequestToGeminiChat(c *gin.Context, req *dto.OpenAIResponsesRequest, info *relaycommon.RelayInfo) (*dto.GeminiChatRequest, error)
func PatchClaudeMessageDeltaUsageData ¶
func PatchClaudeMessageDeltaUsageData(data string, usage *dto.ClaudeUsage) string
func ResponseClaude2OpenAI ¶
func ResponseClaude2OpenAI(claudeResponse *dto.ClaudeResponse) *dto.OpenAITextResponse
func ResponseGeminiChat2OpenAI ¶
func ResponseGeminiChat2OpenAI(id string, created int64, response *dto.GeminiChatResponse) *dto.OpenAITextResponse
func ResponseOpenAI2Claude ¶
func ResponseOpenAI2Claude(openAIResponse *dto.OpenAITextResponse, info *relaycommon.RelayInfo) *dto.ClaudeResponse
func ResponseOpenAI2Gemini ¶
func ResponseOpenAI2Gemini(openAIResponse *dto.OpenAITextResponse, info *relaycommon.RelayInfo) *dto.GeminiChatResponse
func ResponsesFinishReasonFromStatus ¶
func ResponsesFinishReasonFromStatus(resp *dto.OpenAIResponsesResponse) (string, bool)
func ResponsesRequestToChatCompletionsRequest ¶
func ResponsesRequestToChatCompletionsRequest(req *dto.OpenAIResponsesRequest) (*dto.GeneralOpenAIRequest, error)
func ResponsesResponseToChatCompletionsResponse ¶
func ResponsesResponseToChatCompletionsResponse(resp *dto.OpenAIResponsesResponse, id string) (*dto.OpenAITextResponse, *dto.Usage, error)
func ResponsesStatusFromChatFinishReason ¶
func ResponsesStatusFromChatFinishReason(finishReason string) (string, *dto.IncompleteDetails)
func ResponsesStreamEventToChatChunks ¶
func ResponsesStreamEventToChatChunks(event *dto.ResponsesStreamResponse, state *ResponsesToChatStreamState) ([]dto.ChatCompletionsStreamResponse, error)
func SetMediaResolver ¶
func SetMediaResolver(resolver MediaResolver)
func ShouldChatCompletionsUseResponsesPolicy ¶
func ShouldChatCompletionsUseResponsesPolicy(policy model_setting.ChatCompletionsToResponsesPolicy, channelID int, channelType int, model string) bool
func StreamResponseClaude2OpenAI ¶
func StreamResponseClaude2OpenAI(claudeResponse *dto.ClaudeResponse) *dto.ChatCompletionsStreamResponse
func StreamResponseGeminiChat2OpenAI ¶
func StreamResponseGeminiChat2OpenAI(geminiResponse *dto.GeminiChatResponse) (*dto.ChatCompletionsStreamResponse, bool)
func StreamResponseOpenAI2Claude ¶
func StreamResponseOpenAI2Claude(openAIResponse *dto.ChatCompletionsStreamResponse, info *relaycommon.RelayInfo) []*dto.ClaudeResponse
func StreamResponseOpenAI2Gemini ¶
func StreamResponseOpenAI2Gemini(openAIResponse *dto.ChatCompletionsStreamResponse, info *relaycommon.RelayInfo) *dto.GeminiChatResponse
func UsageFromClaudeAPIUsage ¶
func UsageFromClaudeAPIUsage(usage *dto.ClaudeUsage) *dto.Usage
func UsageFromGeminiMetadata ¶
func UsageFromGeminiMetadata(metadata *dto.GeminiUsageMetadata, fallbackPromptTokens int) *dto.Usage
Types ¶
type ChatToResponsesStreamEvent ¶
type ChatToResponsesStreamEvent = oaichat.ChatToResponsesStreamEvent
func ChatCompletionsStreamChunkToResponsesEvents ¶
func ChatCompletionsStreamChunkToResponsesEvents(chunk *dto.ChatCompletionsStreamResponse, state *ChatToResponsesStreamState) ([]ChatToResponsesStreamEvent, error)
func FinalizeChatCompletionsStreamToResponses ¶
func FinalizeChatCompletionsStreamToResponses(state *ChatToResponsesStreamState) []ChatToResponsesStreamEvent
type ChatToResponsesStreamState ¶
type ChatToResponsesStreamState = oaichat.ChatToResponsesStreamState
func NewChatToResponsesStreamState ¶
func NewChatToResponsesStreamState(id string, model string) *ChatToResponsesStreamState
type ClaudeResponseInfo ¶
type ClaudeResponseInfo = claudemessages.ClaudeResponseInfo
type MediaResolver ¶
type MediaResolver = relaymedia.MediaResolver
type RequestConverterFunc ¶
type RequestConverterQuality ¶
type RequestConverterQuality string
const ( RequestConverterQualityGood RequestConverterQuality = "good" RequestConverterQualityFair RequestConverterQuality = "fair" RequestConverterQualityDiscouraged RequestConverterQuality = "discouraged" )
type RequestConverterSpec ¶
type RequestConverterSpec struct {
ID string
From types.RelayFormat
To types.RelayFormat
Quality RequestConverterQuality
Convert RequestConverterFunc
StepConverters []string
}
func LookupRequestConverter ¶
func LookupRequestConverter(converter string) (RequestConverterSpec, bool)
type RequestResult ¶
type RequestResult struct {
Value any
From types.RelayFormat
To types.RelayFormat
Converter string
Quality RequestConverterQuality
Steps []RequestStep
}
func ConvertRequest ¶
func ConvertRequest(c *gin.Context, info *relaycommon.RelayInfo, target types.RelayFormat, request any) (*RequestResult, error)
func ConvertRequestByID ¶
func ConvertRequestByID(c *gin.Context, info *relaycommon.RelayInfo, converter string, request any) (*RequestResult, error)
func ConvertRequestVia ¶
func ConvertRequestVia(c *gin.Context, info *relaycommon.RelayInfo, request any, path ...types.RelayFormat) (*RequestResult, error)
type RequestStep ¶
type RequestStep struct {
Converter string
From types.RelayFormat
To types.RelayFormat
}
type ResponseConverterFunc ¶
type ResponseConverterQuality ¶
type ResponseConverterQuality string
const ( ResponseConverterQualityGood ResponseConverterQuality = "good" ResponseConverterQualityFair ResponseConverterQuality = "fair" ResponseConverterQualityDiscouraged ResponseConverterQuality = "discouraged" )
type ResponseConverterSpec ¶
type ResponseConverterSpec struct {
ID string
From types.RelayFormat
To types.RelayFormat
Quality ResponseConverterQuality
Convert ResponseConverterFunc
ConvertStream ResponseStreamConverterFunc
NewStreamState ResponseStreamStateFactory
ConvertStreamChunk ResponseStreamChunkConverterFunc
FinalizeStream ResponseStreamFinalizerFunc
StepConverters []string
}
func LookupResponseConverter ¶
func LookupResponseConverter(converter string) (ResponseConverterSpec, bool)
type ResponseResult ¶
type ResponseResult struct {
Value any
Usage *dto.Usage
From types.RelayFormat
To types.RelayFormat
Converter string
Quality ResponseConverterQuality
Steps []ResponseStep
Stream bool
}
func ConvertResponse ¶
func ConvertResponse(c *gin.Context, info *relaycommon.RelayInfo, target types.RelayFormat, response any) (*ResponseResult, error)
func ConvertResponseByID ¶
func ConvertResponseByID(c *gin.Context, info *relaycommon.RelayInfo, converter string, response any) (*ResponseResult, error)
func ConvertStreamResponse ¶
func ConvertStreamResponse(c *gin.Context, info *relaycommon.RelayInfo, target types.RelayFormat, response any) (*ResponseResult, error)
func ConvertStreamResponseChunk ¶
func ConvertStreamResponseChunk(c *gin.Context, info *relaycommon.RelayInfo, state *ResponseStreamState, response any) ([]ResponseResult, error)
func FinalizeStreamResponse ¶
func FinalizeStreamResponse(c *gin.Context, info *relaycommon.RelayInfo, state *ResponseStreamState) ([]ResponseResult, error)
type ResponseStep ¶
type ResponseStep struct {
Converter string
From types.RelayFormat
To types.RelayFormat
}
type ResponseStreamOptions ¶
type ResponseStreamState ¶
type ResponseStreamState struct {
From types.RelayFormat
To types.RelayFormat
Converter string
Quality ResponseConverterQuality
Steps []ResponseStep
// contains filtered or unexported fields
}
func NewResponseStreamState ¶
func NewResponseStreamState(from types.RelayFormat, target types.RelayFormat, options ResponseStreamOptions) (*ResponseStreamState, error)
func NewResponseStreamStateByID ¶
func NewResponseStreamStateByID(converter string, options ResponseStreamOptions) (*ResponseStreamState, error)
func (*ResponseStreamState) SetUsage ¶
func (s *ResponseStreamState) SetUsage(usage *dto.Usage)
func (*ResponseStreamState) Usage ¶
func (s *ResponseStreamState) Usage() *dto.Usage
func (*ResponseStreamState) UsageText ¶
func (s *ResponseStreamState) UsageText() string
type ResponseStreamStateFactory ¶
type ResponseStreamStateFactory func(options ResponseStreamOptions) any
type ResponsesBufferedAccumulator ¶
type ResponsesBufferedAccumulator = oairesponses.ResponsesBufferedAccumulator
func NewResponsesBufferedAccumulator ¶
func NewResponsesBufferedAccumulator() *ResponsesBufferedAccumulator
type ResponsesToChatStreamState ¶
type ResponsesToChatStreamState = oairesponses.ResponsesToChatStreamState
func NewResponsesToChatStreamState ¶
func NewResponsesToChatStreamState(model string, includeUsage bool) *ResponsesToChatStreamState
type TextConverterQuality ¶
type TextConverterQuality string
const ( TextConverterQualityGood TextConverterQuality = "good" TextConverterQualityFair TextConverterQuality = "fair" TextConverterQualityDiscouraged TextConverterQuality = "discouraged" )
type TextConverterSpec ¶
type TextConverterSpec struct {
ID string
From types.RelayFormat
To types.RelayFormat
Quality TextConverterQuality
Req TextRequestSide
Resp TextResponseSide
}
func LookupTextConverter ¶
func LookupTextConverter(converter string) (TextConverterSpec, bool)
type TextRequestSide ¶
type TextRequestSide struct {
Convert RequestConverterFunc
StepConverters []string
}
type TextResponseSide ¶
type TextResponseSide struct {
Convert ResponseConverterFunc
ConvertStream ResponseStreamConverterFunc
NewStreamState ResponseStreamStateFactory
ConvertStreamChunk ResponseStreamChunkConverterFunc
FinalizeStream ResponseStreamFinalizerFunc
StepConverters []string
Aliases []string
}
Source Files
¶
Click to show internal directories.
Click to hide internal directories.