From a0e96f1391e8623ab2d3154cf7999a68683b435f Mon Sep 17 00:00:00 2001 From: mrh997 Date: Wed, 27 Aug 2025 20:47:04 +0800 Subject: [PATCH] refactor: migration from OpenAPIV3 to JSONSchema (#108) --- components/tool/jsonschema/main.go | 63 +++++++++++ .../tool/{openapi3 => jsonschema}/readme.md | 2 +- components/tool/openapi3/main.go | 107 ------------------ components/tool/openapi3/openapi.json | 44 ------- go.mod | 26 +++-- go.sum | 28 +++++ 6 files changed, 107 insertions(+), 163 deletions(-) create mode 100644 components/tool/jsonschema/main.go rename components/tool/{openapi3 => jsonschema}/readme.md (73%) delete mode 100644 components/tool/openapi3/main.go delete mode 100644 components/tool/openapi3/openapi.json diff --git a/components/tool/jsonschema/main.go b/components/tool/jsonschema/main.go new file mode 100644 index 0000000..00b7ab5 --- /dev/null +++ b/components/tool/jsonschema/main.go @@ -0,0 +1,63 @@ +/* + * Copyright 2024 CloudWeGo Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package main + +import ( + "fmt" + + "github.com/davecgh/go-spew/spew" + "github.com/eino-contrib/jsonschema" + orderedmap "github.com/wk8/go-ordered-map/v2" + + "github.com/cloudwego/eino/schema" +) + +func main() { + JSONSchemaToToolInfo() +} + +func JSONSchemaToToolInfo() { + js := &jsonschema.Schema{ + Type: string(schema.Object), + Required: []string{"title"}, + Properties: orderedmap.New[string, *jsonschema.Schema]( + orderedmap.WithInitialData[string, *jsonschema.Schema]( + orderedmap.Pair[string, *jsonschema.Schema]{ + Key: "title", + Value: &jsonschema.Schema{ + Type: string(schema.String), + }, + }, + orderedmap.Pair[string, *jsonschema.Schema]{ + Key: "completed", + Value: &jsonschema.Schema{ + Type: string(schema.Boolean), + }, + }, + ), + ), + } + + toolInfo := schema.ToolInfo{ + Name: "todo_manager", + Desc: "manage todo list", + ParamsOneOf: schema.NewParamsOneOfByJSONSchema(js), + } + + fmt.Printf("\n=========tool from api path=========\n") + spew.Dump(toolInfo) +} diff --git a/components/tool/openapi3/readme.md b/components/tool/jsonschema/readme.md similarity index 73% rename from components/tool/openapi3/readme.md rename to components/tool/jsonschema/readme.md index 0297bdb..2952c33 100644 --- a/components/tool/openapi3/readme.md +++ b/components/tool/jsonschema/readme.md @@ -1,6 +1,6 @@ ## 说明 -eino 提供了把 openapi3 文档中的 json schema 转为 eino tool schema 的方法。 +eino 提供了把 json schema 转为 eino tool schema 的方法。 对于想直接把一个 http 接口作为 eino 中的一个 tool 使用的场景,提供了便捷的方法。 关于 tool 更多的信息,可以参考: https://www.cloudwego.io/zh/docs/eino/core_modules/components/tools_node_guide/ diff --git a/components/tool/openapi3/main.go b/components/tool/openapi3/main.go deleted file mode 100644 index 2f77693..0000000 --- a/components/tool/openapi3/main.go +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2024 CloudWeGo Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package main - -import ( - "fmt" - "log" - - "github.com/davecgh/go-spew/spew" - "github.com/getkin/kin-openapi/openapi3" - - "github.com/cloudwego/eino/schema" -) - -func main() { - OpenapiDocToToolInfo() -} - -func OpenapiDocToToolInfo() { - loader := openapi3.NewLoader() - - // 解析 JSON 文档为 json Schema - doc, err := loader.LoadFromFile("./openapi.json") - if err != nil { - log.Fatalf("解析 openapi.json 失败: %v", err) - } - - // **** 如果是对 path 的 body 引用 **** - // eg: POST /api/v1/todo - schemaVal01, err := GetSchemaFromPath(doc, "POST", "/api/v1/todo") - if err != nil { - log.Fatalf("获取 ref 失败: %v", err) - } - - toolInfo := schema.ToolInfo{ - Name: "todo_manager", - Desc: "manage todo list", - ParamsOneOf: schema.NewParamsOneOfByOpenAPIV3(schemaVal01), - } - - fmt.Printf("\n=========tool from api path=========\n") - spew.Dump(toolInfo) - - // **** 如果有 ref 引用 **** - // eg: refName "#/components/schemas/TodoRequest" => ref := "TodoRequest" - schemaVal02, err := GetSchemaFromRef(doc, "TodoRequest") - if err != nil { - log.Fatalf("获取 ref 失败: %v", err) - } - testToolInfo := schema.ToolInfo{ - Name: "test", - Desc: "test desc", - ParamsOneOf: schema.NewParamsOneOfByOpenAPIV3(schemaVal02), - } - - fmt.Printf("\n\n=========tool from schema ref=========\n") - spew.Dump(testToolInfo) -} - -// 获取引用的 schema -func GetSchemaFromRef(doc *openapi3.T, ref string) (*openapi3.Schema, error) { - schemaRef, ok := doc.Components.Schemas[ref] - if !ok { - return nil, fmt.Errorf("未找到引用: %s", ref) - } - - return schemaRef.Value, nil -} - -// 获取 path 的 schema -func GetSchemaFromPath(doc *openapi3.T, method string, path string) (*openapi3.Schema, error) { - pattItem := doc.Paths.Find(path) - if pattItem == nil { - return nil, fmt.Errorf("未找到 path: %s", path) - } - - methodItem := pattItem.GetOperation(method) - if methodItem == nil { - return nil, fmt.Errorf("未找到 method: %s", method) - } - - reqBody := methodItem.RequestBody - if reqBody == nil || reqBody.Value == nil || reqBody.Value.Content == nil { - return nil, fmt.Errorf("未找到 requestBody: %s %s", method, path) - } - - jschema := reqBody.Value.Content["application/json"] - if jschema == nil || jschema.Schema == nil { - return nil, fmt.Errorf("未找到 schema: %s %s", method, path) - } - - return jschema.Schema.Value, nil -} diff --git a/components/tool/openapi3/openapi.json b/components/tool/openapi3/openapi.json deleted file mode 100644 index 0c332ef..0000000 --- a/components/tool/openapi3/openapi.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "openapi": "3.0.0", - "info": { - "title": "Todo API", - "version": "1.0.0" - }, - "paths": { - "/api/v1/todo": { - "post": { - "summary": "Create a todo item", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TodoRequest" - } - } - } - }, - "responses": { - "200": { - "description": "Todo item created" - } - } - } - } - }, - "components": { - "schemas": { - "TodoRequest": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "completed": { - "type": "boolean" - } - }, - "required": ["title"] - } - } - } - } \ No newline at end of file diff --git a/go.mod b/go.mod index 2bb5224..a6c8c4b 100644 --- a/go.mod +++ b/go.mod @@ -6,35 +6,39 @@ toolchain go1.24.4 require ( github.com/bytedance/sonic v1.14.0 - github.com/cloudwego/eino v0.4.0 + github.com/cloudwego/eino v0.4.7 github.com/cloudwego/eino-ext/components/document/parser/html v0.0.0-20250117061805-cd80d1780d76 github.com/cloudwego/eino-ext/components/document/parser/pdf v0.0.0-20250117061805-cd80d1780d76 - github.com/cloudwego/eino-ext/components/model/ark v0.1.18 - github.com/cloudwego/eino-ext/components/model/deepseek v0.0.0-20250221090944-e8ef7aabbe10 - github.com/cloudwego/eino-ext/components/model/ollama v0.1.0 - github.com/cloudwego/eino-ext/components/model/openai v0.0.0-20250728034832-de7648551801 + github.com/cloudwego/eino-ext/components/model/ark v0.1.22 + github.com/cloudwego/eino-ext/components/model/deepseek v0.0.0-20250826125654-37d4a5029810 + github.com/cloudwego/eino-ext/components/model/ollama v0.1.2 + github.com/cloudwego/eino-ext/components/model/openai v0.0.0-20250826125654-37d4a5029810 github.com/cloudwego/eino-ext/components/retriever/volc_vikingdb v0.0.0-20250319082935-6219ec437e56 - github.com/cloudwego/eino-ext/components/tool/duckduckgo/v2 v2.0.0-20250707040601-2fab92740585 + github.com/cloudwego/eino-ext/components/tool/duckduckgo/v2 v2.0.0-20250826125654-37d4a5029810 github.com/cloudwego/eino-ext/devops v0.1.7 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc - github.com/getkin/kin-openapi v0.118.0 - github.com/ollama/ollama v0.9.6 + github.com/eino-contrib/jsonschema v1.0.0 + github.com/ollama/ollama v0.11.4 github.com/stretchr/testify v1.10.0 + github.com/wk8/go-ordered-map/v2 v2.1.8 ) require ( github.com/PuerkitoBio/goquery v1.10.3 // indirect github.com/andybalholm/cascadia v1.3.3 // indirect github.com/aymerick/douceur v0.2.0 // indirect + github.com/bahlo/generic-list-go v0.2.0 // indirect + github.com/buger/jsonparser v1.1.1 // indirect github.com/bytedance/sonic/loader v0.3.0 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cloudwego/base64x v0.1.5 // indirect - github.com/cloudwego/eino-ext/libs/acl/openai v0.0.0-20250728034832-de7648551801 // indirect - github.com/cohesion-org/deepseek-go v1.2.3 // indirect + github.com/cloudwego/eino-ext/libs/acl/openai v0.0.0-20250826113018-8c6f6358d4bb // indirect + github.com/cohesion-org/deepseek-go v1.3.2 // indirect github.com/corpix/uarand v0.2.0 // indirect github.com/dslipak/pdf v0.0.2 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/evanphx/json-patch v0.5.2 // indirect + github.com/getkin/kin-openapi v0.118.0 // indirect github.com/go-openapi/jsonpointer v0.21.1 // indirect github.com/go-openapi/swag v0.23.1 // indirect github.com/google/uuid v1.6.0 // indirect @@ -50,7 +54,7 @@ require ( github.com/mailru/easyjson v0.9.0 // indirect github.com/matoous/go-nanoid v1.5.1 // indirect github.com/mattn/go-colorable v0.1.14 // indirect - github.com/meguminnnnnnnnn/go-openai v0.0.0-20250723112853-3bce976e5ccc // indirect + github.com/meguminnnnnnnnn/go-openai v0.0.0-20250821095446-07791bea23a0 // indirect github.com/microcosm-cc/bluemonday v1.0.27 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect diff --git a/go.sum b/go.sum index dfd7e68..d04933d 100644 --- a/go.sum +++ b/go.sum @@ -69,6 +69,8 @@ github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnO github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= +github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= +github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -76,6 +78,8 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bugsnag/bugsnag-go v1.4.0/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= github.com/bugsnag/panicwrap v1.2.0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/bytedance/mockey v1.2.14 h1:KZaFgPdiUwW+jOWFieo3Lr7INM1P+6adO3hxZhDswY8= @@ -106,32 +110,48 @@ github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCy github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= github.com/cloudwego/eino v0.4.0 h1:5gMwO6HGtn/bn1M3l5cY8y9k+TO+fCcJZ14z+S3pTaQ= github.com/cloudwego/eino v0.4.0/go.mod h1:wUjz990apdsaOraOXdh6CdhVXq8DJsOvLsVlxNTcNfY= +github.com/cloudwego/eino v0.4.7 h1:wwqsFWCuzCQuhw1dYKqHjGWULzjDjFfN9sTn/cezYV4= +github.com/cloudwego/eino v0.4.7/go.mod h1:1TDlOmwGSsbCJaWB92w9YLZi2FL0WRZoRcD4eMvqikg= github.com/cloudwego/eino-ext/components/document/parser/html v0.0.0-20250117061805-cd80d1780d76 h1:kK4f2kunb5xlc0XTkg6wkjy8Z/BDfJjWAVm9EOdRErg= github.com/cloudwego/eino-ext/components/document/parser/html v0.0.0-20250117061805-cd80d1780d76/go.mod h1:LWR+h0EfIELl/I1tDSVH0Tgx8j2gymxa174U1C8BNps= github.com/cloudwego/eino-ext/components/document/parser/pdf v0.0.0-20250117061805-cd80d1780d76 h1:GJ4OqxyBH8la8Gu4PhTHXZNZFmrtEIrrymkCEpJ7XZU= github.com/cloudwego/eino-ext/components/document/parser/pdf v0.0.0-20250117061805-cd80d1780d76/go.mod h1:swAgO0nNekTSKGgFqiy4zShKaCDhiIZoKEFwpi7NBFE= github.com/cloudwego/eino-ext/components/model/ark v0.1.18 h1:GH+xLASd21g//JhbtCQ7GrGMa/zQrvNJU7OXMWpI1Bg= github.com/cloudwego/eino-ext/components/model/ark v0.1.18/go.mod h1:VZ7Sa1ocNiSZFiNgg1PQXYdnCJAzPy4Dxt/Ctuwlfp8= +github.com/cloudwego/eino-ext/components/model/ark v0.1.22 h1:mY2a7ChxzwtdG64NL55Ny2ZGuCcTGPrNygkr6fRmVH4= +github.com/cloudwego/eino-ext/components/model/ark v0.1.22/go.mod h1:v6cx0axah4pw4h6bOyQ8HElgzuZY0pgMtowZ/8bTGFo= github.com/cloudwego/eino-ext/components/model/deepseek v0.0.0-20250221090944-e8ef7aabbe10 h1:9iORkTzR5fFrChi+KZyjHb1V4giJjXwBKqdvA4Q/7AM= github.com/cloudwego/eino-ext/components/model/deepseek v0.0.0-20250221090944-e8ef7aabbe10/go.mod h1:7q+/XE3qUbziFpBtszj90yfn+J0bUHCED5ImvaLFRR0= +github.com/cloudwego/eino-ext/components/model/deepseek v0.0.0-20250826125654-37d4a5029810 h1:zichoSWCoGqhUUwWscRNiTSH9j3KA8hReeEBMvr4i5w= +github.com/cloudwego/eino-ext/components/model/deepseek v0.0.0-20250826125654-37d4a5029810/go.mod h1:O6leaZBwE5s1wSsf5idW52Yaj1zWzhtjinSnfPXASNU= github.com/cloudwego/eino-ext/components/model/ollama v0.1.0 h1:FW067iMfg3EZbUaZIo8v3i2ILBAZDzY23/9pbprvE0M= github.com/cloudwego/eino-ext/components/model/ollama v0.1.0/go.mod h1:+qA5kkUCM0mIrXGSNzxLcjxh6K1AghPNigtEyyMdkOc= +github.com/cloudwego/eino-ext/components/model/ollama v0.1.2 h1:WxJ+7oXnr3AhM6u4VbFF3L2ionxCrPfmLetx7V+zthw= +github.com/cloudwego/eino-ext/components/model/ollama v0.1.2/go.mod h1:OgGMCiR/G/RnOWaJvdK8pVSxAzoz2SlCqim43oFTuwo= github.com/cloudwego/eino-ext/components/model/openai v0.0.0-20250728034832-de7648551801 h1:GkpWzi3+NT+CWxwS9jGLR3GmbOYGz3W0syqMcUkMFWg= github.com/cloudwego/eino-ext/components/model/openai v0.0.0-20250728034832-de7648551801/go.mod h1:9afHKjNutl+BzJ2d4cx+Ir+GKw3zRzvNOGMV8eRhKyk= +github.com/cloudwego/eino-ext/components/model/openai v0.0.0-20250826125654-37d4a5029810 h1:M8A7666rddupncJ4p3p1lH5jkNKtjzD7ULPE/I02o64= +github.com/cloudwego/eino-ext/components/model/openai v0.0.0-20250826125654-37d4a5029810/go.mod h1:QQhCuQxuBAVWvu/YAZBhs/RsR76mUigw59Tl0kh04C8= github.com/cloudwego/eino-ext/components/retriever/volc_vikingdb v0.0.0-20250319082935-6219ec437e56 h1:yL7nTthGoz35dh7RK9lazxDedGmSmlss8HrtXmd0O3Q= github.com/cloudwego/eino-ext/components/retriever/volc_vikingdb v0.0.0-20250319082935-6219ec437e56/go.mod h1:OPQYefu4EWAUcP0HhtzJK+UjLtQc8T9YzmxcAwFf29o= github.com/cloudwego/eino-ext/components/tool/duckduckgo/v2 v2.0.0-20250707040601-2fab92740585 h1:vbD6cOQI3MQ7bSvtZF3J0j+maYgpZcLRabnIO8Ciktc= github.com/cloudwego/eino-ext/components/tool/duckduckgo/v2 v2.0.0-20250707040601-2fab92740585/go.mod h1:vbUEsxNJRTiklKLhZ6g2iTwxHz1XaTYGLjBTW6y2skI= +github.com/cloudwego/eino-ext/components/tool/duckduckgo/v2 v2.0.0-20250826125654-37d4a5029810 h1:VtmhPdOY6wFR34Hdm4HNzWF9bwGz11x1TqBr8VpJDoc= +github.com/cloudwego/eino-ext/components/tool/duckduckgo/v2 v2.0.0-20250826125654-37d4a5029810/go.mod h1:QB9TkAu6OVDvQm5hEoK+VFVIbfDHO+ZQyUR2cPSo6jk= github.com/cloudwego/eino-ext/devops v0.1.7 h1:w8q4SGDtrZk+8WUrLyVidX7GNsyWFsYPPz5HoJKgRcA= github.com/cloudwego/eino-ext/devops v0.1.7/go.mod h1:W53NPBmkmM7ClyQqwOcFUC2kV4bsvCfh2FtHUcyMzMY= github.com/cloudwego/eino-ext/libs/acl/openai v0.0.0-20250728034832-de7648551801 h1:ICPcNPybr7GKI4kWGw1QkvyOTqyJCiYMXTPB1779Ai4= github.com/cloudwego/eino-ext/libs/acl/openai v0.0.0-20250728034832-de7648551801/go.mod h1:wRPVlA6A2a7Zje/fV9PBkP21QCivwi2RYaHteUjW+tI= +github.com/cloudwego/eino-ext/libs/acl/openai v0.0.0-20250826113018-8c6f6358d4bb h1:RMslzyijc3bi9EkqCulpS0hZupTl1y/wayR3+fVRN/c= +github.com/cloudwego/eino-ext/libs/acl/openai v0.0.0-20250826113018-8c6f6358d4bb/go.mod h1:fHn/6OqPPY1iLLx9wzz+MEVT5Dl9gwuZte1oLEnCoYw= github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cohesion-org/deepseek-go v1.2.3 h1:2MuEOvNHqmEYuZG8FNn0Hf3hFw3r7ETG/kLuC7I4hDk= github.com/cohesion-org/deepseek-go v1.2.3/go.mod h1:Mi/tP7IzBoXxDC606CFbJC5Ofk2HCikCayBXweo1RDg= +github.com/cohesion-org/deepseek-go v1.3.2 h1:WTZ/2346KFYca+n+DL5p+Ar1RQxF2w/wGkU4jDvyXaQ= +github.com/cohesion-org/deepseek-go v1.3.2/go.mod h1:bOVyKj38r90UEYZFrmJOzJKPxuAh8sIzHOCnLOpiXeI= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/corpix/uarand v0.2.0 h1:U98xXwud/AVuCpkpgfPF7J5TQgr7R5tqT8VZP5KWbzE= @@ -152,6 +172,8 @@ github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/eino-contrib/jsonschema v1.0.0 h1:dXxbhGNZuI3+xNi8x3JT8AGyoXz6Pff6mRvmpjVl5Ww= +github.com/eino-contrib/jsonschema v1.0.0/go.mod h1:cpnX4SyKjWjGC7iN2EbhxaTdLqGjCi0e9DxpLYxddD4= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -397,6 +419,8 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/meguminnnnnnnnn/go-openai v0.0.0-20250723112853-3bce976e5ccc h1:vdRbmKDHZMGb5SSUVAT9u+559Vr2gScV5ie/kcOvfeE= github.com/meguminnnnnnnnn/go-openai v0.0.0-20250723112853-3bce976e5ccc/go.mod h1:CqSFsV6AkkL2fixd25WYjRAolns+gQrY1x/Cz9c30v8= +github.com/meguminnnnnnnnn/go-openai v0.0.0-20250821095446-07791bea23a0 h1:nIohpHs1ViKR0SVgW/cbBstHjmnqFZDM9RqgX9m9Xu8= +github.com/meguminnnnnnnnn/go-openai v0.0.0-20250821095446-07791bea23a0/go.mod h1:qs96ysDmxhE4BZoU45I43zcyfnaYxU3X+aRzLko/htY= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk= @@ -437,6 +461,8 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/ollama/ollama v0.9.6 h1:HZNJmB52pMt6zLkGkkheBuXBXM5478eiSAj7GR75AMc= github.com/ollama/ollama v0.9.6/go.mod h1:zLwx3iZ3AI4Rc/egsrx3u1w4RU2MHQ/Ylxse48jvyt4= +github.com/ollama/ollama v0.11.4 h1:6xLYLEPTKtw6N20qQecyEL/rrBktPO4o5U05cnvkSmI= +github.com/ollama/ollama v0.11.4/go.mod h1:9+1//yWPsDE2u+l1a5mpaKrYw4VdnSsRU3ioq5BvMms= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -560,6 +586,8 @@ github.com/volcengine/volc-sdk-golang v1.0.196 h1:KYbX76ibTlNhgm6Kq3sDTjrujDBd0z github.com/volcengine/volc-sdk-golang v1.0.196/go.mod h1:stZX+EPgv1vF4nZwOlEe8iGcriUPRBKX8zA19gXycOQ= github.com/volcengine/volcengine-go-sdk v1.1.21 h1:HxEaSsT+SRx0J5z5hDi+MVeYK6VRljdTjSjUnBg2Aso= github.com/volcengine/volcengine-go-sdk v1.1.21/go.mod h1:EyKoi6t6eZxoPNGr2GdFCZti2Skd7MO3eUzx7TtSvNo= +github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= +github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/x-cray/logrus-prefixed-formatter v0.5.2 h1:00txxvfBM9muc0jiLIEAkAcIMJzfthRT6usrui8uGmg= github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=