使用Langchain实现问答机器人,掌握使用 Langchain改造问答机器人-----3
上干货,鲜货。
from langchain.prompts import PromptTemplate
from langchain.prompts import FewShotPromptTemplate
from langchain.prompts.example_selector import SemanticSimilarityExampleSelector
from langchain_community.vectorstores import FAISS, Chroma
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_community.llms.tongyi import Tongyi
from langchain.output_parsers import PydanticOutputParser
from langchain_core.pydantic_v1 import BaseModel, Field
import datetime
from dotenv import find_dotenv, load_dotenv
import os
# 通义获取api key
load_dotenv(find_dotenv())
DASHSCOPE_API_KEY = os.environ["DASHSCOPE_API_KEY"]
"""
prompt | model | parser
"""
# 1定义大模型
model = Tongyi(model_name='qwen-max', model_kwargs={'temperature': 0.01}) # model_kwargs控制大模型的输入的稳定性
# 2定义输出格式 PydanticOutputParser的 参数范围
class LogModel(BaseModel):
user_input: str = Field(description="用户的输入")
llm_output: str = Field(description="大模型的输出")
# 2-定义解析器OutputParser,设置解析器并将指令注入到提示模板中。
parser = PydanticOutputParser(pydantic_object=LogModel)
# 2-返回包含指令的字符串,关于语言模型如何格式化的输出; 格式化prompt和解析模型输出
format_instructions = parser.get_format_instructions()
# 3定义提示词模板,引用解析器
prompt_temptale = PromptTemplate(
template="友好的回答用户的问题\n{format_instructions}\n{query}\n",
input_variables=["query"],
partial_variables={"format_instructions": format_instructions},
)
# 4实现功能,引用定义的模板
while True:
user_input = input("user: ")
if user_input == "quit":
break
response = model.invoke(prompt_temptale.format(query=user_input)) # 引用prompt模板,输入占位参数,并大模型计算
# 拿到大模型的字符串,解析
parsed_response = parser.parse(response) # OutputParse 解析命令行参数
print(f"AI: {parsed_response.llm_output}")
# 获取当前时间
now = datetime.datetime.now()
# 格式化十分秒
formatted_time = now.strftime("%H:%M:%S")
# 打印日志
print(f'{formatted_time}-INFO: User: {parsed_response.user_input}. AI: {parsed_response.llm_output}')
本文来自博客园,作者:王竹笙,转载请注明原文链接:https://www.cnblogs.com/edeny/p/18650098
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App