Enha: openai tools [WIP]
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
28
tools.go
28
tools.go
@@ -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",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user