core

package
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2025 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

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 ClearTaskInternalTools(t task.Task)

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 (c *CommunicationManager) RegisterTaskSignalHandler(t task.Task,
	sig transport.Signal, cb func(task.Task, []byte) error)

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 (c *CommunicationManager) SendOutgoingRPCResponse(t task.Task, id int64,
	result []byte) error

func (*CommunicationManager) SendOutgoingRPCResponseError

func (c *CommunicationManager) SendOutgoingRPCResponseError(t task.Task, id int64, code int,
	msg string) error

func (*CommunicationManager) SendOutgoingRPCSignal

func (c *CommunicationManager) SendOutgoingRPCSignal(t task.Task, signal transport.Signal,
	data []byte) error

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

func (h *HostCalls) RegisterHostCall(hc *HostCall) error

func (*HostCalls) Run

func (h *HostCalls) Run()

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 SignalCallbacks

type SignalCallbacks map[transport.Signal]func(task.Task, []byte) error

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 ToolId

type ToolId uint16

type ToolParam

type ToolParam struct {
	Ptype       string
	Description string
	Required    bool
}

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)

type ToolType

type ToolType int
const (
	ToolType_Invalid ToolType = iota
	ToolType_Internal
	ToolType_Builtin
	ToolType_Normal
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL