Documentation
¶
Index ¶
- Constants
- Variables
- func ConfigLoadPhaseTemplateFuncs(reg *Registry) template.FuncMap
- func FinishReasonStrings() []string
- func PreRenderPhaseTemplateFuncs(reg *Registry, cfg *Config) template.FuncMap
- func PromptExecutionPhaseTemplateFuncs(p *Prompt, req *Request) template.FuncMap
- func RegisterAgent(name string, f NewAgentFunc) error
- func RegisterModelProvider(name string, provider ModelProvider) error
- func ResponseWriterToWriter(w ResponseWriter) io.Writer
- func SetAgentMarmaidNodeWrapper(name string, f func(string) string) error
- func SetAgentTemplateFuncs(name string, funcs template.FuncMap) error
- func SetNextAgents(w ResponseWriter, agents ...string)
- func UserModelProviderMiddlewares(middlewares ...func(ModelProvider) ModelProvider)
- type Agent
- type AgentFunc
- type AgentMux
- func (mux *AgentMux) Execute(ctx context.Context, req *Request, w ResponseWriter) error
- func (mux *AgentMux) Render(ctx context.Context, req *Request) (string, error)
- func (mux *AgentMux) RenderBlock(ctx context.Context, blockName string, req *Request) (string, error)
- func (mux *AgentMux) RenderConfig(_ context.Context, name string, isJsonnet bool) (string, error)
- func (mux *AgentMux) ToMarkdown() string
- func (mux *AgentMux) Use(middleware ...func(next Agent) Agent)
- func (mux *AgentMux) Validate() error
- type AgentTool
- type BatchResponseWriter
- func (w *BatchResponseWriter) Finish(reason FinishReason, msg string) error
- func (w *BatchResponseWriter) Metadata() metadata.Metadata
- func (w *BatchResponseWriter) Response() *Response
- func (w *BatchResponseWriter) WritePart(parts ...ContentPart) error
- func (w *BatchResponseWriter) WriteRole(role string) error
- type Config
- type ContentPart
- type DataValidateError
- type FinishReason
- type GenerateImageRequest
- type GenerateTextRequest
- type Loader
- func (l *Loader) ExtCodes(extCodes map[string]string)
- func (l *Loader) ExtVars(extVars map[string]string)
- func (l *Loader) Includes(fsys fs.FS)
- func (l *Loader) Load(ctx context.Context, fsys fs.FS, promptPath string) (*Prompt, error)
- func (l *Loader) LoadFS(ctx context.Context, fsys fs.FS) (map[string]*Prompt, map[string][]string, error)
- func (l *Loader) NativeFunctions(nativeFunctions ...*jsonnet.NativeFunction)
- func (l *Loader) PromptPathPatterns(patterns []string)
- func (l *Loader) Registry(reg *Registry)
- func (l *Loader) TemplateFuncs(fmap template.FuncMap)
- func (l *Loader) ValueGenerator(gen ValueGenerator)
- type Message
- type MessageDecoder
- type MessageEncoder
- func (e *MessageEncoder) Encode(system string, messages []Message) error
- func (e *MessageEncoder) EncodeContentPart(part ContentPart) error
- func (e *MessageEncoder) EncodeMessage(msg Message) error
- func (e *MessageEncoder) Flush() error
- func (e *MessageEncoder) NoRole()
- func (e *MessageEncoder) SetBinaryOutputDir(dir string)
- func (e *MessageEncoder) SkipReasoning()
- func (e *MessageEncoder) TextOnly()
- type ModelProvider
- type ModelProviderManager
- func (m *ModelProviderManager) Clone() *ModelProviderManager
- func (m *ModelProviderManager) Exists(name string) bool
- func (m *ModelProviderManager) Get(name string) (ModelProvider, error)
- func (m *ModelProviderManager) List() []string
- func (m *ModelProviderManager) Register(name string, provider ModelProvider) error
- func (m *ModelProviderManager) Use(middlewares ...func(ModelProvider) ModelProvider)
- type NewAgentFunc
- type NewAgentMuxOption
- func WithExtCodes(codes map[string]string) NewAgentMuxOption
- func WithExtVars(vars map[string]string) NewAgentMuxOption
- func WithIncludesFS(fsys fs.FS) NewAgentMuxOption
- func WithLogger(logger *slog.Logger) NewAgentMuxOption
- func WithNativeFunctions(functions ...*jsonnet.NativeFunction) NewAgentMuxOption
- func WithPromptsFS(fsys fs.FS) NewAgentMuxOption
- func WithRegistry(registry *Registry) NewAgentMuxOption
- func WithTemplateFuncs(fmap template.FuncMap) NewAgentMuxOption
- type Prompt
- func (p *Prompt) Blocks() []string
- func (p *Prompt) Config() *Config
- func (p *Prompt) Decode(ctx context.Context, req *Request) (string, []Message, error)
- func (p *Prompt) DecodeBlock(ctx context.Context, blockName string, req *Request) (string, []Message, error)
- func (p *Prompt) Name() string
- func (p *Prompt) PreRendered() string
- func (p *Prompt) Render(ctx context.Context, req *Request) (string, error)
- func (p *Prompt) RenderBlock(_ context.Context, blockName string, req *Request) (string, error)
- func (p *Prompt) SetRelatedPrompts(prompts map[string]*Prompt)
- type ReasoningMirrorResponseWriter
- type Registry
- func (r *Registry) Exists(name string) bool
- func (r *Registry) NewAgent(ctx context.Context, p *Prompt) (Agent, error)
- func (r *Registry) Register(name string, f NewAgentFunc) error
- func (r *Registry) SetMarmaidNodeWrapper(name string, f func(string) string) error
- func (r *Registry) SetTemplateFuncs(name string, funcs template.FuncMap) error
- type Request
- type Response
- type ResponseWriter
- type SchemaValueGenerator
- type TextStreamingResponseWriter
- func (w *TextStreamingResponseWriter) DumpMetadata()
- func (w *TextStreamingResponseWriter) Finish(reason FinishReason, msg string) error
- func (w *TextStreamingResponseWriter) Metadata() metadata.Metadata
- func (w *TextStreamingResponseWriter) SetBinaryOutputDir(dir string)
- func (w *TextStreamingResponseWriter) SkipReasoning()
- func (w *TextStreamingResponseWriter) WritePart(parts ...ContentPart) error
- func (w *TextStreamingResponseWriter) WriteRole(_ string) error
- type Tool
- type ToolSet
- type ValueGenerator
Constants ¶
const ( RoleUser = "user" RoleAssistant = "assistant" )
const ( PartTypeText = "text" PartTypeBinary = "binary" PartTypeReasoning = "reasoning" )
Variables ¶
var ( ErrInvalidMessageRole = errors.New("invalid message role") ErrInvalidMessageContent = errors.New("invalid message content") )
var ( ErrModelProviderNameEmpty = errors.New("model provider name is empty") ErrModelNotFound = errors.New("model not found") )
var ( ErrInvalidConfig = errors.New("invalid config") ErrAgentTypeEmpty = errors.New("agent type is empty") ErrAgentAlreadyRegistered = errors.New("agent already registered") ErrAgentTypeNotFound = errors.New("agent type not found") )
Errors returned by the registry.
var (
ErrTemplateBlockNotFound = fmt.Errorf("template block not found")
)
var Version = "v0.0.0"
Functions ¶
func ConfigLoadPhaseTemplateFuncs ¶
ConfigLoadPhaseTemplateFuncs returns the template functions for the config load phase.
func FinishReasonStrings ¶
func FinishReasonStrings() []string
FinishReasonStrings returns a slice of all String values of the enum
func RegisterAgent ¶
func RegisterAgent(name string, f NewAgentFunc) error
RegisterAgent registers a new agent. to the default registry.
func RegisterModelProvider ¶
func RegisterModelProvider(name string, provider ModelProvider) error
func ResponseWriterToWriter ¶
func ResponseWriterToWriter(w ResponseWriter) io.Writer
func SetAgentTemplateFuncs ¶
SetAgentTemplateFuncs sets template functions for the agent type.
func SetNextAgents ¶
func SetNextAgents(w ResponseWriter, agents ...string)
func UserModelProviderMiddlewares ¶
func UserModelProviderMiddlewares(middlewares ...func(ModelProvider) ModelProvider)
Types ¶
type Agent ¶
type Agent interface {
Execute(ctx context.Context, req *Request, w ResponseWriter) error
}
type AgentMux ¶
type AgentMux struct {
// contains filtered or unexported fields
}
func NewAgentMux ¶
func NewAgentMux(ctx context.Context, optFns ...NewAgentMuxOption) (*AgentMux, error)
func (*AgentMux) RenderBlock ¶
func (*AgentMux) RenderConfig ¶
func (*AgentMux) ToMarkdown ¶
type AgentTool ¶
type AgentTool struct {
// contains filtered or unexported fields
}
func NewAgentTool ¶
func (*AgentTool) Description ¶
func (*AgentTool) InputSchema ¶
type BatchResponseWriter ¶
type BatchResponseWriter struct {
// contains filtered or unexported fields
}
func NewBatchResponseWriter ¶
func NewBatchResponseWriter() *BatchResponseWriter
func (*BatchResponseWriter) Finish ¶
func (w *BatchResponseWriter) Finish(reason FinishReason, msg string) error
func (*BatchResponseWriter) Metadata ¶
func (w *BatchResponseWriter) Metadata() metadata.Metadata
func (*BatchResponseWriter) Response ¶
func (w *BatchResponseWriter) Response() *Response
func (*BatchResponseWriter) WritePart ¶
func (w *BatchResponseWriter) WritePart(parts ...ContentPart) error
func (*BatchResponseWriter) WriteRole ¶
func (w *BatchResponseWriter) WriteRole(role string) error
type Config ¶
type Config struct { Raw string `json:"-"` PromptPath string `json:"-"` Enabled *bool `json:"enabled"` Default bool `json:"default"` Description string `json:"description"` Name string `json:"name"` Type string `json:"type"` DependsOn []string `json:"depends_on"` PayloadSchema map[string]any `json:"payload_schema,omitempty"` Tools []string `json:"tools,omitempty"` RequestMetadata metadata.Metadata `json:"request_metadata,omitempty"` ResponseMetadata metadata.Metadata `json:"response_metadata,omitempty"` // contains filtered or unexported fields }
func (*Config) AppendDependents ¶
func (*Config) AppendDependsOn ¶
func (*Config) Dependents ¶
type ContentPart ¶
type ContentPart struct { Type string `json:"type"` Text string `json:"text,omitempty"` MIMEType string `json:"mime_type,omitempty"` Data []byte `json:"data,omitempty"` }
func BinaryPart ¶
func BinaryPart(mimeType string, data []byte) ContentPart
func ParseSrcURL ¶
func ParseSrcURL(srcURL string) (ContentPart, error)
func ReasoningPart ¶
func ReasoningPart(text string) ContentPart
func TextPart ¶
func TextPart(text string) ContentPart
type DataValidateError ¶
type DataValidateError struct {
Result *gojsonschema.Result
}
func (*DataValidateError) Error ¶
func (e *DataValidateError) Error() string
type FinishReason ¶
type FinishReason uint32
const ( FinishReasonEndTurn FinishReason = iota FinishReasonMaxTokens FinishReasonStopSequence FinishReasonGuardrailIntervened FinishReasonContentFiltered )
func FinishReasonString ¶
func FinishReasonString(s string) (FinishReason, error)
FinishReasonString retrieves an enum value from the enum constants string name. Throws an error if the param is not part of the enum.
func FinishReasonValues ¶
func FinishReasonValues() []FinishReason
FinishReasonValues returns all values of the enum
func (FinishReason) IsAFinishReason ¶
func (i FinishReason) IsAFinishReason() bool
IsAFinishReason returns "true" if the value is listed in the enum definition. "false" otherwise
func (FinishReason) MarshalJSON ¶
func (i FinishReason) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaler interface for FinishReason
func (FinishReason) String ¶
func (i FinishReason) String() string
func (*FinishReason) UnmarshalJSON ¶
func (i *FinishReason) UnmarshalJSON(data []byte) error
UnmarshalJSON implements the json.Unmarshaler interface for FinishReason
type GenerateImageRequest ¶
type GenerateTextRequest ¶
type Loader ¶
type Loader struct {
// contains filtered or unexported fields
}
func (*Loader) NativeFunctions ¶
func (l *Loader) NativeFunctions(nativeFunctions ...*jsonnet.NativeFunction)
func (*Loader) PromptPathPatterns ¶
func (*Loader) TemplateFuncs ¶
func (*Loader) ValueGenerator ¶
func (l *Loader) ValueGenerator(gen ValueGenerator)
type Message ¶
type Message struct { Role string `json:"role"` Parts []ContentPart `json:"parts"` }
type MessageDecoder ¶
type MessageDecoder struct {
// contains filtered or unexported fields
}
func NewMessageDecoder ¶
func NewMessageDecoder(r io.Reader) *MessageDecoder
type MessageEncoder ¶
type MessageEncoder struct {
// contains filtered or unexported fields
}
func NewMessageEncoder ¶
func NewMessageEncoder(w io.Writer) *MessageEncoder
func (*MessageEncoder) Encode ¶
func (e *MessageEncoder) Encode(system string, messages []Message) error
func (*MessageEncoder) EncodeContentPart ¶
func (e *MessageEncoder) EncodeContentPart(part ContentPart) error
func (*MessageEncoder) EncodeMessage ¶
func (e *MessageEncoder) EncodeMessage(msg Message) error
func (*MessageEncoder) Flush ¶
func (e *MessageEncoder) Flush() error
func (*MessageEncoder) NoRole ¶
func (e *MessageEncoder) NoRole()
func (*MessageEncoder) SetBinaryOutputDir ¶
func (e *MessageEncoder) SetBinaryOutputDir(dir string)
func (*MessageEncoder) SkipReasoning ¶
func (e *MessageEncoder) SkipReasoning()
func (*MessageEncoder) TextOnly ¶
func (e *MessageEncoder) TextOnly()
type ModelProvider ¶
type ModelProvider interface { GenerateText(ctx context.Context, req *GenerateTextRequest, w ResponseWriter) error GenerateImage(ctx context.Context, req *GenerateImageRequest, w ResponseWriter) error }
func GetModelProvider ¶
func GetModelProvider(ctx context.Context, name string) (ModelProvider, error)
type ModelProviderManager ¶
type ModelProviderManager struct {
// contains filtered or unexported fields
}
func NewModelProviderManager ¶
func NewModelProviderManager() *ModelProviderManager
func WithModelProviderManager ¶
func WithModelProviderManager(ctx context.Context) (context.Context, *ModelProviderManager)
func (*ModelProviderManager) Clone ¶
func (m *ModelProviderManager) Clone() *ModelProviderManager
func (*ModelProviderManager) Exists ¶
func (m *ModelProviderManager) Exists(name string) bool
func (*ModelProviderManager) Get ¶
func (m *ModelProviderManager) Get(name string) (ModelProvider, error)
func (*ModelProviderManager) List ¶
func (m *ModelProviderManager) List() []string
func (*ModelProviderManager) Register ¶
func (m *ModelProviderManager) Register(name string, provider ModelProvider) error
func (*ModelProviderManager) Use ¶
func (m *ModelProviderManager) Use(middlewares ...func(ModelProvider) ModelProvider)
type NewAgentMuxOption ¶
type NewAgentMuxOption func(*newAgentMuxOptions)
func WithExtCodes ¶
func WithExtCodes(codes map[string]string) NewAgentMuxOption
func WithExtVars ¶
func WithExtVars(vars map[string]string) NewAgentMuxOption
func WithIncludesFS ¶
func WithIncludesFS(fsys fs.FS) NewAgentMuxOption
func WithLogger ¶
func WithLogger(logger *slog.Logger) NewAgentMuxOption
func WithNativeFunctions ¶
func WithNativeFunctions(functions ...*jsonnet.NativeFunction) NewAgentMuxOption
func WithPromptsFS ¶
func WithPromptsFS(fsys fs.FS) NewAgentMuxOption
func WithRegistry ¶
func WithRegistry(registry *Registry) NewAgentMuxOption
func WithTemplateFuncs ¶
func WithTemplateFuncs(fmap template.FuncMap) NewAgentMuxOption
type Prompt ¶
type Prompt struct {
// contains filtered or unexported fields
}
func (*Prompt) DecodeBlock ¶
func (*Prompt) PreRendered ¶
func (*Prompt) RenderBlock ¶
func (*Prompt) SetRelatedPrompts ¶
type ReasoningMirrorResponseWriter ¶
type ReasoningMirrorResponseWriter struct { ResponseWriter // contains filtered or unexported fields }
func NewReasoningMirrorResponseWriter ¶
func NewReasoningMirrorResponseWriter(w ResponseWriter, mirrors ...ResponseWriter) *ReasoningMirrorResponseWriter
func (*ReasoningMirrorResponseWriter) Finish ¶
func (w *ReasoningMirrorResponseWriter) Finish(reason FinishReason, msg string) error
func (*ReasoningMirrorResponseWriter) WritePart ¶
func (w *ReasoningMirrorResponseWriter) WritePart(parts ...ContentPart) error
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry is a registry of agents.
func DefaultRegistory ¶
func DefaultRegistory() *Registry
DefaultRegistory returns the default registry.
func (*Registry) Register ¶
func (r *Registry) Register(name string, f NewAgentFunc) error
Register registers a new agent.
func (*Registry) SetMarmaidNodeWrapper ¶
type Request ¶
type Request struct { Name string `json:"name"` Payload any `json:"payload"` Metadata metadata.Metadata `json:"metadata"` PreviousResults map[string]*Response `json:"previous_results,omitempty"` IncludeUpstream bool `json:"include_upstream,omitempty"` IncludeDownstream bool `json:"include_downstream,omitempty"` Tools ToolSet `json:"tools,omitempty"` }
func (*Request) TemplateData ¶
type Response ¶
type Response struct { Metadata metadata.Metadata `json:"metadata,omitempty"` Message Message `json:"message,omitempty"` FinishReason FinishReason `json:"finish_reason,omitempty"` FinishMessage string `json:"finish_message,omitempty"` // contains filtered or unexported fields }
type ResponseWriter ¶
type ResponseWriter interface { Metadata() metadata.Metadata WriteRole(role string) error WritePart(parts ...ContentPart) error Finish(reason FinishReason, msg string) error }
type SchemaValueGenerator ¶
type SchemaValueGenerator struct {
// contains filtered or unexported fields
}
func NewSchemaValueGenerator ¶
func NewSchemaValueGenerator(r *rand.Rand) *SchemaValueGenerator
type TextStreamingResponseWriter ¶
type TextStreamingResponseWriter struct {
// contains filtered or unexported fields
}
func NewTextStreamingResponseWriter ¶
func NewTextStreamingResponseWriter(w io.Writer) *TextStreamingResponseWriter
func (*TextStreamingResponseWriter) DumpMetadata ¶
func (w *TextStreamingResponseWriter) DumpMetadata()
func (*TextStreamingResponseWriter) Finish ¶
func (w *TextStreamingResponseWriter) Finish(reason FinishReason, msg string) error
func (*TextStreamingResponseWriter) Metadata ¶
func (w *TextStreamingResponseWriter) Metadata() metadata.Metadata
func (*TextStreamingResponseWriter) SetBinaryOutputDir ¶
func (w *TextStreamingResponseWriter) SetBinaryOutputDir(dir string)
func (*TextStreamingResponseWriter) SkipReasoning ¶
func (w *TextStreamingResponseWriter) SkipReasoning()
func (*TextStreamingResponseWriter) WritePart ¶
func (w *TextStreamingResponseWriter) WritePart(parts ...ContentPart) error
func (*TextStreamingResponseWriter) WriteRole ¶
func (w *TextStreamingResponseWriter) WriteRole(_ string) error