65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
import os
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
def create_client():
|
|
api_key = os.getenv("OPENAI_API_KEY")
|
|
return api_key
|
|
|
|
|
|
from langchain_core.prompts import ChatPromptTemplate,MessagesPlaceholder
|
|
from langchain_openai import ChatOpenAI
|
|
from langchain_core.output_parsers import StrOutputParser
|
|
from langchain_community.chat_message_histories import ChatMessageHistory
|
|
from langchain_core.runnables import RunnableWithMessageHistory
|
|
|
|
|
|
def create_bot(llm,sys_prompt):
|
|
"""
|
|
:param sys_prompt: 系统提示词
|
|
:param llm: 已配置好的语言模型实例
|
|
:return:
|
|
"""
|
|
prompt = ChatPromptTemplate.from_messages([
|
|
("system",sys_prompt),
|
|
MessagesPlaceholder(variable_name="history"),
|
|
("human","{input}")
|
|
])
|
|
parser = StrOutputParser()
|
|
chain = prompt | llm | parser
|
|
store = {}
|
|
|
|
def get_session_history(session_id):
|
|
return store.setdefault(session_id,ChatMessageHistory())
|
|
|
|
return RunnableWithMessageHistory(
|
|
runnable=chain,
|
|
get_session_history=get_session_history,
|
|
input_messages_key="input",
|
|
history_messages_key="history"
|
|
)
|
|
|
|
def main():
|
|
# 此处集中配置LLM
|
|
llm = ChatOpenAI(
|
|
model="deepseek-chat",
|
|
api_key=create_client(),
|
|
base_url="https://api.deepseek.com"
|
|
)
|
|
prompt = """你是‘小智’,一位专业、耐心且记忆力出色的 AI 助手。
|
|
你善于倾听,能记住用户之前提到的信息,并在后续对话中自然提及。
|
|
回答时简洁明了,避免冗余。"""
|
|
bot = create_bot(llm,prompt)
|
|
session_id = '123'
|
|
while 1:
|
|
user_input = input('\n你:')
|
|
if user_input == "quit":
|
|
print('拜拜')
|
|
break
|
|
response = bot.invoke({"input":user_input},config={"configurable":{"session_id":session_id}})
|
|
print("AI:",response)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main() |