文章目录
本文将演示使用大语言模型自制聊天机器人。主要的内容有:
- 使用
LangGraph
进一步完善聊天机器人 - 使用提示词改变
LLM
的能力
我们将同时使用
llama3.1
和deepseek
做演示。由于langchain
可能对不同大模型支持程度不同,不同大模型的特点也不同,所以这个对比并不能说明哪个模型更好。
准备
在正式开始撸代码之前,需要准备一下编程环境。
-
计算机
本文涉及的所有代码可以在没有显存的环境中执行。 我使用的机器配置为:- CPU: Intel i5-8400 2.80GHz
- 内存: 16GB
-
Visual Studio Code 和 venv
这是很受欢迎的开发工具,相关文章的代码可以在Visual Studio Code
中开发和调试。 我们用python
的venv
创建虚拟环境, 详见:
在Visual Studio Code中配置venv。 -
Ollama
在Ollama
平台上部署本地大模型非常方便,基于此平台,我们可以让langchain
使用llama3.1
、qwen2.5
等各种本地大模型。详见:
在langchian中使用本地部署的llama3.1大模型 。
使用简单的提示词
提示模板有助于将原始用户信息转换为 LLM
可以使用的格式。在这种情况下,原始用户输入只是一条消息,我们将它传递给 LLM
。
使用提示词模板在 langGraph
让大模型模拟海盗的语气对话。
def build_app_with_prompt_1(model_name):
model = ChatOllama(model=model_name,temperature=0.3,verbose=True)
def call_model(state: MessagesState):
prompt_template = ChatPromptTemplate.from_messages(
[
(
"system",
"You talk like a pirate. Answer all questions to the best of your ability.",
),
MessagesPlaceholder(variable_name="messages"),
]
)
prompt = prompt_template.invoke(state)
response = model.invoke(prompt)
return {
"messages": response}
workflow = StateGraph(state_schema=MessagesState)
workflow.add_edge(START, "model")
workflow.add_node("model", call_model)
memory