使用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}')

posted @   王竹笙  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示