Browse Source

feat: support ollama tools

CalciumIon 1 year ago
parent
commit
88cc88c5d0
2 changed files with 24 additions and 19 deletions
  1. 12 11
      relay/channel/ollama/dto.go
  2. 12 8
      relay/channel/ollama/relay-ollama.go

+ 12 - 11
relay/channel/ollama/dto.go

@@ -3,14 +3,18 @@ package ollama
 import "one-api/dto"
 
 type OllamaRequest struct {
-	Model       string        `json:"model,omitempty"`
-	Messages    []dto.Message `json:"messages,omitempty"`
-	Stream      bool          `json:"stream,omitempty"`
-	Temperature float64       `json:"temperature,omitempty"`
-	Seed        float64       `json:"seed,omitempty"`
-	Topp        float64       `json:"top_p,omitempty"`
-	TopK        int           `json:"top_k,omitempty"`
-	Stop        any           `json:"stop,omitempty"`
+	Model            string              `json:"model,omitempty"`
+	Messages         []dto.Message       `json:"messages,omitempty"`
+	Stream           bool                `json:"stream,omitempty"`
+	Temperature      float64             `json:"temperature,omitempty"`
+	Seed             float64             `json:"seed,omitempty"`
+	Topp             float64             `json:"top_p,omitempty"`
+	TopK             int                 `json:"top_k,omitempty"`
+	Stop             any                 `json:"stop,omitempty"`
+	Tools            []dto.ToolCall      `json:"tools,omitempty"`
+	ResponseFormat   *dto.ResponseFormat `json:"response_format,omitempty"`
+	FrequencyPenalty float64             `json:"frequency_penalty,omitempty"`
+	PresencePenalty  float64             `json:"presence_penalty,omitempty"`
 }
 
 type OllamaEmbeddingRequest struct {
@@ -21,6 +25,3 @@ type OllamaEmbeddingRequest struct {
 type OllamaEmbeddingResponse struct {
 	Embedding []float64 `json:"embedding,omitempty"`
 }
-
-//type OllamaOptions struct {
-//}

+ 12 - 8
relay/channel/ollama/relay-ollama.go

@@ -28,14 +28,18 @@ func requestOpenAI2Ollama(request dto.GeneralOpenAIRequest) *OllamaRequest {
 		Stop, _ = request.Stop.([]string)
 	}
 	return &OllamaRequest{
-		Model:       request.Model,
-		Messages:    messages,
-		Stream:      request.Stream,
-		Temperature: request.Temperature,
-		Seed:        request.Seed,
-		Topp:        request.TopP,
-		TopK:        request.TopK,
-		Stop:        Stop,
+		Model:            request.Model,
+		Messages:         messages,
+		Stream:           request.Stream,
+		Temperature:      request.Temperature,
+		Seed:             request.Seed,
+		Topp:             request.TopP,
+		TopK:             request.TopK,
+		Stop:             Stop,
+		Tools:            request.Tools,
+		ResponseFormat:   request.ResponseFormat,
+		FrequencyPenalty: request.FrequencyPenalty,
+		PresencePenalty:  request.PresencePenalty,
 	}
 }