Help us shape the future of Go! Take the 2026 Go Developer Survey

a2a

package
v1.11.3 Latest Latest
Warning

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

Go to latest
Published: Apr 18, 2026 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrMissingName        = types.NewError(types.ErrInvalidRequest, "agent card: missing name").WithHTTPStatus(http.StatusBadRequest).WithRetryable(false)
	ErrMissingDescription = types.NewError(types.ErrInvalidRequest, "agent card: missing description").WithHTTPStatus(http.StatusBadRequest).WithRetryable(false)
	ErrMissingURL         = types.NewError(types.ErrInvalidRequest, "agent card: missing url").WithHTTPStatus(http.StatusBadRequest).WithRetryable(false)
	ErrMissingVersion     = types.NewError(types.ErrInvalidRequest, "agent card: missing version").WithHTTPStatus(http.StatusBadRequest).WithRetryable(false)
)

代理卡验证错误(映射到 types.ErrInvalidRequest).

View Source
var (
	ErrAgentNotFound     = types.NewError(types.ErrAgentNotFound, "a2a: agent not found").WithHTTPStatus(http.StatusNotFound).WithRetryable(false)
	ErrRemoteUnavailable = types.NewError(types.ErrServiceUnavailable, "a2a: remote agent unavailable").WithHTTPStatus(http.StatusServiceUnavailable).WithRetryable(true)
	ErrAuthFailed        = types.NewError(types.ErrAuthentication, "a2a: authentication failed").WithHTTPStatus(http.StatusUnauthorized).WithRetryable(false)
	ErrInvalidMessage    = types.NewError(types.ErrInvalidRequest, "a2a: invalid message format").WithHTTPStatus(http.StatusBadRequest).WithRetryable(false)
)

A2A 协议错误.

View Source
var (
	ErrMessageMissingID        = types.NewError(types.ErrInvalidRequest, "a2a message: missing id").WithHTTPStatus(http.StatusBadRequest).WithRetryable(false)
	ErrMessageInvalidType      = types.NewError(types.ErrInvalidRequest, "a2a message: invalid type").WithHTTPStatus(http.StatusBadRequest).WithRetryable(false)
	ErrMessageMissingFrom      = types.NewError(types.ErrInvalidRequest, "a2a message: missing from").WithHTTPStatus(http.StatusBadRequest).WithRetryable(false)
	ErrMessageMissingTo        = types.NewError(types.ErrInvalidRequest, "a2a message: missing to").WithHTTPStatus(http.StatusBadRequest).WithRetryable(false)
	ErrMessageMissingTimestamp = types.NewError(types.ErrInvalidRequest, "a2a message: missing timestamp").WithHTTPStatus(http.StatusBadRequest).WithRetryable(false)
)

A2A 信件验证错误(映射到 types.ErrInvalidRequest).

View Source
var (
	ErrTaskNotReady = types.NewError(types.ErrTaskNotReady, "a2a: task not ready").WithHTTPStatus(http.StatusAccepted).WithRetryable(true)
	ErrTaskNotFound = types.NewError(types.ErrTaskNotFound, "a2a: task not found").WithHTTPStatus(http.StatusNotFound).WithRetryable(false)
)

A2A 客户端错误.

Functions

This section is empty.

Types

type A2AClient

type A2AClient interface {
	// 发现从远程特工处取回特工卡
	Discover(ctx context.Context, url string) (*AgentCard, error)
	// 发送消息同步并等待回复.
	Send(ctx context.Context, msg *A2AMessage) (*A2AMessage, error)
	// SendAsync 同步发送消息并返回任务ID.
	SendAsync(ctx context.Context, msg *A2AMessage) (string, error)
	// GetResult通过任务ID检索一个同步任务的结果.
	GetResult(ctx context.Context, taskID string) (*A2AMessage, error)
}

A2AClient定义了A2A客户端操作的接口.

type A2AMessage

type A2AMessage struct {
	// ID是此消息的唯一标识符 。
	ID string `json:"id"`
	// 类型表示信件类型(任务,结果,出错,状态,取消).
	Type A2AMessageType `json:"type"`
	// 从是发件人的标识符.
	From string `json:"from"`
	// 为接收代理的识别符.
	To string `json:"to"`
	// 有效载荷包含消息数据.
	Payload any `json:"payload"`
	// 时间戳是消息创建时.
	Timestamp time.Time `json:"timestamp"`
	// PresidentTo 是此回复信件的ID( 可选) 。
	ReplyTo string `json:"reply_to,omitempty"`
}

A2AMessage代表了代理对代理通信的A2A标准消息.

func FromJSON

func FromJSON(data []byte) (*A2AMessage, error)

JSON将JSON字节中的信息解析出来.

func NewA2AMessage

func NewA2AMessage(msgType A2AMessageType, from, to string, payload any) *A2AMessage

新建A2 AMessage创建了一个新的A2AMessage,并带有生成的ID和当前时间戳.

func NewCancelMessage

func NewCancelMessage(from, to string, taskID string) *A2AMessage

NewCancelMessage创建了新的取消消息.

func NewErrorMessage

func NewErrorMessage(from, to string, payload any, replyTo string) *A2AMessage

NewErrorMessage 创建新错误消息以响应任务 。

func NewResultMessage

func NewResultMessage(from, to string, payload any, replyTo string) *A2AMessage

NewResultMessage在回复任务时创建了一个新的结果信息.

func NewStatusMessage

func NewStatusMessage(from, to string, payload any, replyTo string) *A2AMessage

新状态消息创建新状态更新消息 。

func NewTaskMessage

func NewTaskMessage(from, to string, payload any) *A2AMessage

NewTaskMessage 创建了新任务请求消息.

func ParseA2AMessage

func ParseA2AMessage(data []byte) (*A2AMessage, error)

ParseA2AMessage将JSON数据分解为A2AMessage并验证.

func (*A2AMessage) Clone

func (m *A2AMessage) Clone() *A2AMessage

克隆人创建了消息的深层拷贝.

func (*A2AMessage) CreateReply

func (m *A2AMessage) CreateReply(msgType A2AMessageType, payload any) *A2AMessage

CreatReply 创建此信件的回覆信件 。

func (*A2AMessage) IsCancel

func (m *A2AMessage) IsCancel() bool

IsCancel 检查是否是取消消息 。

func (*A2AMessage) IsError

func (m *A2AMessage) IsError() bool

IsError 检查是否为错误消息 。

func (*A2AMessage) IsReply

func (m *A2AMessage) IsReply() bool

IsReply 检查此信件是否是对另一个信件的回复 。

func (*A2AMessage) IsResult

func (m *A2AMessage) IsResult() bool

是否是结果信息 。

func (*A2AMessage) IsStatus

func (m *A2AMessage) IsStatus() bool

如果这是状态消息, 请检查状态 。

func (*A2AMessage) IsTask

func (m *A2AMessage) IsTask() bool

如果这是任务请求信件, 请检查任务 。

func (*A2AMessage) MarshalJSON

func (m *A2AMessage) MarshalJSON() ([]byte, error)

JSON警长执行JSON。 A2AMessage的元帅

func (*A2AMessage) ToJSON

func (m *A2AMessage) ToJSON() ([]byte, error)

ToJSON将消息序列化给JSON字节.

func (*A2AMessage) UnmarshalJSON

func (m *A2AMessage) UnmarshalJSON(data []byte) error

UnmarshalJSON 执行json。 A2AMessage的解马沙勒.

func (*A2AMessage) Validate

func (m *A2AMessage) Validate() error

验证 A2AMessage 是否有所有所需的字段和有效值 。

type A2AMessageType

type A2AMessageType string

A2AMessageType代表A2A消息的类型.

const (
	// A2AMessage TypeTask 表示任务请求消息 。
	A2AMessageTypeTask A2AMessageType = "task"
	// A2AMessageTypeResult表示任务结果消息.
	A2AMessageTypeResult A2AMessageType = "result"
	// A2AMessage TypeError 表示错误消息 。
	A2AMessageTypeError A2AMessageType = "error"
	// A2AMessage Type Status 表示状态更新消息.
	A2AMessageTypeStatus A2AMessageType = "status"
	// A2AMessage TypeCancel 表示任务取消消息.
	A2AMessageTypeCancel A2AMessageType = "cancel"
)

func (A2AMessageType) IsValid

func (t A2AMessageType) IsValid() bool

IsValid 检查信件类型是否为有效的 A2A 信件类型 。

func (A2AMessageType) String

func (t A2AMessageType) String() string

字符串返回消息类型的字符串表示。

type A2AServer

type A2AServer interface {
	// 注册代理在服务器上注册本地代理 。
	RegisterAgent(agent agent.Agent) error
	// Unregister Agent 从服务器中删除一个代理 。
	UnregisterAgent(agentID string) error
	// ServiHTTP 执行 http. 服务A2A请求的掌上电脑
	ServeHTTP(w http.ResponseWriter, r *http.Request)
	// Get AgentCard为注册代理人取回代理卡.
	GetAgentCard(agentID string) (*AgentCard, error)
}

A2AServer定义了A2A服务器操作的接口.

type AgentCard

type AgentCard struct {
	// 名称是此代理的唯一标识符 。
	Name string `json:"name"`
	// 描述提供了一种人能读取的关于该剂目的的描述.
	Description string `json:"description"`
	// URL是能够到达此代理的终点 。
	URL string `json:"url"`
	// 版本表示代理的版本.
	Version string `json:"version"`
	// 能力列出这个代理提供的能力.
	Capabilities []Capability `json:"capabilities"`
	// 输入Schema定义了代理商的预期输入格式的JSON Schema.
	InputSchema *structured.JSONSchema `json:"input_schema,omitempty"`
	// OutsionSchema定义了代理输出格式的JSON Schema.
	OutputSchema *structured.JSONSchema `json:"output_schema,omitempty"`
	// 工具列出这个代理可以使用或曝光的工具.
	Tools []ToolDefinition `json:"tools,omitempty"`
	// 元数据包含额外的可扩展性的密钥值对.
	Metadata map[string]string `json:"metadata,omitempty"`
}

AgentCard代表一个描述代理能力和元数据的A2A代理卡. 它遵循了Google A2A关于特工发现和互操作性的规格.

func NewAgentCard

func NewAgentCard(name, description, url, version string) *AgentCard

NewAgentCard创建了具有所需字段的新AgentCard.

func (*AgentCard) AddCapability

func (c *AgentCard) AddCapability(name, description string, capType CapabilityType) *AgentCard

添加能力在代理卡上增加了一个能力.

func (*AgentCard) AddTool

func (c *AgentCard) AddTool(name, description string, parameters *structured.JSONSchema) *AgentCard

AddTool在代理卡上添加了工具定义.

func (*AgentCard) GetCapability

func (c *AgentCard) GetCapability(name string) *Capability

Get Capability 按名称检索一个能力.

func (*AgentCard) GetMetadata

func (c *AgentCard) GetMetadata(key string) (string, bool)

GetMetadata 按键检索元数据值 。

func (*AgentCard) GetTool

func (c *AgentCard) GetTool(name string) *ToolDefinition

GetTool 检索一个工具名称定义 。

func (*AgentCard) HasCapability

func (c *AgentCard) HasCapability(name string) bool

如果代理人有特定的能力,则进行能力检查。

func (*AgentCard) HasTool

func (c *AgentCard) HasTool(name string) bool

HasTool检查代理人是否有特定的名称工具.

func (*AgentCard) SetInputSchema

func (c *AgentCard) SetInputSchema(schema *structured.JSONSchema) *AgentCard

SetInputSchema为代理卡设置输入方案.

func (*AgentCard) SetMetadata

func (c *AgentCard) SetMetadata(key, value string) *AgentCard

SetMetadata 设置了元数据密钥值对.

func (*AgentCard) SetOutputSchema

func (c *AgentCard) SetOutputSchema(schema *structured.JSONSchema) *AgentCard

SetOutputSchema为代理卡设置输出计划.

func (*AgentCard) Validate

func (c *AgentCard) Validate() error

验证AgentCard是否拥有所有需要的字段 。

type AgentCardGenerator

type AgentCardGenerator struct {
	// contains filtered or unexported fields
}

AgentCardGenerator通过代理配置生成代理卡.

func NewAgentCardGenerator

func NewAgentCardGenerator() *AgentCardGenerator

新代理CardGenerator创建了新的代理CardGenerator.

func NewAgentCardGeneratorWithVersion

func NewAgentCardGeneratorWithVersion(version string) *AgentCardGenerator

NewAgentCardGenerator With Version 创建了自定义默认版本的新AgentCardGenerator.

func (*AgentCardGenerator) Generate

func (g *AgentCardGenerator) Generate(config AgentConfigProvider, baseURL string) *AgentCard

从代理配置和基址生成 AgentCard 。 碱基URL应该是能到达剂的终点.

func (*AgentCardGenerator) GenerateWithTools

func (g *AgentCardGenerator) GenerateWithTools(config AgentConfigProvider, baseURL string, toolProvider ToolSchemaProvider) *AgentCard

生成 With Tools 创建了 AgentCard 从 ToolSchema Provider 生成工具定义.

type AgentConfigProvider

type AgentConfigProvider interface {
	ID() string
	Name() string
	Type() AgentType
	Description() string
	Tools() []string
	Metadata() map[string]string
}

Agent Config Provider 定义访问代理配置的接口. 这使得生成器能够配合任何代理执行.

type AgentType

type AgentType string

AgentType代表着特工的类型.

type AsyncResponse

type AsyncResponse struct {
	TaskID        string `json:"task_id"`
	Status        string `json:"status"`
	Message       string `json:"message,omitempty"`
	EstimatedTime int    `json:"estimated_time,omitempty"` // seconds
}

AsyncResponse代表了从一个Async消息提交中获取的响应.

type Capability

type Capability struct {
	// 名称是此能力的唯一标识符 。
	Name string `json:"name"`
	// 描述为人们提供了这种能力的可读性描述.
	Description string `json:"description"`
	// 类型表示能力类型(任务,查询,流).
	Type CapabilityType `json:"type"`
}

能力在A2A协议中定义了代理的能力.

type CapabilityType

type CapabilityType string

能力 类型代表一种代理人提供的能力类型。

const (
	// 能力TypeTask表示代理可以执行任务.
	CapabilityTypeTask CapabilityType = "task"
	// 能力 TypeQuery表示代理可以回答询问.
	CapabilityTypeQuery CapabilityType = "query"
	// 能力 TypeStream 表示代理支持流响应.
	CapabilityTypeStream CapabilityType = "stream"
)

type ClientConfig

type ClientConfig struct {
	// 超时是HTTP请求的默认超时.
	Timeout time.Duration
	// RetryCount 是失败请求的重试次数 。
	RetryCount int
	// RetryDelay是重试之间的延迟.
	RetryDelay time.Duration
	// 信头是请求中要包含的额外信头 。
	Headers map[string]string
	// AgentID 是本地代理提出请求的标识符 。
	AgentID string
}

客户端Config为A2A客户端持有配置.

func DefaultClientConfig

func DefaultClientConfig() *ClientConfig

默认 ClientConfig 返回有合理默认的客户端Config 。

type HTTPClient

type HTTPClient struct {
	// contains filtered or unexported fields
}

HTTPClient是A2AClient使用HTTP的默认执行.

func NewHTTPClient

func NewHTTPClient(config *ClientConfig) *HTTPClient

NewHTTPClient以给定的配置创建了新的HTTPClient.

func (*HTTPClient) CleanupExpiredTasks

func (c *HTTPClient) CleanupExpiredTasks(maxAge time.Duration) int

清理已过期 任务会删除比指定时间长的任务 。

func (*HTTPClient) ClearCache

func (c *HTTPClient) ClearCache()

ClearCache 清除代理卡缓存 。

func (*HTTPClient) ClearTaskRegistry

func (c *HTTPClient) ClearTaskRegistry()

ClearTaskRegistry 清除任务注册 。

func (*HTTPClient) Discover

func (c *HTTPClient) Discover(ctx context.Context, url string) (*AgentCard, error)

发现从给定的 URL 的远程代理取回 AgentCard 。 URL应该是代理商的基础URL(例如"https://agent.example.com"). 代理卡预计在"/. well-known/agent.json"提供.

func (*HTTPClient) GetResult

func (c *HTTPClient) GetResult(ctx context.Context, taskID string) (*A2AMessage, error)

GetResult通过任务ID检索一个同步任务的结果. 如果任务仍在处理中, 返回 ErrTask NotReady 。 如果任务ID没有注册, 返回 ErrTask NotFound 。

func (*HTTPClient) GetResultFromAgent

func (c *HTTPClient) GetResultFromAgent(ctx context.Context, agentURL, taskID string) (*A2AMessage, error)

GetResultFrom Agent从特定代理中获取了某项协同任务的结果.

func (*HTTPClient) RegisterTask

func (c *HTTPClient) RegisterTask(taskID, agentURL string)

注册任务用代理 URL 手动注册任务ID 。 当任务在 SendAsync 之外创建时, 这一点是有用的 。

func (*HTTPClient) Send

func (c *HTTPClient) Send(ctx context.Context, msg *A2AMessage) (*A2AMessage, error)

发送消息同步并等待回复. 消息发送到消息"to field"中指定的代理.

func (*HTTPClient) SendAsync

func (c *HTTPClient) SendAsync(ctx context.Context, msg *A2AMessage) (string, error)

SendAsync 同步发送消息并返回任务ID. 呼叫者可以使用GetResult对结果进行投票.

func (*HTTPClient) SetHeader

func (c *HTTPClient) SetHeader(key, value string)

Setheader 为所有请求设置自定义标题 。

func (*HTTPClient) SetTimeout

func (c *HTTPClient) SetTimeout(timeout time.Duration)

SetTimeout 设置 HTTP 客户端超时.

func (*HTTPClient) UnregisterTask

func (c *HTTPClient) UnregisterTask(taskID string)

未注册的任务从登记簿中删除 。

type HTTPServer

type HTTPServer struct {
	// contains filtered or unexported fields
}

HTTPServer是A2AServer使用HTTP的默认执行. 支持任务持续在服务重启后恢复 。

func NewHTTPServer

func NewHTTPServer(config *ServerConfig) *HTTPServer

NewHTTPServer用给定的配置创建了新的HTTPServer.

func NewHTTPServerWithTaskStore

func NewHTTPServerWithTaskStore(config *ServerConfig, taskStore persistence.TaskStore) *HTTPServer

NewHTTPServer With TaskStore创建了新的HTTPServer,任务持续.

func (*HTTPServer) AgentCount

func (s *HTTPServer) AgentCount() int

Agent Count返回注册代理的数量.

func (*HTTPServer) CancelTask

func (s *HTTPServer) CancelTask(taskID string) error

取消任务取消一个同步任务 。

func (*HTTPServer) CleanupExpiredTasks

func (s *HTTPServer) CleanupExpiredTasks(maxAge time.Duration) int

清理已过期 任务删除超过指定期限的已完成或失败的任务 。

func (*HTTPServer) GetAgentCard

func (s *HTTPServer) GetAgentCard(agentID string) (*AgentCard, error)

Get AgentCard为注册代理人取回代理卡.

func (*HTTPServer) GetTaskStatus

func (s *HTTPServer) GetTaskStatus(taskID string) (string, error)

GetTaskStatus 返回同步任务状态 。

func (*HTTPServer) ListAgents

func (s *HTTPServer) ListAgents() []string

ListAgents返回注册代理ID列表.

func (*HTTPServer) RecoverTasks

func (s *HTTPServer) RecoverTasks(ctx context.Context) error

RecoverTasks在服务重启后从持续存储中恢复任务.

func (*HTTPServer) RegisterAgent

func (s *HTTPServer) RegisterAgent(ag agent.Agent) error

注册代理在服务器上注册本地代理 。

func (*HTTPServer) ServeHTTP

func (s *HTTPServer) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServiHTTP 执行 http. 服务A2A请求的掌上电脑

func (*HTTPServer) SetTaskStore

func (s *HTTPServer) SetTaskStore(store persistence.TaskStore)

SetTaskStore 设置任务存储,用于持久性(依赖性注射).

func (*HTTPServer) StartCleanupLoop

func (s *HTTPServer) StartCleanupLoop(ctx context.Context, interval time.Duration, maxAge time.Duration)

StartCleanupLoop 启动背景goroutine以定期清理已过期的任务 。

func (*HTTPServer) TaskStats

func (s *HTTPServer) TaskStats(ctx context.Context) (*persistence.TaskStoreStats, error)

TaskStats 返回关于任务存储的统计数据 。

func (*HTTPServer) UnregisterAgent

func (s *HTTPServer) UnregisterAgent(agentID string) error

Unregister Agent 从服务器中删除一个代理 。

type ServerConfig

type ServerConfig struct {
	// BaseURL 是此服务器可访问的基础 URL 。
	BaseURL string
	// 默认代理ID是在没有特定代理目标时使用的代理ID.
	DefaultAgentID string
	// 请求超时是处理请求的超时.
	RequestTimeout time.Duration
	// StrictRouting 启用严格路由:目标代理不存在时直接返回错误,不回退默认代理。
	StrictRouting bool
	// 启用 Auth 允许对收到的请求进行认证 。
	EnableAuth bool
	// AuthToken 是预期的认证符( 如果 EullAuth 是真实的) 。
	AuthToken string
	// logger 是日志实例 。
	Logger *zap.Logger
}

服务器Config持有A2A服务器的配置.

func DefaultServerConfig

func DefaultServerConfig() *ServerConfig

默认ServerConfig 返回带有合理默认的服务器Config 。

type SimpleAgentConfig

type SimpleAgentConfig struct {
	AgentID          string
	AgentName        string
	AgentType        AgentType
	AgentDescription string
	AgentTools       []string
	AgentMetadata    map[string]string
}

SimpleAgentConfig是AgentConfig Provider的简单执行,用于测试和基本使用.

func (*SimpleAgentConfig) Description

func (c *SimpleAgentConfig) Description() string

描述返回代理描述 。

func (*SimpleAgentConfig) ID

func (c *SimpleAgentConfig) ID() string

ID返回代理ID.

func (*SimpleAgentConfig) Metadata

func (c *SimpleAgentConfig) Metadata() map[string]string

元数据返回代理元数据 。

func (*SimpleAgentConfig) Name

func (c *SimpleAgentConfig) Name() string

名称返回代理名称 。

func (*SimpleAgentConfig) Tools

func (c *SimpleAgentConfig) Tools() []string

工具返回工具名称列表 。

func (*SimpleAgentConfig) Type

func (c *SimpleAgentConfig) Type() AgentType

类型返回代理类型。

type ToolDefinition

type ToolDefinition struct {
	// 名称是此工具的唯一标识符 。
	Name string `json:"name"`
	// 描述提供了一种人类可以读取的描述,说明这个工具是做什么的.
	Description string `json:"description"`
	// 参数定义了该工具的输入参数的JSON Schema.
	Parameters *structured.JSONSchema `json:"parameters"`
	// Version 是工具的版本标识符.
	Version string `json:"version,omitempty"`
}

Tool Definition定义了代理人可以使用或曝光的工具.

type ToolSchemaProvider

type ToolSchemaProvider interface {
	GetAllowedTools(agentID string) []types.ToolSchema
}

ToolSchema Provider为一代理提供了工具计划.

Jump to

Keyboard shortcuts

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