[A2A协议与实现-07]如何将一个MAF Agent发布为A2A服务[HTTP-JSON]
A2A协议本身并未绑定具体的传入协议,上一篇主要介绍如何将MAF的Agent以JSON-RPC协议发布为A2A服务,这篇文章我们采用相同的形式介绍基于单纯HTTP+JSON的实现。两者的区别很简单,前者将请求和响应消息包装进成符合JSON-RPC协议的封套,并使用JSON-RPC Method来标识具体的操作,后者直接以请求和响应消息的JSON文本作为传输的内容,通过为每个操作绑定一个固定的路径来区分。
1. 构建A2A服务器
上一篇定义了辅助方法StartA2aServerAsync来完成整个A2A服务器的构建和启动,这里我们只需要修改一行代码:将针对A2A路由终结点的注册的方法从之前的MapA2AJsonRpc改成如下所示的MapA2AHttpJson即可,这里我们直接使用根路径,并且省去了针对AgentCard对应终结点的注册。
static async Task StartA2aServerAsync(Uri url, Action<A2AServerRegistrationOptions>? configureOptions = null)
{
Env.Load();
var apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!;
var endpoint = Environment.GetEnvironmentVariable("OPENAI_BASE_URL")!;
var agent = new OpenAIClient(
credential: new ApiKeyCredential(key: apiKey),
options: new OpenAIClientOptions { Endpoint = new Uri(endpoint) })
.GetResponsesClient()
.AsAIAgent(model: "gpt-5.4-mini", name: "a2a-agent");
var buidler = WebApplication.CreateBuilder();
buidler.Services
.AddA2AServer(agent.Name!, configureOptions)
.AddAIAgent(agent.Name!, (services, anme) => agent)
;
buidler.WebHost.UseUrls(url.ToString());
var app = buidler.Build();
app.MapA2AHttpJson(agent,"/");
await app.StartAsync();
}
2. Agent的阻塞式调用
如下的程序演示了针对A2A Agent阻塞式调用。如代码所示,我们指定了A2A服务器的监听地址(http://localhost:3721/)调用StartA2aServerAsync启动了A2A服务器。然后我们创建了作为输入消息的SendMessageRequest对象,我们知道它相当于一个角色为User的ChatMessage。我们将它作为输入调用InvokeAsync方法以阻塞方式调用以A2A服务器承载的AIAgent,并得到作为响应消息的SendMessageResponse。响应消息将主体内容置于Parts属性表示的Part对象中,我们将它们的文本输出到控制台上。
var url = new Uri("http://localhost:3721/");
await StartA2aServerAsync(url);
using var httpClient = new HttpClient { BaseAddress = url };
var request = new SendMessageRequest
{
Message = new Message
{
Role = Role.User,
Parts = [Part.FromText("给出战国四公子的名字")]
}
};
var response = await InvokeAsync<SendMessageResponse>("/message:send", request, httpClient);
foreach (var part in response!.Message!.Parts)
{
Console.Write(part.Text);
}
输出:
战国四公子一般指:
1. **齐国孟尝君**——田文
2. **赵国平原君**——赵胜
3. **魏国信陵君**——魏无忌
4. **楚国春申君**——黄歇
如果你愿意,我也可以顺便给你讲一下他们各自的典故。
如下所示的是InvokeAsync<TResponse>方法的定义,它的三个参数分别代表:A2A操作绑定的路径(Agent的阻塞式调用操作对应的路径为/message:send)、请求消息和用来进行远程调用的HttpClient对象。由于不需要将请求消息包装成标准的JSON-RPC数据结构,而是直接传输请求消息的JSON文本,所以这个方法的定义非常简单。我们直接指定请求的路径、请求消息和基于A2A默认采用的JsonSerializerOptions调用HttpClient的PostAsJsonAsync方法,并将响应消息的主体内容反序列化成泛型参数TResponse就可以了。
async Task<TResponse?> InvokeAsync<TResponse>( string path, object request, HttpClient httpClient)
{
using var response = await httpClient.PostAsJsonAsync(path, request, A2AJsonUtilities.DefaultOptions);
response.EnsureSuccessStatusCode();
using var stream = await response.Content.ReadAsStreamAsync();
return await JsonSerializer.DeserializeAsync<TResponse>(stream, A2AJsonUtilities.DefaultOptions);
}
从如下所示的HTTP请求和响应的主体内容更能抓住基于HTTP-JSON协议的A2A服务处理阻塞式Agent调用的本质。
请求:
{
"message": {
"role": "ROLE_USER",
"parts": [ { "text": "给出战国四公子的名字" } ],
"messageId": ""
}
}
响应:
{
"message": {
"role": "ROLE_AGENT",
"parts": [ { "text": "战国四公子一般指:\n\n1. **齐国孟尝君**——田文 \n2. **赵国平原君**——赵胜 \n3. **魏国信陵君**——魏无忌 \n4. **楚国春申君**——黄歇\n\n如果你愿意,我也可以顺便给你讲一下他们各自的典故。" } ],
"messageId": "resp_0320522d39700023006a656f9f6ff88195ac8bc91b022f5675",
"contextId": "43c2d238d3384585a8ec78438d1f2e47"
}
}
3. Agent的流式调用
如下的程序演示了以流的形式远程调用承载与A2A服务器的Agent。具体的调用的方法为StreamAsync<TResult>,该方法具有与InvokeAsync方法一致的参数定义。从第一个指定的参数可以看出,A2A服务器接收Agent流式调用请求的路径为/message:stream。所谓的流体现在返回的IAsyncEnumerable<StreamResponse>对象上。我们一般迭代每个StreamResponse,并将其封装的消息文本输出到控制台上。
var url = new Uri("http://localhost:3721/");
await StartA2aServerAsync(url);
using var httpClient = new HttpClient { BaseAddress = url };
var request = new SendMessageRequest
{
Message = new Message
{
Role = Role.User,
Parts = [Part.FromText("给出战国四公子的名字")]
}
};
await foreach (var update in StreamAsync<StreamResponse>("/message:stream", request, httpClient))
{
foreach (var part in update.Message!.Parts)
{
Console.Write(part.Text);
}
}
输出:
战国四公子通常指:
1. **魏国信陵君** —— **魏无忌**
2. **赵国平原君** —— **赵胜**
3. **齐国孟尝君** —— **田文**
4. **楚国春申君** —— **黄歇**
如果你愿意,我也可以继续给你补充这四位的主要事迹和各自的特点。
和基于JSON-RPC的流式实现一样,HTTP-JSON底层的传输协议依然是SSE,所以StreamAsync<TResult>方法的核心操作依然是发送请求,并使用SseParser以及解析每个抵达的SSE数据项,最终将内容反序列化成TResult对象。由于直接采用的是承载请求和响应消息的裸JSON,所以StreamAsync<TResult>省去了基于JSON-RPC针对请求的封装和针对响应的解封。
async IAsyncEnumerable<TResult> StreamAsync<TResult>(string path, object request, HttpClient httpClient)
{
using var response = await httpClient.PostAsJsonAsync(path, request, A2AJsonUtilities.DefaultOptions);
response.EnsureSuccessStatusCode();
using var stream = await response.Content.ReadAsStreamAsync();
using (response)
using (stream)
{
await foreach (var sseItem in SseParser.Create(stream).EnumerateAsync())
{
yield return JsonSerializer.Deserialize<TResult>(sseItem.Data, A2AJsonUtilities.DefaultOptions)!;
}
}
}
基于SSE协议的响应(text/event-stream)和直接基于响应消息裸JSON的传输体现在如下所示的HTTP响应中。
HTTP/1.1 200 OK
Content-Type: text/event-stream
Date: Sun, 26 Jul 2026 02:31:39 GMT
Server: Kestrel
Cache-Control: no-cache,no-store
Pragma: no-cache
Content-Length: 17849
data: {"message":{"role":"ROLE_AGENT","parts":[],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"战"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"国"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"四"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"公"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"子"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"通常"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"指"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":":\n\n"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"1"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"."}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":" **"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"魏"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"国"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"信"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"陵"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"君"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"**"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":" ——"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":" **"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"魏"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"无"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"忌"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"**\n"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"2"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"."}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":" **"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"赵"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"国"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"平"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"原"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"君"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"**"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":" ——"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":" **"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"赵"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"胜"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"**\n"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"3"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"."}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":" **"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"齐"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"国"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"孟"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"尝"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"君"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"**"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":" ——"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":" **"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"田"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"文"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"**\n"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"4"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"."}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":" **"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"楚"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"国"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"春"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"申"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"君"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"**"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":" ——"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":" **"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"黄"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"歇"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"**\n\n"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"如果"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"你"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"愿"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"意"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":",我"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"也"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"可以"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"继续"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"给"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"你"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"补"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"充"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"这"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"四"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"位"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"的"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"主要"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"事"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"迹"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"和"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"各"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"自"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"的"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"特点"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[{"text":"。"}],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
data: {"message":{"role":"ROLE_AGENT","parts":[],"messageId":"resp_01ab83b16a899fc0006a65718bb814819480a9c071ad95bb5e","contextId":"3cec286018974ee59529081e6fb30aac"}}
更多推荐



所有评论(0)