LLM-聊天机器人

2025-4-9 diaba LLM

import os

from langchain_community.chat_message_histories import ChatMessageHistory
from langchain_core.messages import HumanMessage
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables import RunnableWithMessageHistory
from langchain_openai import ChatOpenAI
from langserve import add_routes

#  pip install langchain_community

# 科学上网
os.environ['http_proxy'] = '127.0.0.1:7890'
os.environ['https_proxy'] = '127.0.0.1:7890'

# 使用 langsmith
os.environ["LANGCHAIN_TRACING_V2"] = "true"
# 不写项目名称,会用默认的项目,如果指定了,用指定的 langsmith项目名
os.environ["LANGCHAIN_PROJECT"] = "langchainDemo"
os.environ["LANGCHAIN_API_KEY"] = "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"

# 调用LLM 做一个聊天机器人

# 1.创建模型
model = ChatOpenAI(model='gpt-4-turbo')

prompt_template = ChatPromptTemplate.from_template([
    ('system','你是一个乐于助人的助手。用{language}进你所能回答所有问题。'),
    MessagesPlaceholder(variable_name='my_msg')   # 记录聊天历史记录

])

# 4.得到链
chain = prompt_template | model

# 保存聊天记录
store = {} # 保存所有用户的聊天记录,每个用户用sessionId作为key,value是一个聊天历史记录对象

# 指定一个sessionId,返回一个聊天记录历史对象
def get_session_history(session_id : str):
    if session_id not in store :
        store[session_id] = ChatMessageHistory()
    return store[session_id]

do_messsage = RunnableWithMessageHistory(
    chain,
    get_session_history,
    input_messages_key="my_msg"  # 每次发送消息的一个key
)

config = {'configurable':{'session_id':'zhangsan123'}}

# 第一轮聊天
resp = do_messsage(
    {
        'my_msg' : [HumanMessage(content='你好啊,我是月月。')],
        'language' : '中文'
    },
    config = config
)

print(resp.content)

# 第二轮聊天
resp = do_messsage(
    {
        'my_msg' : [HumanMessage(content='我的名字是什么?')],
        'language' : '中文'
    },
    config = config
)

print(resp.content)



# 第三轮聊天   流式输出
for resp in  do_messsage.stream(
    {
        'my_msg' : [HumanMessage(content='给我讲一个笑话吧')],
        'language' : '中文'
    },
    config = config
):
    # 每次循环(响应)是一个token
    print(resp.content,end = '_')

print(resp.content)

发表评论:

Powered by emlog 京ICP备15045175号-1 Copyright © 2022