大模型私有化部署(二)
·
1.安装本地python环境,python版本大于3.11
pip install langchain_openai
pip install langchain_community
pip install gradio
2.引用服务器布置的大模型
llm = ChatOpenAI(
model='qwen3-8b',
temperature=0.8,
api_key='xx',
base_url="http://127.0.0.1:6006/v1",
extra_body={'chat_template_kwargs': {'enable_thinking': False}},
)
3.创建带聊天记录的大模型处理链
prompt = ChatPromptTemplate.from_messages([
('system', "{system_message}"),
MessagesPlaceholder(variable_name='chat_history', optional=True),
('human', '{input}')
])
chain = prompt | llm
def get_session_history(session_id: str):
return SQLChatMessageHistory(
session_id=session_id,
connection_string='sqlite:///chat_history.db',
)
4.对历史记录进行剪辑,只保留最新的两条历史记录,其余的使用大模型进行总结概述压缩
def summarize_messages(current_input):
session_id = current_input['config']["configurable"]["session_id"]
if not session_id:
raise ValueError("必须通过config参数提供session_id")
chat_history = get_session_history(session_id)
stored_messages = chat_history.messages
if len(stored_messages) <= 2:
return {"original_messages": stored_messages, "summary": None}
last_two_messages = stored_messages[-2:]
messages_to_summarize = stored_messages[:-2]
summarization_prompt = ChatPromptTemplate.from_messages([
("system", "请将以下对话历史压缩为一条保留关键信息的摘要消息。"),
("placeholder", "{chat_history}"),
("human", "请生成包含上述对话核心内容的摘要,保留重要事实和决策。")
])
summarization_chain = summarization_prompt | llm
summary_message = summarization_chain.invoke({'chat_history': messages_to_summarize})
return {
"original_messages": last_two_messages,
"summary": summary_message
}
final_chain = (RunnablePassthrough.assign(messages_summarized=summarize_messages)
5.编写图形界面
def add_message(chat_history, user_message):
if user_message:
chat_history.append({"role": "user", "content": user_message})
return chat_history, gr.Textbox(value=None, interactive=False)
def execute_chain(chat_history):
input = chat_history[-1]
result = final_chain.invoke({'input': input['content'], "config": {"configurable": {"session_id": "user123"}}}, config={"configurable": {"session_id": "user123"}},callbacks=None)chat_history.append({'role': 'assistant', 'content': result.content})
return chat_history
with gr.Blocks(title='本地大模型', theme=gr.themes.Soft()) as block:
chatbot = gr.Chatbot(height=600, label='大模型智能助手')
with gr.Row():
with gr.Column(scale=5):
user_input = gr.Textbox(placeholder='请给机器人发送消息...', label='文字输入', max_lines=5)
submit_btn = gr.Button('发送', variant="primary")
chat_msg = user_input.submit(add_message, [chatbot, user_input], [chatbot, user_input])
chat_msg.then(execute_chain, chatbot, chatbot).then(
lambda: gr.MultimodalTextbox(interactive=True),
None,
[user_input]
)
6.执行脚本文件

7.浏览器打开http://127.0.0.1:7860即可使用本地部署好的大模型啦

更多推荐
所有评论(0)