Enha: openai tools [WIP]

This commit is contained in:
Grail Finder
2025-08-08 09:24:47 +03:00
parent d59b985534
commit 9cb4561c82
2 changed files with 58 additions and 28 deletions

View File

@@ -108,33 +108,6 @@ func (cb *ChatBody) MakeStopSlice() []string {
return ss return ss
} }
type ChatToolsBody struct {
Model string `json:"model"`
Messages []RoleMsg `json:"messages"`
Tools []struct {
Type string `json:"type"`
Function struct {
Name string `json:"name"`
Description string `json:"description"`
Parameters struct {
Type string `json:"type"`
Properties struct {
Location struct {
Type string `json:"type"`
Description string `json:"description"`
} `json:"location"`
Unit struct {
Type string `json:"type"`
Enum []string `json:"enum"`
} `json:"unit"`
} `json:"properties"`
Required []string `json:"required"`
} `json:"parameters"`
} `json:"function"`
} `json:"tools"`
ToolChoice string `json:"tool_choice"`
}
type DSChatReq struct { type DSChatReq struct {
Messages []RoleMsg `json:"messages"` Messages []RoleMsg `json:"messages"`
Model string `json:"model"` Model string `json:"model"`
@@ -287,6 +260,37 @@ type EmbeddingResp struct {
// } `json:"data"` // } `json:"data"`
// } // }
// === tools models
type ToolArgProps struct {
Type string `json:"type"`
Description string `json:"description"`
}
type ToolFuncParams struct {
Type string `json:"type"`
Properties map[string]ToolArgProps `json:"properties"`
Required []string `json:"required"`
}
type ToolFunc struct {
Name string `json:"name"`
Description string `json:"description"`
Parameters ToolFuncParams `json:"parameters"`
}
type Tool struct {
Type string `json:"type"`
Function ToolFunc `json:"function"`
}
type OpenAIReq struct {
ChatBody
Tools []Tool `json:"tools"`
}
// ===
type LLMModels struct { type LLMModels struct {
Object string `json:"object"` Object string `json:"object"`
Data []struct { Data []struct {

View File

@@ -1,8 +1,8 @@
package main package main
import ( import (
"gf-lt/models"
"fmt" "fmt"
"gf-lt/models"
"regexp" "regexp"
"strings" "strings"
"time" "time"
@@ -141,3 +141,29 @@ var fnMap = map[string]fnSig{
"recall_topics": recallTopics, "recall_topics": recallTopics,
"memorise": memorise, "memorise": memorise,
} }
// openai style def
var baseTools = []models.Tool{
// memorise
models.Tool{
Type: "function",
Function: models.ToolFunc{
Name: "memorise",
Description: "save topic-data in key-value cache",
Parameters: models.ToolFuncParams{
Type: "object",
Required: []string{"topic", "data"},
Properties: map[string]models.ToolArgProps{
"topic": models.ToolArgProps{
Type: "string",
Description: "topic is the key under which data is saved",
},
"data": models.ToolArgProps{
Type: "string",
Description: "data is the value that is saved under the topic-key",
},
},
},
},
},
}