Revert "Revert "Add RAG and Version support to Assistant context and options""

This commit is contained in:
Max 2025-01-26 17:05:10 +08:00 committed by GitHub
parent bec72b2f51
commit 069105d7bd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 12 additions and 3 deletions

View file

@ -54,6 +54,10 @@ func (ast *Assistant) Execute(c *gin.Context, ctx chatctx.Context, input string,
contents := chatMessage.NewContents()
options = ast.withOptions(options)
// Add RAG and Version support
ctx.RAG = rag != nil
ctx.Version = ast.vision
// Run init hook
res, err := ast.HookInit(c, ctx, messages, options, contents)
if err != nil {
@ -370,6 +374,7 @@ func (ast *Assistant) withOptions(options map[string]interface{}) map[string]int
options = map[string]interface{}{}
}
// Add Custom Options
if ast.Options != nil {
for key, value := range ast.Options {
options[key] = value
@ -377,7 +382,7 @@ func (ast *Assistant) withOptions(options map[string]interface{}) map[string]int
}
// Add functions
if ast.Functions != nil {
if ast.Functions != nil && len(ast.Functions) > 0 {
options["tools"] = ast.Functions
if options["tool_choice"] == nil {
options["tool_choice"] = "auto"

View file

@ -20,7 +20,7 @@ func (ast *Assistant) HookInit(c *gin.Context, context chatctx.Context, input []
ctx, cancel := ast.createTimeoutContext(c)
defer cancel()
v, err := ast.call(ctx, "Init", c, contents, context, input)
v, err := ast.call(ctx, "Init", c, contents, context, input, options)
if err != nil {
if err.Error() == HookErrorMethodNotFound {
return nil, nil

View file

@ -22,6 +22,8 @@ type Context struct {
Config map[string]interface{} `json:"config,omitempty"`
Signal interface{} `json:"signal,omitempty"`
Upload *FileUpload `json:"upload,omitempty"`
Version bool `json:"version,omitempty"` // Version support
RAG bool `json:"rag,omitempty"` // RAG support
}
// Field the context field
@ -84,7 +86,9 @@ func WithTimeout(parent Context, timeout time.Duration) (Context, context.Cancel
// Map the context to a map
func (ctx *Context) Map() map[string]interface{} {
data := map[string]interface{}{
"sid": ctx.Sid,
"sid": ctx.Sid,
"rag": ctx.RAG,
"version": ctx.Version,
}
if ctx.ChatID != "" {