MemFire教程|FastAPI+MemFire Cloud+LangChain开发ChatGPT应用-Part2

这篇具有很好参考价值的文章主要介绍了MemFire教程|FastAPI+MemFire Cloud+LangChain开发ChatGPT应用-Part2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本介绍

上篇文章我们讲解了使用FastAPI+MemFire Cloud+LangChain进行GPT知识库开发的基本原理和关键路径的代码实现。目前完整的实现代码已经上传到了github,感兴趣的可以自己玩一下:

https://github.com/MemFire-Cloud/memfirecloud-qa

目前代码主要完成了如下一些基本功能:

  • 使用FastAPI作为Web服务端框架完成了基本的Web服务端开发
  • 使用MemFire Cloud作为向量数据和个人文档数据存储
  • 使用LangChain进行AI应用开发,加载本地磁盘目录上的文档,计算embedding、存储到向量数据库
  • 使用OpenAI的GPT模型,完成问答功能的实现
  • 使用Next.js开发了一个简单的UI界面用于问答演示

本篇文章我们将介绍一下如何部署示例代码。

准备工作

  • 在MemFire Cloud上创建应用,后面需要用到应用的API URL和Service Role Key。可以在应用的应用设置->API页面找到相应的配置

MemFire教程|FastAPI+MemFire Cloud+LangChain开发ChatGPT应用-Part2,MemFireDB,fastapi,langchain,chatgpt

  • 创建应用后,在应用的SQL执行器页面执行如下脚本
-- Enable the pgvector extension to work with embedding vectors
create extension vector;

-- Create a table to store your documents
create table documents (
    id uuid primary key,
    content text, -- corresponds to Document.pageContent
    metadata jsonb, -- corresponds to Document.metadata
    embedding vector(1536) -- 1536 works for OpenAI embeddings, change if needed
);

CREATE FUNCTION match_documents(query_embedding vector(1536), match_count int)
   RETURNS TABLE(
       id uuid,
       content text,
       metadata jsonb,
       -- we return matched vectors to enable maximal marginal relevance searches
       embedding vector(1536),
       similarity float)
   LANGUAGE plpgsql
   AS $$
   # variable_conflict use_column
BEGIN
   RETURN query
   SELECT
       id,
       content,
       metadata,
       embedding,
       1 -(documents.embedding <=> query_embedding) AS similarity
   FROM
       documents
   ORDER BY
       documents.embedding <=> query_embedding
   LIMIT match_count;
END;
$$;
  • 准备好用来测试的文档目录
    默认需要将文档放到app/docs下,可以通过环境变量指定其他目录

  • 准备好openai的账号
    请参考网上教程申请一个openai账号,后面代码运行需要用到openai的API KEY

如何运行

linux 下运行

1.安装依赖

pip install -r app/requirements.txt

2.设置参数
SUPABASE_URL/SUPABASE_KEY分别对应应用URL和service_role密钥。注意service_role秘钥具有比较高的数据库操作权限,只能用于服务端配置,不要泄漏。

export DOCS_PATH=./docs
export SUPABASE_URL="your-api-url"
export SUPABASE_KEY="your-service-role-key"
export OPENAI_API_KEY="your-openai-api-key"

3.运行

uvicorn main:app --reload --host 0.0.0.0

docker运行

docker build -t memfirecloud-qa:v1 .
docker run -p 8000:80 \
    -e SUPABASE_URL="your-api-url" \
    -e SUPABASE_KEY="your-service-role-key" \
    -e OPENAI_API_KEY="your-openai-api-key" \
    -v ./docs:/docs \
    memfirecloud-qa:v1

windows下运行(没测试)

与linux类似,设置相关环境变量,然后运行:

uvicorn main:app --reload --host 0.0.0.0

如何访问

用浏览器访问: http://your-ip:8000/可以显示一个简单的问答页面

支持的参数配置

# 本地文档路径
export DOCS_PATH=./docs

# memfire cloud 应用的API URL和Service role key
export SUPABASE_URL="your-api-url"
export SUPABASE_KEY="your-service-role-key"

# 使用openai / baidu 的大模型
export QA_BACKEND="openai" # 默认值

# openai 相关配置(QA_BACKEND=openai是需要)
export OPENAI_ORGANIZATION="your-openai-organization"
export OPENAI_API_KEY="your-openai-api-key"
export OPENAI_MODEL="gpt-3.5-turbo"  # 默认值

# 百度相关配置(QA_BACKEND=baidu时需要)
export BAIDU_API_KEY="your-baidu-api-key"
export BAIDU_API_SECRET="your-baidu-api-secret"
export BAIDU_MODEL="ERNIE-Bot-turbo" # 默认值

接下来可以做的事情

  • 过滤掉重复文档,避免应用重启或者添加重复文档时重新计算embedding

  • 程序运行中支持增量添加新文档,实时更新知识库

  • 支持对话(chat),目前只是问答(QA),不能连续对话

  • 支持百度文心一言的接口(已完成api的封装)

感兴趣的可以提交pr,一起完善功能。文章来源地址https://www.toymoban.com/news/detail-632155.html

到了这里,关于MemFire教程|FastAPI+MemFire Cloud+LangChain开发ChatGPT应用-Part2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LangChain与大型语言模型(LLMs)应用基础教程:角色定义

    如果您还没有看过我之前写的两篇博客,请先看一下,这样有助于对本文的理解: LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板 LangChain与大型语言模型(LLMs)应用基础教程:信息抽取 LangChain是大型语言模型(LLM)的应用框架,LangChain可以直接与 OpenAI 的 text-davinci-003、gpt-3.5-t

    2024年02月01日
    浏览(56)
  • 基于LangChain的LLM应用开发3——记忆

    此情可待成追忆,只是当时已惘然。我们人类会有很多或美好或痛苦的回忆,有的回忆会渐渐模糊,有的回忆午夜梦醒,会浮上心头。 然而现在的大语言模型都是没有记忆的,都是无状态的,大语言模型自身不会记住和你对话之间的历史消息。根本用不着“时时勤拂拭”,天

    2024年02月08日
    浏览(42)
  • 【AI大模型应用开发】【LangChain系列】5. 实战LangChain的智能体Agents模块

    大家好,我是【同学小张】。持续学习,持续干货输出,关注我,跟我一起学AI大模型技能。 在我前面的MetaGPT系列文章中,已经对智能体有了一个认知,重温一下: 智能体 = LLM+观察+思考+行动+记忆 将大语言模型作为一个推理引擎。给定一个任务,智能体自动生成完成任务所

    2024年03月09日
    浏览(61)
  • LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

    大型语言模型 (LLM) 正在成为一种变革性技术,使开发人员能够构建他们以前无法构建的应用程序。 但是单独使用这些 LLM 往往不足以创建一个真正强大的应用程序,只有当LLM与其它各种资源介质如数据库,文档,知识库,pdf电子书等相结合时才能发挥它强大的力量。 而LangCh

    2023年04月18日
    浏览(44)
  • 使用 LangChain 构建 LLM 应用详细教程(附python代码演练)

    介绍 欢迎来到语言处理的未来!在一个语言是连接人与技术的桥梁的世界中,自然语言处理(NLP)的进步为我们带来了令人难以置信的机会。其中一个重要的进步是革命性的语言模型,即大型语言模型(LLM),它彻底改变了我们与基于文本的数据进行交互的方式。我们将探索

    2024年01月24日
    浏览(40)
  • LangChain大型语言模型(LLM)应用开发(五):评估

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的

    2024年02月15日
    浏览(48)
  • LangChain与大型语言模型(LLMs)应用基础教程:记忆力组件

      如果您还没有看过我之前写的两篇博客,请先看一下,这样有助于对本文的理解: LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板 LangChain与大型语言模型(LLMs)应用基础教程:信息抽取 LangChain与大型语言模型(LLMs)应用基础教程:角色定义  在默认情况下Chain和LLM都是无状态

    2023年04月23日
    浏览(47)
  • LangChain与大型语言模型(LLMs)应用基础教程:神奇的Agent

      LangChain是大型语言模型(LLM)的应用框架,LangChain可以直接与 OpenAI 的 text-davinci-003、gpt-3.5-turbo 模型以及 Hugging Face 的各种开源语言模如 Google 的 flan-t5等模型集成。通过使用LangChain可以开发出更为强大和高效的LLM的各种应用。 今天我们就来实现一个神奇的功能,如何你是一个不

    2024年02月03日
    浏览(46)
  • LangChain大型语言模型(LLM)应用开发(六):Agents

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的

    2024年02月16日
    浏览(44)
  • LangChain大型语言模型(LLM)应用开发(三):Chains

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包