概要
在过去的几个月里,我深入学习了LangChain结合大型语言模型(LLM)的应用,并积累了一些使用心得。我将从最基础的概念开始分享,逐步深入到agent智能代理、知识图谱、数据库应用,以及记忆模式和本地知识库的构建等多个方面。这些内容将陆续发布,与大家共同探讨和交流。如果您在阅读过程中发现任何问题或有不同见解,欢迎提出,让我们一起学习,共同进步。
整体架构流程
本文的核心是通过安装LangChain来实现语义问答功能。首先,需要安装langchain_community和dashscope包,这是与LangChain框架进行交互的基础。接着,我们将创建一个初始化的qwen大模型类,这是连接到千问模型的关键步骤。通过LangChain,我们能够根据用户输入的提示词,智能地输出相应的回答。
技术名词解释
langchain
qwen api 申请 需要认证开通大模型
技术细节
代码
1.这是一个连接qwen的初始化类,主要信息就是model_name和api_key
在这里插入import os
from langchain_community.llms import Tongyi
class LLModel:
def __init__(self, model_name: str = "qwen2-72b-instruct", api_key: str = None):
self.model_name = model_name
self.api_key = api_key
def initialize_Tongyi_model(self):
if self.api_key is not None:
os.environ['DASHSCOPE_API_KEY'] = self.api_key
llm = Tongyi(temperature=0, model_name=self.model_name)
return llm
2.第二块是langchain0.3使用chain进行将langchain和llm连接
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from llm.model_init.init import LLModel
# qwen api
api_key = "sk-xxx"
# 初始化大模型
llm_instance = LLModel(api_key=api_key)
# 返回llm
llm = llm_instance.initialize_Tongyi_model()
# 提示词
prompt = ChatPromptTemplate.from_template("用你所有的知识进行回答 {msg}")
# StrOutputParser将模型输出转化为字符串格式
chain = prompt | llm | StrOutputParser()
# 返回答案 msg要和提示词中的保持一致
result = chain.invoke({"msg": "讲个笑话"})
print(result)
输出:
D:\AI\conda\envs\aiAgent\python.exe D:\Pycharm\aiAgent\pythonProject\llm\langchain_qwen\LLMtest.py
A:你会学鸽子说话吗?
B:在路上了。
这是一个典型的谐音梗,"在路上了" 实际上是 "鸽子" 的谐音,因为鸽子在中文里也被称为 "在路上" ,这是利用了语言的双关意味来制造幽默感。这种幽默方式在理解上需要一定的语言敏感度和理解力,对于机器来说理解这样的笑话也是对语义理解和文化理解的一种考验。希望这个解释能帮助你更好地理解这个笑话。如果你有其他问题或者需要更多帮助,请随时告诉我!
不过,实际上“鸽子”在网络语言中通常代表“放别人鸽子”的意思,也就是不守信用、爽约的行为。所以,当B说“在路上了”,既表示正在学习中,也有意无意地开了一个关于是否会如鸽子一样“放别人鸽子”的小玩笑。希望你喜欢这个解释!
Process finished with exit code 0
主要这块可以尝试的就是简单修改提示词,大模型会根据你的提示词给出相应回答,这也是后续的一个主要调试工作,可以自己尝试一下 比如修改提示词为
prompt = ChatPromptTemplate.from_template("关于熊的{msg}")
输出:
D:\AI\conda\envs\aiAgent\python.exe D:\Pycharm\aiAgent\pythonProject\llm\langchain_qwen\LLMtest.py
警察:你的车子被熊弄坏了?
男子:不,是被狗弄坏的。
警察:可是这里写的肇事者是熊啊。
男子:因为如果我说是狗的话,您是不会相信的。
Process finished with exit code 0
小结
` 好了 这就是一个简单的langchain加qwen的问答形式,感谢大家观看