Documentation
¶
Index ¶
- Constants
- Variables
- func ClearTaskInternalTools(t task.Task)
- func RegisterBuiltinTool(tool ToolRegistry) error
- func RegisterStreamClass(r StreamClass)
- func UnregisterBuiltinTool(id BuiltinToolID)
- func UnregisterStreamClass(name string)
- type APIEndpointInfo
- type BuiltInToolCbFunc
- type BuiltinToolID
- type CommunicationManager
- func (c *CommunicationManager) CleanupTask(t task.Task)
- func (c *CommunicationManager) GetIncomingRequest() *ReqChanData
- func (c *CommunicationManager) GetIncomingResponse() *RespChanData
- func (c *CommunicationManager) InitializeTaskData(t task.Task) error
- func (c *CommunicationManager) RegisterTaskSignalHandler(t task.Task, sig transport.Signal, cb func(task.Task, []byte) error)
- func (c *CommunicationManager) SendOutgoingNotificationEvent(t task.Task, name string, etype stream.NotificationEventType, data []byte, ...) error
- func (c *CommunicationManager) SendOutgoingRPCRequest(t task.Task, method transport.Method, req_buffer []byte) (*transport.TransportResponse, error)
- func (c *CommunicationManager) SendOutgoingRPCRequestCallback(t task.Task, id int64, method transport.Method, req_buffer []byte, ...) error
- func (c *CommunicationManager) SendOutgoingRPCResponse(t task.Task, id int64, result []byte) error
- func (c *CommunicationManager) SendOutgoingRPCResponseError(t task.Task, id int64, code int, msg string) error
- func (c *CommunicationManager) SendOutgoingRPCSignal(t task.Task, signal transport.Signal, data []byte) error
- func (c *CommunicationManager) UnregisterTaskSignalCallback(t task.Task, sig transport.Signal)
- type HostCall
- type HostCallHandler
- type HostCalls
- type InternalToolID
- type InvocationInfo
- type OpenAIFunctionType
- type ReqChanData
- type RequestCallback
- type RespChanData
- type SignalCallbacks
- type StreamBiChannel
- type StreamClass
- type StreamEventType
- type StreamFunction
- type ToolId
- type ToolParam
- type ToolRegistry
- type ToolType
Constants ¶
View Source
const ( BuiltinToolID_Invalid = BuiltinToolID(tool.BuiltinToolIDInvalid) BuiltinToolID_Datetime = BuiltinToolID(tool.BuiltinToolIDDatetime) BuiltinToolID_Sleep = BuiltinToolID(tool.BuiltinToolIDSleep) BuiltinToolID_SearchContactEmail = BuiltinToolID(tool.BuiltinToolIDSearchContactEmail) // email tools BuiltinToolID_ListOpenEmails = BuiltinToolID(tool.BuiltinToolIDListOpenEmails) BuiltinToolID_ComposeEmail = BuiltinToolID(tool.BuiltinToolIDComposeEmail) BuiltinToolID_SendEmailDraftWindow = BuiltinToolID(tool.BuiltinToolIDSendEmailDraftWindow) // mouse tools BuiltinToolID_MouseRightClick = BuiltinToolID(tool.BuiltinToolIDMouseRightClick) BuiltinToolID_MouseLeftClick = BuiltinToolID(tool.BuiltinToolIDMouseLeftClick) // phone tools BuiltinToolID_PhoneCall = BuiltinToolID(tool.BuiltinToolIDPhoneCall) // screen tools BuiltinToolID_FullScreenshot = BuiltinToolID(tool.BuiltinToolIDFullScreenshot) // web tools BuiltinToolID_OpenURL = BuiltinToolID(tool.BuiltinToolIDOpenURL) BuiltinToolID_ScrollDown = BuiltinToolID(tool.BuiltinToolIDScrollDown) BuiltinToolID_ScrollUp = BuiltinToolID(tool.BuiltinToolIDScrollUp) BuiltinToolID_PageDown = BuiltinToolID(tool.BuiltinToolIDPageDown) BuiltinToolID_PageUp = BuiltinToolID(tool.BuiltinToolIDPageUp) BuiltinToolID_WebScreenshot = BuiltinToolID(tool.BuiltinToolIDWebScreenshot) BuiltinToolID_Max = BuiltinToolID(tool.BuiltinToolIDMax) )
Variables ¶
View Source
var ( OpenAIBase = "https://api.openai.com/v1" GaiaToolLlamaGroqBase = "https://llamatool.us.gaianet.network/v1" GaiaToolLlama70BBase = "https://llama70b.gaia.domains/v1" GaiaToolLlama8BBase = "https://llama8b.gaia.domains/v1" GaiaToolLlama3BBase = "https://llama3b.gaia.domains/v1" GaiaToolQWen72BBase = "https://qwen72b.gaia.domains/v1" GaiaQWen7BBase = "https://qwen7b.gaia.domains/v1" GaiaWhisperBase = "https://whisper.gaia.domains/v1" DeepSeekBase = "https://api.deepseek.com" )
View Source
var ( APIEndpointMap = map[OpenAIFunctionType][]APIEndpointInfo{ OpenAIFunctionTypeChatWithTools: { { Name: "deepseek-toolchat", Model: "deepseek-chat", Base: &DeepSeekBase, APIKeyInEnv: "DEEPSEEK_API_KEY", Url: "/chat/completions", }, { Name: "openai-toolchat", Model: "gpt-4o", Base: &OpenAIBase, APIKeyInEnv: "OPENAI_API_KEY", Url: "/chat/completions", }, { Name: "qwen-toolchat-72b", Model: "qwen", Base: &GaiaToolQWen72BBase, APIKey: "gaia", Url: "/chat/completions", }, { Name: "llama-toolchat-70b", Model: "llama", Base: &GaiaToolLlama70BBase, APIKey: "gaia", Url: "/chat/completions", }, { Name: "llama-toolchat", Model: "llama", Base: &GaiaToolLlamaGroqBase, APIKey: "gaia", Url: "/chat/completions", }, { Name: "llama-toolchat-8b", Model: "llama", Base: &GaiaToolLlama8BBase, APIKey: "gaia", Url: "/chat/completions", }, { Name: "llama-toolchat-3b", Model: "llama", Base: &GaiaToolLlama3BBase, APIKey: "gaia", Url: "/chat/completions", }, }, OpenAIFunctionTypeChatOnly: { { Name: "openai-chat", Model: "gpt-4o", Base: &OpenAIBase, APIKeyInEnv: "OPENAI_API_KEY", Url: "/chat/completions"}, { Name: "llama-chat", Model: "llama", Base: &GaiaToolLlama8BBase, APIKey: "gaia", Url: "/chat/completions", }, }, OpenAIFunctionTypeEmbeddings: { { Name: "openai-embed", Model: "text-embedding-ada-002", Base: &OpenAIBase, APIKeyInEnv: "OPENAI_API_KEY", Url: "/embeddings", }, { Name: "nomic-embed", Model: "nomic-embed", Base: &GaiaToolLlama8BBase, APIKey: "gaia", Url: "/embeddings", }, }, OpenAIFunctionTypeTextToSpeech: { { Name: "openai-tts", Model: "tts-1", Base: &OpenAIBase, APIKeyInEnv: "OPENAI_API_KEY", Url: "/audio/speech", }, }, OpenAIFunctionTypeImageGeneration: { { Name: "openai-genimage", Model: "dall-e-3", Base: &OpenAIBase, APIKeyInEnv: "OPENAI_API_KEY", Url: "/images/generations", }, }, OpenAIFunctionTypeASR: { { Name: "gaia-whisper", Model: "whisper", Base: &GaiaWhisperBase, APIKey: "gaia", Url: "/audio/transcriptions", }, { Name: "openai-whisper", Model: "whisper-1", Base: &OpenAIBase, APIKeyInEnv: "OPENAI_API_KEY", Url: "/audio/transcriptions", }, }, } )
View Source
var ResponseTimeout = 5 * time.Minute
Functions ¶
func ClearTaskInternalTools ¶
func RegisterBuiltinTool ¶
func RegisterBuiltinTool(tool ToolRegistry) error
func RegisterStreamClass ¶
func RegisterStreamClass(r StreamClass)
func UnregisterBuiltinTool ¶
func UnregisterBuiltinTool(id BuiltinToolID)
func UnregisterStreamClass ¶
func UnregisterStreamClass(name string)
Types ¶
type APIEndpointInfo ¶
type APIEndpointInfo struct {
Name string `json:"name"`
Model string `json:"model"`
Base *string `json:"base"`
APIKey string `json:"apikey"` // used if APIKeyInEnv is empty
APIKeyInEnv string `json:"apikey_in_env"` // if not empty, the API key is in env var
Url string `json:"url"`
}
func GetAPIEndpointInfo ¶
func GetAPIEndpointInfo(ft OpenAIFunctionType, modelOrName string) []APIEndpointInfo
type BuiltInToolCbFunc ¶
type BuiltInToolCbFunc func(inv *InvocationInfo, args interface{}) (interface{}, error)
type BuiltinToolID ¶
type BuiltinToolID ToolId
type CommunicationManager ¶
type CommunicationManager struct {
StreamBiChannels map[task.Task]map[int32]StreamBiChannel
// contains filtered or unexported fields
}
communication manager for hostcalls and guest responses
func NewCommunicationManager ¶
func NewCommunicationManager() *CommunicationManager
func (*CommunicationManager) CleanupTask ¶
func (c *CommunicationManager) CleanupTask(t task.Task)
func (*CommunicationManager) GetIncomingRequest ¶
func (c *CommunicationManager) GetIncomingRequest() *ReqChanData
func (*CommunicationManager) GetIncomingResponse ¶
func (c *CommunicationManager) GetIncomingResponse() *RespChanData
func (*CommunicationManager) InitializeTaskData ¶
func (c *CommunicationManager) InitializeTaskData(t task.Task) error
func (*CommunicationManager) RegisterTaskSignalHandler ¶
func (*CommunicationManager) SendOutgoingNotificationEvent ¶
func (c *CommunicationManager) SendOutgoingNotificationEvent(t task.Task, name string, etype stream.NotificationEventType, data []byte, final bool) error
func (*CommunicationManager) SendOutgoingRPCRequest ¶
func (c *CommunicationManager) SendOutgoingRPCRequest(t task.Task, method transport.Method, req_buffer []byte) (*transport.TransportResponse, error)
users need to specify the id in the request req_buffer is the serialized transport.TransportRequest
func (*CommunicationManager) SendOutgoingRPCRequestCallback ¶
func (c *CommunicationManager) SendOutgoingRPCRequestCallback(t task.Task, id int64, method transport.Method, req_buffer []byte, cb func(*transport.TransportResponse) error) error
req_buffer is
func (*CommunicationManager) SendOutgoingRPCResponse ¶
func (*CommunicationManager) SendOutgoingRPCResponseError ¶
func (*CommunicationManager) SendOutgoingRPCSignal ¶
func (*CommunicationManager) UnregisterTaskSignalCallback ¶
func (c *CommunicationManager) UnregisterTaskSignalCallback(t task.Task, sig transport.Signal)
type HostCall ¶
type HostCall struct {
NameID transport.Method
Handler HostCallHandler
}
type HostCallHandler ¶
type HostCallHandler func(inv *InvocationInfo, args []byte) ([]byte, error)
type HostCalls ¶
type HostCalls struct {
// map of hostcalls
HCMap map[transport.Method]HostCallHandler
CommMgr *CommunicationManager
}
func NewHostCalls ¶
func NewHostCalls(commMgr *CommunicationManager) *HostCalls
func (*HostCalls) RegisterHostCall ¶
type InternalToolID ¶
type InternalToolID ToolId
func RegisterTaskInternalTool ¶
func RegisterTaskInternalTool(t task.Task, tool ToolRegistry) (InternalToolID, error)
type InvocationInfo ¶
type InvocationInfo struct {
Task task.Task
CommMgr *CommunicationManager
RespChan chan task.Message // channel to send response to client during streaming
}
invokation info
type OpenAIFunctionType ¶
type OpenAIFunctionType int
const ( OpenAIFunctionTypeChatWithTools OpenAIFunctionType = iota OpenAIFunctionTypeChatOnly OpenAIFunctionTypeEmbeddings OpenAIFunctionTypeTextToSpeech OpenAIFunctionTypeASR OpenAIFunctionTypeImageGeneration )
type ReqChanData ¶
type ReqChanData struct {
Req *transport.TransportRequest
InvInfo *InvocationInfo
}
type RequestCallback ¶
type RequestCallback func(resp *transport.TransportResponse) error
type RespChanData ¶
type RespChanData struct {
Resp *transport.TransportResponse
InvInfo *InvocationInfo
}
type StreamBiChannel ¶
type StreamBiChannel interface {
StreamId() int32
GetInvocationInfo() *InvocationInfo
Stop()
WriteStreamDataForHost(data []byte)
WriteNotificationToTask(name string, ty stream.NotificationEventType,
data []byte, final bool)
WriteOperationToTask(name string, ty stream.OperationType,
data []byte, final bool)
WriteRawToTask(data []byte, final bool)
Flush() error
}
func NewStreamBiChannel ¶
func NewStreamBiChannel(inv *InvocationInfo, streamId int32, className string) (StreamBiChannel, error)
type StreamClass ¶
type StreamClass interface {
Name() string
GetStreamFunction(name string) StreamFunction
RegisterStreamFunction(r StreamFunction) error
UnregisterStreamFunction(name string) error
}
func NewStreamClass ¶
func NewStreamClass(name string) StreamClass
type StreamEventType ¶
type StreamEventType int
const ( StreamEventTypeOperation StreamEventType = iota StreamEventTypeNotification )
type StreamFunction ¶
type StreamFunction interface {
Name() string
Operation(sc StreamBiChannel, op stream.OperationType, data []byte, final bool) error
Notification(sc StreamBiChannel, op stream.NotificationEventType, data []byte, final bool) error
Raw(sc StreamBiChannel, data []byte, final bool) error
}
type ToolRegistry ¶
type ToolRegistry struct {
ToolType ToolType
Name string
Id BuiltinToolID
Description string
Params map[string]ToolParam
CbIdInternal InternalToolID
CbBuiltIn BuiltInToolCbFunc
}
func GetBuiltinTool ¶
func GetBuiltinTool(id BuiltinToolID) (ToolRegistry, bool)
func GetTaskInternalTool ¶
func GetTaskInternalTool(t task.Task, tid BuiltinToolID) (ToolRegistry, bool)
func GetTaskInternalToolByName ¶
func GetTaskInternalToolByName(t task.Task, name string) (ToolRegistry, bool)
Click to show internal directories.
Click to hide internal directories.