首页 > 其他分享 >如何使用 FastApi

如何使用 FastApi

时间:2024-03-21 17:12:53浏览次数:27  
标签:FastApi question 丝画 uvicorn 如何 langchain 使用 import 制作

上一篇写了如何使用 langchain

https://www.cnblogs.com/hailexuexi/p/18087721

这样 langchain 与 大模型 之间 就可以调用了,但项目实践中需求接口来完成调用

那 FastApi 正好能解决这个问题

下面讲一下如何使用 FastApi

安装 fastapi

fastapi 是一个用于构建高性能 Web 应用的 Python 框架,它提供了简洁、高效的 API 开发体验。

pip install fastapi

 安装 uvicorn

uvicorn 是一个用于运行 FastAPI 应用的服务器,它可以将你的 FastAPI 代码部署到生产环境中。

pip install uvicorn

安装这两个后

创建一个目录 fastapi  ,在这个目录下创建两个文件

main.py   

这段python代码,用到了openAI,需要openAI及FQ。这里只做为示例

from langchain_community.embeddings import OpenAIEmbeddings

#from langchain.vectorstores import Chroma
from langchain_community.vectorstores import Chroma

from langchain.chains import RetrievalQA

#from langchain.chat_models import ChatOpenAI
from langchain_community.chat_models import ChatOpenAI

#from langchain.document_loaders import TextLoader
from langchain_community.document_loaders import TextLoader

from langchain_community.llms import Tongyi

import os
import openai

import warnings
warnings.filterwarnings('ignore', category=FutureWarning)

os.environ['OPENAI_API_KEY'] = 'sk-***********************'             
os.environ['OPENAI_API_BASE'] = 'https://api.openai.com/v1'
os.environ["DASHSCOPE_API_KEY"] = "sk-*********************"

# 定义一个FastAPI实例
app = FastAPI()
# 定义一个请求体模型
class QuestionRequest(BaseModel):
    question: str

# 加载和准备数据
loader = TextLoader('qa.txt')
data = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=50, chunk_overlap=0)
all_splits = text_splitter.split_documents(data)
vectorstore = Chroma.from_documents(documents=all_splits, embedding=OpenAIEmbeddings())

# 定义路径操作
@app.post("/answer")
async def get_answer(request: QuestionRequest):
    question = request.question
    if question == "end":
        raise HTTPException(status_code=400, detail="Invalid question")
    # 使用Tongyi模型和检索到的信息来生成答案
    llm = Tongyi()
    qa_chain = RetrievalQA.from_chain_type(llm, retriever=vectorstore.as_retriever())
    ret = qa_chain({"query": question})
    return {"answer": ret['result']}

if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app='main:app', host="127.0.0.1", port=8080, reload=True)

# 启动服务器的命令(在命令行中运行)
# uvicorn your_module_name:app --reload

qa.txt   

这个文件 用于存放 问答对

问题:弦丝画制作的活动时长是多少?
答案:弦丝画制作活动时长是2—3小时。
问题:用弦丝画制作福字是多少元一位?
答案:用弦丝画制作福字、旺字等单字款价格120元/人。
问题:用弦丝画制作旺字是多少元一位?
答案:用弦丝画制作福字、旺字等单字款价格120元/人。
问题:用弦丝画制作喜字是多少元一位?
答案:用弦丝画制作福字、旺字等单字款价格120元/人,其他图案款请咨询详谈。
问题:端午节香囊的制作价格是多少元一位?
答案:端午节香囊价格100元/人。
问题:中秋节月饼的制作价格是多少元一位?
答案:中秋节月饼价格120元/人。

进入 fastapi目录后,执行 main.py

看到这个界面说明启动成功

接口地址是 http://127.0.0.1:8080

用postmain调用

 需要设定的 json 形式

 这样就能正确地得到返回值

 

标签:FastApi,question,丝画,uvicorn,如何,langchain,使用,import,制作
From: https://www.cnblogs.com/hailexuexi/p/18087792

相关文章

  • vue3使用qrcodejs2-fix生成背景透明的二维码
    qrcodejs官方仓库:GitHub-davidshimjs/qrcodejs:Cross-browserQRCodegeneratorforjavascriptqrcodejs2-fix 是一个用于生成QR码的JavaScript库,使用的时候先安装,然后通过设置前景色和背景色可以控制显示的二维码效果。想生成透明背景的二维码也可以,我通过下面配置前景......
  • 如何在极狐GitLab Runner 添加信任缓存域名证书
    本文作者:徐晓伟GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。问题参见:场景是极狐GitLabRunner添加MinIO域名host的时候却无法验证......
  • GraalVM详细安装及打包springboot、java、javafx使用教程(环境安装篇)
    下一篇:GraalVM详细安装及打包springboot、java、javafx使用教程(打包普通JAVA项目篇)GraalVM介绍GraalVM是一款由Oracle公司开发的一款具有高效性能、降低基础设施成本、支持Java发展、与其他编程语言无缝集成、创建本机镜像等优点的跨平台虚拟机。它支持多种编程语言,如J......
  • 使用tencentcloud-sdk-php库通用印刷体识别GeneralBasicOCR文字识别PHP代码完整版
    使用tencentcloud-sdk-php进行通用印刷体识别(GeneralBasicOCR),您需要先确保已经按照上述步骤安装了该SDK,并在腾讯云控制台上获取了您的SecretId和SecretKey。代码开始:<?phprequire'vendor/autoload.php';//根据您的项目结构引入autoload文件useTencentCloud\Comm......
  • 什么是跨域请求,如何解决跨域请求的问题?
    在前端开发中,跨域请求是一个经常被提及的话题。了解跨域请求的概念及解决方法,是每位前端工程师必备的技能之一。本文将会深入探讨跨域请求的定义、原因以及如何解决跨域请求的问题。什么是跨域请求?跨域请求指的是在浏览器端,当前页面的域与请求目标资源的域不一致,导致浏览......
  • 如何设置IDEA远程连接服务器开发环境并结合cpolar实现ssh远程开发
    文章目录1.检查LinuxSSH服务2.本地连接测试3.Linux安装Cpolar4.创建远程连接公网地址5.公网远程连接测试6.固定连接公网地址7.固定地址连接测试本文主要介绍如何在IDEA中设置远程连接服务器开发环境,并结合Cpolar内网穿透工具实现无公网远程连接,然后实现远程......
  • 使用appuploder流程笔记
    使用appuploder流程笔记1.如何没有账号去apple官网注册一个,地址:https://developer.apple.com/account2.下载解压appuploder,双击打开,用刚刚注册的账号登录,下载地址:http://www.applicationloader.net/(使用第一次后,可以点击记住密码即可一键登录)注意:未支付apple的账号需要勾......
  • MYSQL 同步到ES 如何设计架构保持一致性
    简单使用某个组件很容易,但是一旦要搬到生产上就要考虑各种各样的异常,保证你方案的可靠性,可恢复性就是我们需要思考的问题。今天来聊聊我们部门在MYSQL同步到ES的方案设计。在面对复杂条件查询时,MYSQL往往显得力不从心,一般公司的做法会通过将mysql中的数据同步到ES,之后的查询......
  • 使用spring data jpa开启高性能批量insert/update
    1、jdbcurl加上参数&rewriteBatchedStatements=true2、yaml/properties加上配置spring.jpa.properties.hibernate.jdbc.batch_size:2000spring.jpa.properties.hibernate.jdbc.batch_versioned_data:truespring.jpa.properties.hibernate.order_inserts:truespring.jpa......
  • WPF如何给window加阴影效果
    <Stylex:Key="WindowStyle1"TargetType="{x:TypeWindow}"><SetterProperty="Template"><Setter.Value><ControlTemplateTargetType="{x:TypeWind......