diff --git a/neo/assistant/api.go b/neo/assistant/api.go index 0c63e8a0..21ab6b14 100644 --- a/neo/assistant/api.go +++ b/neo/assistant/api.go @@ -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" diff --git a/neo/assistant/hooks.go b/neo/assistant/hooks.go index fa8171cd..97de8222 100644 --- a/neo/assistant/hooks.go +++ b/neo/assistant/hooks.go @@ -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 diff --git a/neo/context/context.go b/neo/context/context.go index da0efd51..686d3949 100644 --- a/neo/context/context.go +++ b/neo/context/context.go @@ -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 != "" {