1. 简单介绍

如果发送给Agent或大模型的是一个复杂的查询,可能需要比较长时间才能获得回复。当前有一些大模型支持Background Responses,比如openai/gpt-4o。Background Responses允许服务端以异步的方式去执行耗时任务,这样客户端就不需要进行长时间等待了,客户端还能继续处于响应状态。Background Responses是通过continuation token来运作的。如果AI Agent或者大模型支持Background Responses,则再执行耗时任务时候,会首先返回一个continuation token,应用程序可以使用这个continuation token来检查进度或者恢复流传输。按照微软的介绍,当前Background Responses支持.NET和Python两种语言。

这边将体验一下AI Agent 执行长时间任务时候,网络中断又恢复,看是否还能正常拿到final response。这边将采用streaming的方式从AI Agent获取response。

2.具体说明

2.1 GitHub Models

这边将使用GitHub Models中的openai/gpt-4o-mini进行体验。GitHub Models的使用过程可以参考之前的文章GitHub Models - 尝试一下使用GitHub Models

得到GitHub Models的 endpoint, personal access token, model的信息。

model:  openai/gpt-4o-mini

endpoint: https://models.github.ai/inference

token: [your own token]

2.2 使用Background Responses

创建一个控制台项目,Background Responses的配置

        

var agent = chatClient
			.AsAIAgent(
				instructions: instructions,
				name: "Assistant"
			);

AgentRunOptions options = new()
{
	AllowBackgroundResponses = true
};

AgentSession session = await agent.CreateSessionAsync();
AgentResponseUpdate? latestUpdate = null;

await foreach (var update in agent.RunStreamingAsync("Write a detailed market analysis for the 2026.", session, options))
{
	Console.Write(update.Text);
	latestUpdate = update;
	break;
}

为了防止网络中断的情况,则可以添加如下的代码,

#pragma warning disable MEAI001 
options.ContinuationToken = latestUpdate?.ContinuationToken;
#pragma warning restore MEAI001 
await foreach (var update in agent.RunStreamingAsync(session, options))
{
	Console.Write(update.Text);
}

note, 获取ContinuationToken,然后使用token恢复流传输。在测试的时候,尽量写一个让AI大模型产生大量回复的prompt,比如上面的"Write a detailed market analysis for the 2026"。这样AI大模型就需要比较长的时间来处理了。

2.3 运行一下

启动项目,开始从GitHub Models得到streaming result,这时候把电脑的网络断了,会发现流式传输中断了。如下图所示,

        

等了一分钟,然后把网络恢复,会发现控制台又有流传输结果返回。

        

不过网络中断的时间,不能太长,否则会报如下这个错误,可以看出默认允许中断100秒,

        

note, 按照提示,100秒的时间限制可以进行更改的。

2.4 其他

如果配置的是,AllowBackgroundResponses = false,

        

则进行网络中断测试时候,应用程序会报如下这个错误的,

            

3.总结

本文简单介绍了一下AI Agent/大模型在执行长时间任务的时候,配置了Background Responses应用程序的执行效果。发现在执行长时间任务时,即使网络中断并恢复,仍然可以继续得到streaming result。以上只是个人测试的结果,作为一个参考,谢谢。

下面是MAF源码中,对于AllowBackgroundResponses的注释,可以作为参考信息。

        

本文如果哪里有错误,麻烦告之,谢谢谢谢!

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐