langchain学习-提示词模板

from turtledemo.penrose import start

from langchain.memory import ConversationBufferMemory
from langchain_core.messages import SystemMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate, HumanMessagePromptTemplate, MessagesPlaceholder
from langchain_core.runnables import RunnablePassthrough
from langchain_ollama import ChatOllama

#提示词写法一:
template = ChatPromptTemplate.from_messages([
    SystemMessage(content=("你是一位专业的Java开发工程师,擅长解决各种java相关问题")),
    HumanMessagePromptTemplate.from_template("我的问题:{text}")
])

message = template.format_messages(text="java的三大特性是什么?")

llm_model_ollama = ChatOllama(model="qwen2.5:3b")

result = llm_model_ollama.invoke(message);

#提示词写法二:
template2 = ChatPromptTemplate.from_messages([
    ("system","你是一位专业的陪聊,名字叫{name},擅长陪用户聊天"),
    ("human","{question}")
])

question = input("请输入您的问题")

message2 = template2.format_messages(name="小洋",question=question)

llm_model = ChatOllama(model="qwen2.5:3b")

#输出解析器 (正常ai会返回token:xxxx content:xxxxx 现在只返回文字内容)
strOutParser = StrOutputParser()
chain =  llm_model | strOutParser

# 注释最终执行语句
# result = chain.stream(message2)
# for chunk in result:
#     print(chunk, end="", flush=True)

#建议案例,持续对话闲聊机器人

def aiChat():
    llm_model_qwen = ChatOllama(model="qwen3:4b")

    index=1;

    # 初始化内存,存储对话历史
    memory = ConversationBufferMemory()

    while True:

        inputMessage=""

        if index==1:
            inputMessage = input("很高兴与您对话,请提出您的问题吧:")
        else:
            inputMessage = input("请继续提出您问题:")

        prompt = ChatPromptTemplate.from_messages([
            SystemMessage(content="你是一位心理咨询师,可以给用户提供各种情绪价值"),
            HumanMessagePromptTemplate.from_template("{input}"),
            MessagesPlaceholder(variable_name="chat_history"),  # 历史对话占位符
        ])

        message = prompt.format_messages(input=inputMessage)

        strOutParser =  StrOutputParser()

        chain = memory | llm_model_qwen | strOutParser

        result = chain.stream(message)

        for val in result:
            print(val, sep="\n" ,end="", flush=True)

        index+=1


if __name__ == '__main__':
    aiChat()

 

posted @ 2025-08-21 13:52  洋三岁  阅读(30)  评论(0)    收藏  举报
友情链接: 梦想农夫