首页 > 其他分享 >使用 langchain 连接 通义千问 并用 fastApi 开放接口

使用 langchain 连接 通义千问 并用 fastApi 开放接口

时间:2024-03-22 13:34:43浏览次数:24  
标签:千问 fastApi question 丝画 langchain install import main

安装 langchain 方法

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

安装 fastapi

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

pip install fastapi

 安装 uvicorn

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

pip install uvicorn

安装这两个后

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

main.py   

 

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

from langchain.embeddings.dashscope import DashScopeEmbeddings

# -*- coding: utf-8 -*-
from langchain.text_splitter import RecursiveCharacterTextSplitter

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

from langchain.chains import RetrievalQA

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

from langchain_community.llms import Tongyi
import os

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

os.environ["DASHSCOPE_API_KEY"] = "sk-d35c623d2575460b8a296e4ff0db5f7c"

# 定义一个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)                                                
embeddings = DashScopeEmbeddings(
    model="text-embedding-v1",
)                                                                                                           
vectorstore = Chroma.from_documents(documents=all_splits, embedding=embeddings) 

# 定义路径操作
@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元/人。

运行 main.py

 出现 No module named 'dashscope' 则

安装 dashscope

pip install dashscope

 再次运行 main.py 出现 Please install it  with 'pip install chromab' 则

安装 chromadb

pip install chromadb

再次运行 main.py 出现下图 说明运行成功

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

用postmain调用

 需要设定的 json 形式

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

 

标签:千问,fastApi,question,丝画,langchain,install,import,main
From: https://www.cnblogs.com/hailexuexi/p/18089267

相关文章

  • LLM-通义千问:新能源参考书
    问题一:新能源入门参考书对于新能源技术的学习,以下是一些推荐的入门参考书籍:《新能源概论》:作者孙逢春,该书全面介绍了太阳能、风能、生物质能、海洋能等各种新能源的基本原理、利用技术及其发展趋势,适合初学者了解新能源领域的全貌。《新能源科学与工程导论》:作者张华,该书......
  • Ollama、Langchain相关学习资源(动态更新)
    大型预训练模型如GPT系列、BERT系列等,在消费级产品和垂直行业应用中加快了部署步伐,包括但不限于智能客服、内容创作、代码生成、决策支持等领域。随着大模型开源,相关的部署工具和框架也得到发展和完善。例如,出现了一些专门针对大模型本地部署的解决方案,像Ollama(虽然该名......
  • 如何使用 FastApi
    上一篇写了如何使用langchainhttps://www.cnblogs.com/hailexuexi/p/18087721这样langchain与大模型之间就可以调用了,但项目实践中需求接口来完成调用那FastApi正好能解决这个问题下面讲一下如何使用FastApi安装fastapifastapi 是一个用于构建高性能Web应用的......
  • 安装 langchain 方法
    为了在windows系统中可以使用多个不同版本的python。推荐使用Anaconda Anaconda提供了多个版本的Python环境管理功能。可以创建和切换不同的Python环境。官网下载地址 https://www.anaconda.com/download/清华开源镜像下载地址  https://mirrors.tuna.tsinghua.edu.c......
  • LangChain表达式LCEL(四)
    使用LangChain进行流式处理流式处理对于基于LLM的应用程序对最终用户的响应至关重要,重要的LangChain原语,如LLMs、解析器、提示、检索器和代理实现了LangChainRunnable接口。该接口提供了两种常见的流式内容的方法:syncstream和asyncastream:流式处理的默认实现......
  • langchain chatchat运行机制源码解析
    langchainchatchat的简介就不多说了,大家可以去看github官网介绍,虽然当前版本停止了更新,下个版本还没有出来,但作为学习还是很好的。一、关键启动过程:1、start_main_server入口2、run_controller启动fastchatcontroller端口200013、run_openai_api启动fastchat对外提供的类......
  • GPT实战系列-LangChain的Prompt提示模版构建
    GPT实战系列-LangChain的Prompt提示模版构建LangChainGPT实战系列-LangChain如何构建基通义千问的多工具链GPT实战系列-构建多参数的自定义LangChain工具GPT实战系列-通过Basetool构建自定义LangChain工具方法GPT实战系列-一种构建LangChain自定义Tool工具的简单方法G......
  • Fastapi中Swagger UI加载缓慢的解决方案
    在国内网络经常遇到SwaggerUI加载缓慢的问题,这是由于SwaggerUI的CSS和JS代码源在国外导致的,所以我们的解决方法是更改SwaggerUI的CSS代码和JS代码源到国内的CND实现加速。这里以Fastapi框架的SwaggerUI加载缓慢举例:一、解决方法在main.py(入口代码)代码中新增如下代码:fromfa......
  • LLM-通义千问:户用储能、地面储能
    户用储能和地面储能是两种不同应用场景下的储能技术。户用储能:主要指的是在家庭或者小型商业用户端安装的储能系统,常与分布式光伏等可再生能源发电设备配套使用。其主要功能包括:储存太阳能、风能等产生的多余电力,在无光照或风力较弱时供应电能,以达到平滑负荷、削峰填谷、提高自......
  • LLM-通义千问:户用光伏、分布式光伏、地面光伏
    户用光伏、分布式光伏和地面光伏是太阳能光伏发电的三种不同应用场景和规模类型:户用光伏:定义:户用光伏通常指的是安装在家庭住宅或小型商业场所屋顶上的太阳能发电系统,规模相对较小,主要用于满足自家用电需求。特点:设计简单,装机容量一般在几千瓦到十几千瓦之间,可以与电网连接,......