简单实现一个本地ChatGPT 服务,用到langchain框架,fastapi,并且本地安装了ollama。
依赖安装:
pip install langchain
pip install langchain_community
pip install langchain-cli # langchain v0.2 2024年5月最新版本
pip install bs4
pip install langchainhub
pip install FastAPI
实现本地chatGPT代码:
from fastapi import FastAPI
from langchain_community.llms.ollama import Ollama
from langchain_core.prompts import ChatPromptTemplate
from langserve import add_routes
from langchain_core.output_parsers import StrOutputParser
from langchain_core.messages import HumanMessage, SystemMessage# 创建LLM模型
model = Ollama(model="qwen2:7b")messages = [SystemMessage(content="你好!我是你的虚拟助理。今天我能为您做些什么?"),HumanMessage(content="你好!"),
]result = model.invoke(messages)print('-----------------------相当于启动测试模型回复-----------------------')
print(result)
print('-----------------------相当于启动测试模型回复-----------------------')parser = StrOutputParser()prompt_template = ChatPromptTemplate.from_messages([('system', "你好!我是你的虚拟助理。"),('user', '{text}')
])chain = prompt_template | model | parser# 定义web服务
app = FastAPI(title="LangChain Server",version="1.0",description="一个简单的 web API 服务",
)add_routes(app,chain,path="/chain",
)if __name__ == "__main__":import uvicornuvicorn.run(app, host="localhost", port=8000)
服务运行启动web服务结果:
客户端调用web服务测试代码:
from langserve import RemoteRunnableremote_chain = RemoteRunnable("http://localhost:8000/chain/")
r = remote_chain.invoke({ "text": "帮我用java写1个排序算法"})
print(r)
测试结果回答准确,如下图:
服务端非常简单,后面再写个前端对接一下即可方便使用。