Merge remote-tracking branch 'origin/alpha' into alpha

This commit is contained in:
t0ng7u
2025-07-22 12:13:17 +08:00
5 changed files with 35 additions and 20 deletions

View File

@@ -41,7 +41,7 @@ func (p *PageInfo) SetItems(items any) {
func GetPageQuery(c *gin.Context) *PageInfo { func GetPageQuery(c *gin.Context) *PageInfo {
pageInfo := &PageInfo{} pageInfo := &PageInfo{}
// 手动获取并处理每个参数 // 手动获取并处理每个参数
if page, err := strconv.Atoi(c.Query("page")); err == nil { if page, err := strconv.Atoi(c.Query("p")); err == nil {
pageInfo.Page = page pageInfo.Page = page
} }
if pageSize, err := strconv.Atoi(c.Query("page_size")); err == nil { if pageSize, err := strconv.Atoi(c.Query("page_size")); err == nil {

View File

@@ -62,6 +62,8 @@ type GeneralOpenAIRequest struct {
Reasoning json.RawMessage `json:"reasoning,omitempty"` Reasoning json.RawMessage `json:"reasoning,omitempty"`
// Ali Qwen Params // Ali Qwen Params
VlHighResolutionImages json.RawMessage `json:"vl_high_resolution_images,omitempty"` VlHighResolutionImages json.RawMessage `json:"vl_high_resolution_images,omitempty"`
// 用匿名参数接收额外参数例如ollama的think参数在此接收
Extra map[string]json.RawMessage `json:"-"`
} }
func (r *GeneralOpenAIRequest) ToMap() map[string]any { func (r *GeneralOpenAIRequest) ToMap() map[string]any {

View File

@@ -1,6 +1,9 @@
package ollama package ollama
import "one-api/dto" import (
"encoding/json"
"one-api/dto"
)
type OllamaRequest struct { type OllamaRequest struct {
Model string `json:"model,omitempty"` Model string `json:"model,omitempty"`
@@ -19,6 +22,7 @@ type OllamaRequest struct {
Suffix any `json:"suffix,omitempty"` Suffix any `json:"suffix,omitempty"`
StreamOptions *dto.StreamOptions `json:"stream_options,omitempty"` StreamOptions *dto.StreamOptions `json:"stream_options,omitempty"`
Prompt any `json:"prompt,omitempty"` Prompt any `json:"prompt,omitempty"`
Think json.RawMessage `json:"think,omitempty"`
} }
type Options struct { type Options struct {

View File

@@ -50,7 +50,7 @@ func requestOpenAI2Ollama(request dto.GeneralOpenAIRequest) (*OllamaRequest, err
} else { } else {
Stop, _ = request.Stop.([]string) Stop, _ = request.Stop.([]string)
} }
return &OllamaRequest{ ollamaRequest := &OllamaRequest{
Model: request.Model, Model: request.Model,
Messages: messages, Messages: messages,
Stream: request.Stream, Stream: request.Stream,
@@ -67,7 +67,11 @@ func requestOpenAI2Ollama(request dto.GeneralOpenAIRequest) (*OllamaRequest, err
Prompt: request.Prompt, Prompt: request.Prompt,
StreamOptions: request.StreamOptions, StreamOptions: request.StreamOptions,
Suffix: request.Suffix, Suffix: request.Suffix,
}, nil }
if think, ok := request.Extra["think"]; ok {
ollamaRequest.Think = think
}
return ollamaRequest, nil
} }
func requestOpenAI2Embeddings(request dto.EmbeddingRequest) *OllamaEmbeddingRequest { func requestOpenAI2Embeddings(request dto.EmbeddingRequest) *OllamaEmbeddingRequest {

View File

@@ -105,23 +105,25 @@ func (e *NewAPIError) SetMessage(message string) {
func (e *NewAPIError) ToOpenAIError() OpenAIError { func (e *NewAPIError) ToOpenAIError() OpenAIError {
switch e.ErrorType { switch e.ErrorType {
case ErrorTypeOpenAIError: case ErrorTypeOpenAIError:
return e.RelayError.(OpenAIError) if openAIError, ok := e.RelayError.(OpenAIError); ok {
return openAIError
}
case ErrorTypeClaudeError: case ErrorTypeClaudeError:
claudeError := e.RelayError.(ClaudeError) if claudeError, ok := e.RelayError.(ClaudeError); ok {
return OpenAIError{ return OpenAIError{
Message: e.Error(), Message: e.Error(),
Type: claudeError.Type, Type: claudeError.Type,
Param: "", Param: "",
Code: e.errorCode, Code: e.errorCode,
} }
default:
return OpenAIError{
Message: e.Error(),
Type: string(e.ErrorType),
Param: "",
Code: e.errorCode,
} }
} }
return OpenAIError{
Message: e.Error(),
Type: string(e.ErrorType),
Param: "",
Code: e.errorCode,
}
} }
func (e *NewAPIError) ToClaudeError() ClaudeError { func (e *NewAPIError) ToClaudeError() ClaudeError {
@@ -162,8 +164,11 @@ func NewOpenAIError(err error, errorCode ErrorCode, statusCode int) *NewAPIError
func NewErrorWithStatusCode(err error, errorCode ErrorCode, statusCode int) *NewAPIError { func NewErrorWithStatusCode(err error, errorCode ErrorCode, statusCode int) *NewAPIError {
return &NewAPIError{ return &NewAPIError{
Err: err, Err: err,
RelayError: nil, RelayError: OpenAIError{
Message: err.Error(),
Type: string(errorCode),
},
ErrorType: ErrorTypeNewAPIError, ErrorType: ErrorTypeNewAPIError,
StatusCode: statusCode, StatusCode: statusCode,
errorCode: errorCode, errorCode: errorCode,