This commit is contained in:
fuzhongyun 2025-09-09 15:31:14 +08:00
parent 663609617f
commit fdd673810f
4 changed files with 18 additions and 16 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@
.env
docs
cmd/server/wire_gen.go
__debug*

6
go.mod
View File

@ -1,11 +1,13 @@
module ai_scheduler
go 1.23.4
go 1.24.0
toolchain go1.24.7
require (
github.com/gin-gonic/gin v1.10.0
github.com/google/wire v0.7.0
github.com/ollama/ollama v0.5.7
github.com/ollama/ollama v0.11.10
github.com/spf13/viper v1.17.0
github.com/swaggo/files v1.0.1
github.com/swaggo/gin-swagger v1.6.1

10
go.sum
View File

@ -142,8 +142,8 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
@ -209,8 +209,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/ollama/ollama v0.5.7 h1:YFxF3UYc3TbOH/j/OhJoxl4LOvPQRcuKUdI5txs/pkc=
github.com/ollama/ollama v0.5.7/go.mod h1:bBFyCnwY8C8zCas/t9ParGkmKSSM6H31fV/37K9kifo=
github.com/ollama/ollama v0.11.10 h1:J9zaoTPwIXOrYXCRAqI7rV4cJ+FOMuQc/vBqQ5GIdWg=
github.com/ollama/ollama v0.11.10/go.mod h1:9+1//yWPsDE2u+l1a5mpaKrYw4VdnSsRU3ioq5BvMms=
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@ -434,6 +434,8 @@ golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

View File

@ -6,7 +6,6 @@ import (
"context"
"encoding/json"
"fmt"
"net/http"
"time"
"github.com/ollama/ollama/api"
@ -25,12 +24,6 @@ func NewClient(config *config.OllamaConfig) (*Client, error) {
return nil, fmt.Errorf("failed to create ollama client: %w", err)
}
// 设置自定义HTTP客户端
// 创建HTTP客户端如果需要的话
_ = &http.Client{
Timeout: config.Timeout,
}
return &Client{
client: client,
config: config,
@ -41,9 +34,10 @@ func NewClient(config *config.OllamaConfig) (*Client, error) {
func (c *Client) Chat(ctx context.Context, messages []types.Message, tools []types.ToolDefinition) (*types.ChatResponse, error) {
// 构建聊天请求
req := &api.ChatRequest{
Model: c.config.Model,
Model: c.config.Model,
Messages: make([]api.Message, len(messages)),
Stream: new(bool), // 设置为false不使用流式响应
Think: &api.ThinkValue{Value: true},
}
// 转换消息格式
@ -105,16 +99,19 @@ func (c *Client) convertResponse(resp *api.ChatResponse) *types.ChatResponse {
if len(resp.Message.ToolCalls) > 0 {
result.ToolCalls = make([]types.ToolCall, len(resp.Message.ToolCalls))
for i, toolCall := range resp.Message.ToolCalls {
// 转换函数参数
argBytes, _ := json.Marshal(toolCall.Function.Arguments)
result.ToolCalls[i] = types.ToolCall{
ID: fmt.Sprintf("call_%d", i),
Type: "function",
Function: types.FunctionCall{
Name: toolCall.Function.Name,
Arguments: json.RawMessage(fmt.Sprintf("%v", toolCall.Function.Arguments)),
Arguments: json.RawMessage(argBytes),
},
}
}
}
return result
}
}