Skip to content

Commit cb4c949

Browse files
authored
feat(model_ollama): upgrade github.com/ollama/ollama to v0.11.4 (#409)
1 parent 0fb5ad0 commit cb4c949

File tree

4 files changed

+82
-40
lines changed

4 files changed

+82
-40
lines changed

components/model/ollama/chatmodel.go

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ type ChatModelConfig struct {
5353

5454
Options *api.Options `json:"options"`
5555

56-
Thinking *bool `json:"thinking"`
56+
Thinking *api.ThinkValue `json:"thinking"`
5757
}
5858

5959
// Check if ChatModel implements model.ChatModel
@@ -425,12 +425,7 @@ func parseJSONToObject(jsonStr string) (map[string]any, error) {
425425
func toOllamaTools(einoTools []*schema.ToolInfo) ([]api.Tool, error) {
426426
var ollamaTools []api.Tool
427427
for _, einoTool := range einoTools {
428-
properties := make(map[string]struct {
429-
Type api.PropertyType `json:"type"`
430-
Items any `json:"items,omitempty"`
431-
Description string `json:"description"`
432-
Enum []any `json:"enum,omitempty"`
433-
})
428+
properties := make(map[string]api.ToolProperty)
434429
var required []string
435430

436431
openTool, err := einoTool.ParamsOneOf.ToOpenAPIV3()
@@ -442,12 +437,7 @@ func toOllamaTools(einoTools []*schema.ToolInfo) ([]api.Tool, error) {
442437
required = openTool.Required
443438

444439
for name, param := range openTool.Properties {
445-
properties[name] = struct {
446-
Type api.PropertyType `json:"type"`
447-
Items any `json:"items,omitempty"`
448-
Description string `json:"description"`
449-
Enum []any `json:"enum,omitempty"`
450-
}{
440+
properties[name] = api.ToolProperty{
451441
Type: []string{param.Value.Type},
452442
Description: param.Value.Description,
453443
Enum: param.Value.Enum,
@@ -461,16 +451,11 @@ func toOllamaTools(einoTools []*schema.ToolInfo) ([]api.Tool, error) {
461451
Name: einoTool.Name,
462452
Description: einoTool.Desc,
463453
Parameters: struct {
464-
Type string `json:"type"`
465-
Defs any `json:"$defs,omitempty"`
466-
Items any `json:"items,omitempty"`
467-
Required []string `json:"required"`
468-
Properties map[string]struct {
469-
Type api.PropertyType `json:"type"`
470-
Items any `json:"items,omitempty"`
471-
Description string `json:"description"`
472-
Enum []any `json:"enum,omitempty"`
473-
} `json:"properties"`
454+
Type string `json:"type"`
455+
Defs any `json:"$defs,omitempty"`
456+
Items any `json:"items,omitempty"`
457+
Required []string `json:"required"`
458+
Properties map[string]api.ToolProperty `json:"properties"`
474459
}{
475460
Type: "object",
476461
Required: required,
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Copyright 2024 CloudWeGo Authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package main
18+
19+
import (
20+
"context"
21+
"log"
22+
23+
"github.com/cloudwego/eino/schema"
24+
ollamaapi "github.com/ollama/ollama/api"
25+
26+
"github.com/cloudwego/eino-ext/components/model/ollama"
27+
)
28+
29+
func main() {
30+
ctx := context.Background()
31+
32+
thinking := ollamaapi.ThinkValue{Value: true}
33+
chatModel, err := ollama.NewChatModel(ctx, &ollama.ChatModelConfig{
34+
BaseURL: "http://localhost:11434",
35+
Model: "qwen3:8b",
36+
Thinking: &thinking,
37+
})
38+
if err != nil {
39+
log.Printf("NewChatModel failed, err=%v\n", err)
40+
return
41+
}
42+
43+
resp, err := chatModel.Generate(ctx, []*schema.Message{
44+
{
45+
Role: schema.User,
46+
Content: "as a machine, how do you answer user's question?",
47+
},
48+
})
49+
if err != nil {
50+
log.Printf("Generate failed, err=%v\n", err)
51+
return
52+
}
53+
54+
log.Printf("output thinking: \n%v\n", resp.ReasoningContent)
55+
log.Printf("output content: \n%v\n", resp.Content)
56+
}

components/model/ollama/go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ go 1.24.0
55
toolchain go1.24.2
66

77
require (
8-
github.com/bytedance/mockey v1.2.13
9-
github.com/cloudwego/eino v0.3.55
10-
github.com/ollama/ollama v0.9.6
8+
github.com/bytedance/mockey v1.2.14
9+
github.com/cloudwego/eino v0.4.4
10+
github.com/ollama/ollama v0.11.4
1111
github.com/smartystreets/goconvey v1.8.1
12-
github.com/stretchr/testify v1.9.0
12+
github.com/stretchr/testify v1.10.0
1313
)
1414

1515
require (
16-
github.com/bytedance/sonic v1.13.2 // indirect
17-
github.com/bytedance/sonic/loader v0.2.4 // indirect
16+
github.com/bytedance/sonic v1.14.0 // indirect
17+
github.com/bytedance/sonic/loader v0.3.0 // indirect
1818
github.com/cloudwego/base64x v0.1.5 // indirect
1919
github.com/davecgh/go-spew v1.1.1 // indirect
2020
github.com/dustin/go-humanize v1.0.1 // indirect

components/model/ollama/go.sum

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngE
33
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
44
github.com/bugsnag/bugsnag-go v1.4.0/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8=
55
github.com/bugsnag/panicwrap v1.2.0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
6-
github.com/bytedance/mockey v1.2.13 h1:jokWZAm/pUEbD939Rhznz615MKUCZNuvCFQlJ2+ntoo=
7-
github.com/bytedance/mockey v1.2.13/go.mod h1:1BPHF9sol5R1ud/+0VEHGQq/+i2lN+GTsr3O2Q9IENY=
8-
github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ=
9-
github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4=
6+
github.com/bytedance/mockey v1.2.14 h1:KZaFgPdiUwW+jOWFieo3Lr7INM1P+6adO3hxZhDswY8=
7+
github.com/bytedance/mockey v1.2.14/go.mod h1:1BPHF9sol5R1ud/+0VEHGQq/+i2lN+GTsr3O2Q9IENY=
8+
github.com/bytedance/sonic v1.14.0 h1:/OfKt8HFw0kh2rj8N0F6C/qPGRESq0BbaNZgcNXXzQQ=
9+
github.com/bytedance/sonic v1.14.0/go.mod h1:WoEbx8WTcFJfzCe0hbmyTGrfjt8PzNEBdxlNUO24NhA=
1010
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
11-
github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY=
12-
github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI=
11+
github.com/bytedance/sonic/loader v0.3.0 h1:dskwH8edlzNMctoruo8FPTJDF3vLtDT0sXZwvZJyqeA=
12+
github.com/bytedance/sonic/loader v0.3.0/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI=
1313
github.com/certifi/gocertifi v0.0.0-20190105021004-abcd57078448/go.mod h1:GJKEexRPVJrBSOjoqN5VNOIKJ5Q3RViH6eu3puDRwx4=
1414
github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4=
1515
github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
16-
github.com/cloudwego/eino v0.3.55 h1:lMZrGtEh0k3qykQTLNXSXuAa98OtF2tS43GMHyvN7nA=
17-
github.com/cloudwego/eino v0.3.55/go.mod h1:wUjz990apdsaOraOXdh6CdhVXq8DJsOvLsVlxNTcNfY=
16+
github.com/cloudwego/eino v0.4.4 h1:rX0Ki5tiFScxMPDzOiViuMZdyTkJxF9JqEFbK/J/O8s=
17+
github.com/cloudwego/eino v0.4.4/go.mod h1:wUjz990apdsaOraOXdh6CdhVXq8DJsOvLsVlxNTcNfY=
1818
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
1919
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
2020
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -86,8 +86,8 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9
8686
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
8787
github.com/nikolalohinski/gonja v1.5.3 h1:GsA+EEaZDZPGJ8JtpeGN78jidhOlxeJROpqMT9fTj9c=
8888
github.com/nikolalohinski/gonja v1.5.3/go.mod h1:RmjwxNiXAEqcq1HeK5SSMmqFJvKOfTfXhkJv6YBtPa4=
89-
github.com/ollama/ollama v0.9.6 h1:HZNJmB52pMt6zLkGkkheBuXBXM5478eiSAj7GR75AMc=
90-
github.com/ollama/ollama v0.9.6/go.mod h1:zLwx3iZ3AI4Rc/egsrx3u1w4RU2MHQ/Ylxse48jvyt4=
89+
github.com/ollama/ollama v0.11.4 h1:6xLYLEPTKtw6N20qQecyEL/rrBktPO4o5U05cnvkSmI=
90+
github.com/ollama/ollama v0.11.4/go.mod h1:9+1//yWPsDE2u+l1a5mpaKrYw4VdnSsRU3ioq5BvMms=
9191
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
9292
github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
9393
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
@@ -126,8 +126,9 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
126126
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
127127
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
128128
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
129-
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
130129
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
130+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
131+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
131132
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
132133
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
133134
github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo=

0 commit comments

Comments
 (0)