调用智能体并跟踪任务

使用 AI Studio SDK 向一个已选择的智能体发送文本,并保存返回的任务标识和轮次标识。后续查询、取消、恢复订阅或补充输入都使用这些标识;它们不能与工作流运行或其他任务资源混用。

任务流程

  1. 在目标工作区中选择智能体,并准备文本消息、消息标识和调用关联标识。

  2. 提交消息后,从返回内容中取得本次任务标识和轮次标识。

  3. 使用任务标识查询、取消或恢复该任务的订阅;智能体要求补充输入时,同时使用任务标识、轮次标识和答案。

消息已提交不表示任务已完成。保存这两个服务端返回的标识,并根据查询结果或流式更新决定下一步。

准备

需要的内容

在本页中的作用

已绑定目标工作区的客户端上下文

确定智能体调用所属的工作区。

智能体代码或智能体 ID

选择本次接收消息的智能体。

文本消息、消息标识和调用关联标识

提交一条可由调用方关联的消息。

提交文本消息

提交成功后,示例从响应中读取任务标识和轮次标识。保存它们,后续操作不要自行生成替代值。

func submitText(ctx context.Context, workspace *sdk.WorkspaceHandle, agentCode, messageID, prompt string, requestID any) (string, string, error) {
	agent, err := workspace.AgentByCode(agentCode)
	if err != nil {
		return "", "", err
	}
	submitted, err := agent.SendText(ctx, sdk.AgentTextMessage{
		RequestID: requestID, MessageID: messageID, Text: prompt,
	})
	if err != nil {
		return "", "", err
	}
	taskID, err := sdk.AgentA2ATaskID(submitted)
	if err != nil {
		return "", "", err
	}
	turnID, err := sdk.AgentA2ATurnID(submitted)
	if err != nil {
		return "", "", err
	}
	return taskID, turnID, nil
}
def submit_text(workspace, agent_code, message_id, prompt, request_id):
    agent = workspace.agent_by_code(agent_code)
    submitted = agent.send_text(
        sdk.AgentTextMessage(
            request_id=request_id, message_id=message_id, text=prompt
        )
    )
    task_id = sdk.agent_a2a_task_id(submitted)
    turn_id = sdk.agent_a2a_turn_id(submitted)
    return task_id, turn_id

使用返回的标识继续任务

查询、取消和恢复订阅只需要同一智能体返回的任务标识。智能体请求补充输入时,还需要同一响应中的轮次标识以及至少一项答案。

下面的示例使用上一步保存的任务标识查询当前任务。它返回的是当前协议响应,不表示任务已经完成。

func getTask(ctx context.Context, agent *sdk.AgentHandle, taskID string, requestID any) (*sdk.AgentA2AResult, error) {
	return agent.GetTask(ctx, sdk.AgentTaskRequest{
		RequestID: requestID,
		TaskID:    taskID,
	})
}
def get_task(agent, task_id, request_id):
    return agent.get_task(
        sdk.AgentTaskRequest(task_id=task_id, request_id=request_id)
    )

限制

流式发送或恢复订阅返回的是正在读取的响应。Go 调用方在读取后关闭响应体;本地停止读取不表示智能体任务已经取消。

消息和补充输入可能包含业务数据。不要将凭据、连接信息或其他敏感值写入消息、日志或错误输出。

下一步

最后更新于