- Added support for converting extended types (file, data) to standard LLM types (text, image_url, input_audio) in the Stream method. - Introduced a new agentCallerWrapper to facilitate agent calls from the content package. - Implemented ThreadID management for nested agent calls to improve concurrent stream identification. - Enhanced message handling to include metadata for message_start and message_end events, allowing for better tracking of message states. - Removed deprecated vision capability checks from the Assistant initialization process, streamlining the codebase. - Added new content types (file, data) to the context types for improved message content handling.
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package content
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/yaoapp/gou/connector/openai"
|
|
agentContext "github.com/yaoapp/yao/agent/context"
|
|
)
|
|
|
|
// Registry holds all registered content handlers
|
|
type Registry struct {
|
|
handlers []Handler
|
|
}
|
|
|
|
// NewRegistry creates a new handler registry with default handlers
|
|
func NewRegistry() *Registry {
|
|
return &Registry{
|
|
handlers: []Handler{
|
|
&ImageHandler{},
|
|
&AudioHandler{},
|
|
&PDFHandler{},
|
|
&WordHandler{},
|
|
&ExcelHandler{},
|
|
&TextHandler{},
|
|
},
|
|
}
|
|
}
|
|
|
|
// GetHandler finds the appropriate handler for the given content
|
|
func (r *Registry) GetHandler(contentType string, fileType FileType) Handler {
|
|
for _, handler := range r.handlers {
|
|
if handler.CanHandle(contentType, fileType) {
|
|
return handler
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Handle processes content using the appropriate handler
|
|
func (r *Registry) Handle(ctx *agentContext.Context, info *Info, capabilities *openai.Capabilities, uses *agentContext.Uses) (*Result, error) {
|
|
handler := r.GetHandler(info.ContentType, info.FileType)
|
|
if handler == nil {
|
|
return nil, fmt.Errorf("no handler found for content type: %s, file type: %s", info.ContentType, info.FileType)
|
|
}
|
|
|
|
return handler.Handle(ctx, info, capabilities, uses)
|
|
}
|