使用 Flask 和 LangChain 流式传输 ChatGPT 的结果

2024-02-06

基本上我想用 Flask 和 LangChain 来实现这一点:https://www.youtube.com/watch?v=x8uwwLNxqis https://www.youtube.com/watch?v=x8uwwLNxqis.

我正在构建一个在后端使用 LangChain 的问答 Flask 应用程序,但我在传输来自 ChatGPT 的响应时遇到问题。我的链条看起来像这样:

chain = VectorDBQA.from_chain_type(llm=ChatOpenAI(model_name="gpt-3.5-turbo", streaming=True, chain_type="stuff", vectorstore=docsearch)
...
result = chain({"query": query})
output = result['result']

Jinja 只是打印{{ output }},并且工作正常,但在整个响应完成之前,结果不会出现在网站中。我想流式传输由 ChatGPT 生成的结果。

我尝试过使用stream_template,但它不起作用(它不传输结果,它只是立即打印完整的响应,尽管我可能做错了什么)。


我终于解决了:

https://github.com/DanteNoguez/FlaskGPT https://github.com/DanteNoguez/FlaskGPT


为了明确这个问题有答案并避免将来链接损坏(当有人只留下链接时常见的堆栈溢出问题),但丁(OP)在这里解决了它:

https://github.com/DanteNoguez/FlaskGPT https://github.com/DanteNoguez/FlaskGPT

def gen_prompt(docs, query) -> str:
    return f"""To answer the question please only use the Context given, nothing else. Do not make up answer, simply say 'I don't know' if you are not sure.
Question: {query}
Context: {[doc.page_content for doc in docs]}
Answer:
"""

def prompt(query):
     docs = docsearch.similarity_search(query, k=4)
     prompt = gen_prompt(docs, query)
     return prompt


def stream(input_text):
     completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[
            {"role": "system", "content": "You're an assistant."},
            {"role": "user", "content": f"{prompt(input_text)}"},
        ], stream=True, max_tokens=500, temperature=0)
     for line in completion:
        if 'content' in line['choices'][0]['delta']:
            yield line['choices'][0]['delta']['content']

@app.route('/completion', methods=['GET', 'POST'])
def completion_api():
    if request.method == "POST":
        data = request.form
        input_text = data['input_text']
        return Response(stream(input_text), mimetype='text/event-stream')
    else:
        return Response(None, mimetype='text/event-stream')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Flask 和 LangChain 流式传输 ChatGPT 的结果 的相关文章

  • Python BigQuery 存储。并行读取多个流

    我有以下玩具代码 import pandas as pd from google cloud import bigquery storage v1beta1 import os import google auth os environ G
  • Flask_login - 当前用户

    我正在使用烧瓶登录我的烧瓶应用程序中的扩展用于登录用户 您必须知道 此扩展有一个变量 用于存储当前用户 除了测试之外 该代码运行良好 当我测试代码时 使用unittest 我注册了一个 测试用户 并登录 但是当前用户变量不保留登录的用户 这
  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9

随机推荐

  • 快速修复/n 错误:MsgSeqNum 太高

    我已经使用 QuickFIX n is v1 4 0 从此 创建了一个修复应用程序 http www quickfixn org download http www quickfixn org download 地点 当我执行应用程序时 我
  • 反序列化 xml,包括命名空间

    我正在尝试反序列化一些 XML 但无法获取名称空间 xsi type Model 上班 如果xsi type Model 被排除在 XML 之外 它可以工作 但它必须存在 如果我将命名空间保留在模型之外 则会收到错误 如果重命名它 则会得到
  • AngularJS 拦截并扩展控制器 $scope

    我在应用程序中定义了许多可重用的功能 每个控制器都与 scope 变量一起使用 有没有办法扩展 scope 变量 以便我可以在任何地方使用我的扩展代码 而不是每次都创建共享服务 就像是 I ve tested this out and it
  • 我希望我的 Android 应用程序仅在纵向模式下运行?

    我希望我的 Android 应用程序仅在纵向模式下运行 我怎样才能做到这一点 在清单中 为您的所有活动进行设置
  • PyDev 的导入错误

    我使用 PyDev Eclipse 已有几个月了 并且在导入时遇到了相同的错误 PyDev 在导入中用红色下划线并说Unresolved import xxx Found at yyy 当我点击yyyeclipse找到并打开该模块的执行 P
  • 安装了jSweet。怎么办?

    我有一个java项目 我想将其转换为Typescript 大约150个文件 As per http www jsweet org getting started http www jsweet org getting started 我查看
  • iPhone开发配置助手第3步公钥/私钥问题

    您好 我正在使用开发配置助手 在第 3 步 在 钥匙串访问 中验证您的私钥和公钥时 我在 钥匙串 gt 登录 中有 iPhone 开发人员 XXXXXXX 证书 但找不到任何密钥 如果我单击 类别 gt 键 我什么也看不到 我应该怎么做才能
  • Windows批处理脚本仅保留目录中的N个最新文件夹

    我有一个目录 我将 MySQL 数据库备份到具有当前日期的文件夹中 现在 30 或 60 天后 我喜欢只保留该备份目录中的 n 个最新文件夹 并删除其余文件夹 每个文件夹中都有 gzip 压缩的数据库 为了备份我使用的 MySQL 数据库a
  • QWebPage多次触发loadFinished()

    我正在使用 load 方法将内容加载到 QWebPage 中 但我的 loadStarted loadFinished 和 loadProgress 处理程序调用了多次 如何检测该页面已完全加载其所有内容 在以下位置发布了相关解决方案提案
  • 使用 $fetch 和 Pinia 的 Nuxt 3 JWT 身份验证

    我正在尝试对不同的 API 进行 JWT 身份验证 由于 nuxtjs auth next 似乎不是最新的 而且据我所知 可以在 Nuxt 3 中使用新的全局方法 fetch 而不是 nuxtjs axios 也不是最新的 我认为它自己编写
  • 例外:需要在环境或系统属性中指定类名:java.naming.factory.initial [重复]

    这个问题在这里已经有答案了 当我运行 JMS 相关应用程序时 遇到以下异常错误 javax naming NoInitialContextException 需要在环境或系统属性中指定类名 或者作为小程序参数 或者在应用程序资源文件中 ja
  • Rails 3 中类似于 Stack Overflow 的 URL 路由

    所以我希望我的应用程序生成诸如堆栈溢出之类的路由 questions id title 我怎样才能在 Rails 中做到这一点 请注意 http stackoverflow com questions 4434266 stack overf
  • Typedoc 不会为导入的模块生成文档

    使用 TypeDoc 生成时 我收到一个空文档 这仅适用于导入的文件 当我将任何类添加到指定的文件中时entryPoints 我得到了这方面的文档 但对于导入的文件我什么也得不到 我有这样的 typedoc json entryPoints
  • 如何在 weka 中表示用于分类的文本?

    您能告诉我如何在 weka 中表示文本分类的属性或类吗 我可以使用什么属性进行分类 词频还是仅词 ARFF 格式的可能结构是什么 你能给我几行该结构的例子吗 预先非常感谢您 最简单的替代方法之一是从 ARFF 文件开始解决二类问题 例如 r
  • 如何连接MySQL数据库?

    C 编程新手 我希望能够访问MySQL数据库 I know MySQL connector NET and MySQL for Visual StudioC 开发所需 我需要将它们安装到我的应用程序中吗 我可以只用程序释放连接器 DLL 吗
  • 系统(“暂停”)澄清

    当我使用系统 暂停 时 屏幕上会显示一行 按任意键继续 这很令人恼火 并且使得读取输出变得相当麻烦 有什么办法可以阻止这种情况的发生吗 您的意思是想按任意键继续 但不想在屏幕上显示 按任意键继续 尝试这个getchar 这将捕获从键盘输入的
  • 为什么 Android 上的 Instagram 不接受 Intent.ACTION_SEND_MULTIPLE

    Instagram 应用程序支持多张照片帖子 https help instagram com 269314186824048 https help instagram com 269314186824048 http blog insta
  • 为什么 DateTime 是 .Net 中的结构体?

    Why is DateTime结构体而不是可继承的类 我希望能够重写 ToString 方法 但我不能 可能是因为它被视为一种小型 简单且不可变的数据结构 很像整数或小数 在这些条件下将其设为结构使得使用 DateTime 非常高效 如果它
  • 如何按共同特征组织数据?

    我在对数据进行编目时遇到了麻烦 这种方式允许我通过数据的通用描述符或特征来引用数据 我很清楚继承 特征 编程概念 和接口 但这些似乎都不是我问题的正确答案 我正在用 JavaScript 编写一个程序 该程序可能包含许多不同的项目或对象 假
  • 使用 Flask 和 LangChain 流式传输 ChatGPT 的结果

    基本上我想用 Flask 和 LangChain 来实现这一点 https www youtube com watch v x8uwwLNxqis https www youtube com watch v x8uwwLNxqis 我正在构