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() contents := chatMessage.NewContents()
options = ast.withOptions(options) options = ast.withOptions(options)
// Add RAG and Version support
ctx.RAG = rag != nil
ctx.Version = ast.vision
// Run init hook // Run init hook
res, err := ast.HookInit(c, ctx, messages, options, contents) res, err := ast.HookInit(c, ctx, messages, options, contents)
if err != nil { if err != nil {
@ -370,6 +374,7 @@ func (ast *Assistant) withOptions(options map[string]interface{}) map[string]int
options = map[string]interface{}{} options = map[string]interface{}{}
} }
// Add Custom Options
if ast.Options != nil { if ast.Options != nil {
for key, value := range ast.Options { for key, value := range ast.Options {
options[key] = value options[key] = value
@ -377,7 +382,7 @@ func (ast *Assistant) withOptions(options map[string]interface{}) map[string]int
} }
// Add functions // Add functions
if ast.Functions != nil { if ast.Functions != nil && len(ast.Functions) > 0 {
options["tools"] = ast.Functions options["tools"] = ast.Functions
if options["tool_choice"] == nil { if options["tool_choice"] == nil {
options["tool_choice"] = "auto" 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) ctx, cancel := ast.createTimeoutContext(c)
defer cancel() 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 != nil {
if err.Error() == HookErrorMethodNotFound { if err.Error() == HookErrorMethodNotFound {
return nil, nil return nil, nil

View file

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