使用 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 的结果 的相关文章

  • 将 numpy 数组合并为单个 int

    numpy 数组怎么可以这样 10 22 37 45 转换为单个 int32 数字 如下所示 10223745 这可以工作 gt gt gt int join map str 10 22 37 45 10223745 基本上你使用map s
  • Mypy 无法从文字列表推断项目的类型

    我有一个变量x和一个文字列表 例如 0 1 2 我想转换x这些文字之一 如果x在列表中 我将其退回 否则我返回一个后备值 from typing import Literal Set Foo Literal 0 1 2 foos Set F
  • 是否可以从 Julia 调用 Python 函数并返回其结果?

    我正在使用 Python 从网络上抓取数据 我想使用这些数据在 Julia 中运行计算 是否可以在 Julia 中调用该函数并返回其结果 或者我最好直接导出到 CSV 并以这种方式加载数据 绝对地 看PyCall jl https gith
  • 在Python中从大文件中搜索单词列表

    我是新蟒蛇 我有一个单词列表和一个非常大的文件 我想删除文件中包含单词列表中的单词的行 单词列表按排序给出 并且可以在初始化期间输入 我正在努力寻找解决这个问题的最佳方法 我现在正在进行线性搜索 这花费了太多时间 有什么建议么 您可以使用i
  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • Matplotlib:如何有效地将大量线段着色为独立渐变

    Python 绘图库 如何有效地将大量线段着色为独立渐变 已经 阅读this https stackoverflow com questions 8500700 how to plot a gradient color line in ma
  • Series.sort() 和 Series.order() 有什么区别?

    s pd Series nr randint 0 10 5 index nr randint 0 10 5 s Output 1 3 7 6 2 0 9 7 1 6 order 按值排序并返回一个新系列 s order Output 2 0
  • 在 python pandas 中,如何保存“网格图”?

    我对 pandas 绘图工具很陌生 在文档中 以下命令非常方便 myplot rts ret hist bins 50 by rts primary mic 然而 当我尝试从图中获取图形参考并保存它时 问题就出现了 myfigure myp
  • AttributeError:“模块”对象没有属性[重复]

    这个问题在这里已经有答案了 我有两个 python 模块 a py import b def hello print hello print a py print hello print b hi b py import a def hi
  • python 中的 <> 运算符有什么作用?

    我刚刚遇到这个here http www feedparser org feedparser py 总是这样使用 if string1 find string2 lt gt 1 pass 什么是 lt gt 运算符这样做 为什么不使用通常的
  • 根据其他单元格值更改多个单元格值

    我想更改包含的单元格moving to movingToOpenor movingToClose基于下一个单元格中给出的状态 有时循环会被中断并且不会从open to close or close to open 这是我当前的数据框 Dat
  • python中basestring和types.StringType之间的区别?

    有什么区别 isinstance foo types StringType and isinstance foo basestring 对于Python2 basestring是两者的基类str and unicode while type
  • 查找 Pandas DF 行中的最短日期并创建新列

    我有一个包含多个日期的表 有些日期将为 NaN 我需要找到最旧的日期 所以一行可能有 DATE MODIFIED WITHDRAWN DATE SOLD DATE STATUS DATE 等 因此 对于每一行 一个或多个字段中都会有一个日期
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • Python bug - 或者我的愚蠢 - 扫描字符串文字时 EOL

    我看不出以下两行之间有显着差异 然而第一个解析 而后者则不解析 In 5 n Axis of Awesome In 6 n Axis of Awesome File
  • 如何在亚马逊 EC2 上调试 python 网站?

    我是网络开发新手 这可能是一个愚蠢的问题 但我找不到可以帮助我的确切答案或教程 我工作的公司的网站 用 python django 构建 托管在亚马逊 EC2 上 我想知道从哪里开始调试这个生产站点并检查存储在那里的日志和数据库 我有帐户信
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • pandas 中数据帧中的随机/洗牌行

    我目前正在尝试找到一种方法来按行随机化数据框中的项目 我在 pandas 中按列洗牌 排列找到了这个线程 在 pandas 中对 DataFrame 进行改组 排列 https stackoverflow com questions 157

随机推荐

  • 快速修复/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 我正在构