gradio RuntimeError: async generator raised StopAsyncIteration

主要是return和yield混用导致的,yield是可以流式回复,return一次性回答;需要通义,都改成yield,但不是流式的内容需要最后再加个return

移除了所有的 return 语句,改为 yield 加 return。在生成器函数中,return 用来终止生成器。
简化了代码结构,使每个分支都遵循相同的模式:

生成内容
yield 内容
return 终止生成器

所有返回值都通过 yield 发送,确保了统一的数据流模式。
错误处理也使用相同的模式,确保错误信息也通过 yield 发送。

def process_content(content):"""Helper function to handle both streaming and non-streaming content"""if isinstance(content, str):yield contentelse:yield from contentdef process_query(query):messages = [{"role": "system", "content": prompt}, {"role": "user", "content": "\n"+query}]message = send_messages(messages)print(type(message), message)if "json" in message:match = re.search(r'json(.*?)```', message, re.DOTALL)json_str = match.group(1)data = json.loads(json_str)print(type(data), data)if "response" in data:if data["response"]:print(data["response"])yield data["response"]returnagent_str = data["action"][0]# Free chat handlingif "free_chat" in agent_str:try:content = agent_str.split("'")[1]messages_all.append({"role": "user", "content": content})stream = send_messages_stream(messages_all)contents = ""for chunk in stream:contents += chunk.choices[0].delta.contentyield contentsreturnexcept:pass# Hotel checkingif "check_hotel" in agent_str:try:results = eval(agent_str)if isinstance(results, str):yield resultsreturnresult_lists = []for num, result in enumerate(results):result_lists.append([num+1, result["hotelName"],result["address"],result["minRoomPrice"]])hotels_str = "\n".join([", ".join(map(str, hotel)) for hotel in result_lists])yield hotels_strreturnexcept Exception as e:print(e)yield "没有找到合适酒店,也可以通过下面链接查询:https://ai.118114.cn/h5/subpackage/travel/hotel"return# Flight checkingif "check_flight" in agent_str:try:results = eval(agent_str)if isinstance(results, str):yield resultsreturnresult_lists = []for num, result in enumerate(results):result_lists.append([num+1,result["departureAirportName"],result["arrivalAirportName"],result["disAmt"],result["airlineName"],result["deptm"],result["arrtm"]])flight_str = "\n".join([", ".join(map(str, flight)) for flight in result_lists])yield flight_strreturnexcept Exception as e:print(e)yield "没有找到合适机票,可以通过下面链接查询:https://ai.118114.cn/h5/subpackage/travel/plane"return# Train checkingif "check_train" in agent_str:try:results = eval(agent_str)if isinstance(results, str):yield resultsreturnresult_lists = []for num, result in enumerate(results):result_lists.append([num+1,result["trainCode"],result["startStationName"],result["endStationName"],result["lowestPriceStr"]])train_str = "\n".join([", ".join(map(str, train)) for train in result_lists])yield train_strreturnexcept Exception as e:print(e)yield "没有找到合适火车票,可以通过下面链接查询:https://ai.118114.cn/h5/subpackage/travel/train"returnyield agent_strreturnelse:if "response" in message:data = json.loads(message)if data["response"]:yield data["response"]returnelif "action" in message:data = json.loads(message)agent_str = data["action"][0]# Handle each action type using the same pattern as above# Free chatif "free_chat" in agent_str:try:content = agent_str.split("'")[1]messages_all.append({"role": "user", "content": content})stream = send_messages_stream(messages_all)contents = ""for chunk in stream:contents += chunk.choices[0].delta.contentyield contentsreturnexcept:pass# Rest of the action handlers follow the same pattern...yield agent_strreturnelse:yield messagereturnclient = OpenAI(base_url="https://api.deepseek.com", api_key="sk****")gr.ChatInterface(process_query, title="118114智能体出行查询").launch(server_name="0.0.0.0",server_port=8888,show_error=True,debug=True
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/58590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringAI你知道吗???

目前AI的浪潮已经居高不下了,因此我最近也开始了有关AI的项目,再开始AI的项目之前,我们也要先熟知AI的开发文档和知识,才能更好的开发项目,因此特地从官网查看了有关SpringAI的使用。 Spring AI 官方说明文档&#xf…

从0到1,用Rust轻松制作电子书

我之前简单提到过用 Rust 做电子书,今天分享下如何用Rust做电子书。制作电子书其实用途广泛,不仅可以用于技术文档(对技术人来说非常方便),也可以制作用户手册、笔记、教程等,还可以应用于文学创作。 如果…

c++应用网络编程之十三Linux下的epoll模式应用

一、epoll的应用 epoll在实际场景的应用是非常多的,特别是开源的框架中,基本都支持这种用法。大家可以在网上轻松的得到各种形式的epoll的封装代码,但是一定要明白的是,这些代码哪些是利用了epoll的机制,哪些是上层多…

计算机毕业设计django+大模型租房推荐系统 租房可视化 租房大屏可视化 租房爬虫 spark 58同城租房爬虫 房源推荐系统

开题报告:《Django大模型租房推荐系统》 一、研究背景与意义 随着城市化进程的加快,房屋租赁市场日益繁荣。然而,传统的房屋租赁方式存在信息不对称、交易流程繁琐等问题,给租户和房主带来了诸多不便。因此,开发一套…

SAP-MM委外的异常处理

业务场景: 在公司创建委外订单时,BOM下层原材料维护为0.5,产成品为1,共计4行,3个物料,底层原材料都是同一个 物料,也就是总计2个原材料,产成品数量4个,三个物料编码。 …

网站安全,WAF网站保护暴力破解

雷池的核心功能 通过过滤和监控 Web 应用与互联网之间的 HTTP 流量,功能包括: SQL 注入保护:防止恶意 SQL 代码的注入,保护网站数据安全。跨站脚本攻击 (XSS):阻止攻击者在用户浏览器中执行恶意脚本。暴力破解防护&a…

ubuntu进程相关操作

进程相关操作 1.查看进程top/htop top 命令输出解释 在 top 命令中,字段通常表示如下: USER:进程的所有者。PR:优先级。NI:nice 值(优先级调整)。VIRT:进程使用的虚拟内存总量。…

如何在算家云搭建LongWriter(长文创作)

一、 LongWriter 简介 在自然语言处理领域,随着对长文本处理需求的不断增加,能够高效生成长文本的语言模型变得至关重要。LongWriter 的推出正是为了打破传统语言模型在生成超长文本时的限制。LongWriter-glm4-9b 是基于glm-4-9b进行训练的,…

C语言串口接收GPS数据

要在C语言中接收GPS数据,需要使用串口通信来与GPS设备进行数据交互。一个简单的串口通信代码主要包含了以下几个部分: 1.标准库头文件 stdio.h:包含输入输出函数,如 printf string.h:包含字符串处理函数&#xff0c…

【天线&空中农业】蜜蜂检测系统源码&数据集全套:改进yolo11-ASF

改进yolo11-dysample等200全套创新点大全:蜜蜂检测系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.30 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者视频可…

NavVis LX系列产品典型应用—现有住宅装修改造-沪敖3D

现有住宅装修改造项目的 数据捕捉和测量技术 当Jay Ure着手翻新和美化自己的新家时,他敏锐地发现这是现场测试NavVis VLX的绝佳机会。 为了全面评估,他聘请了一位工程师,采用传统的全站仪技术进行地形测绘。之后,他用移动扫描设…

《云主机配置全攻略》

《云主机配置全攻略》 一、云主机配置的重要性二、配置云主机的关键要素(一)CPU 的选择(二)内存的考量(三)硬盘的抉择(四)带宽的确定(五)机房线路的考虑&…

点评项目-12-好友关注

好友关注主要有三个功能: 1.关注和取关 2.共同关注 3.关注推送 关注和取关 涉及到的表,中间表:tb_follow,是博主 User 和粉丝 User 的中间表 请求一,查询是否关注了该用户: 请求路径:follow/or/not/…

Android 在github网站下载项目:各种很慢怎么办?比如gradle下载慢;访问github慢;依赖下载慢

目录 访问github慢gradle下载慢依赖下载慢 前言 大家好,我是前期后期,在网上冲浪的一名程序员。 为什么要看这篇文章呢?问题是什么? 我们在Github上面看到一些好的项目的时候,想下载下来研究学习一下。但经常遇到各…

阿里面试:为什么MySQL不建议使用Delete删除数据?

MySQL有建议过不要使用他们家的DELETE吗?在MySQL 8.0的官方文档里没有找到不建议使用DELETE的文字。 DELETE VS NOT DELETE,这是由来已久的问题 时间回到2009的8月30号。大佬Ayende Rahien——也被称为Oren Eini,Hibernating Rhinos公司的C…

机器学习中的嵌入是什么?

一、说明 嵌入是真实世界对象的数字表示,机器学习(ML)和人工智能(AI)系统利用它来像人类一样理解复杂的知识领域。例如,计算算法了解 2 和 3 之间的差为 1,这表明与 2 和 100 相比,2…

Python | Leetcode Python题解之第517题超级洗衣机

题目: 题解: class Solution:def findMinMoves(self, machines: List[int]) -> int:tot sum(machines)n len(machines)if tot % n:return -1avg tot // nans, s 0, 0for num in machines:num - avgs numans max(ans, abs(s), num)return ans

数学建模学习(131):使用Python基于VIKOR算法的多准则决策分析

文章目录 引言VIKOR算法原理与步骤 2.1 VIKOR背景与适用性2.2 VIKOR算法的详细步骤解析与数学模型案例背景与应用场景数据说明

[Chrome插件开发]关于报错Service worker registration failed. Status code: 15

manifest.json中不能使用ts: "background": {"service_worker": "background.ts"}只能使用js "background": {"service_worker": "background.js"}在vite.config.js中增加以下配置,可以将…

若依框架部署到服务器后头像资源访问404

排错过程 第一开始以为是代理出问题了 官网给出的解决方案 第一种是用代理后端接口,第二种是重写路径直接访问静态文件 接口通过捕获profile开头的路径/profile/avatar…,转为/home…/avatar找到我们在该路径下的文件 但是我想了一下,我ngin…