通过langchain实现简单对话

该文章已生成可运行项目,

通过 .env 文件来加载环境变量

  • 在项目文件中创建一个 .env 文件来存放一下环境配置信息如各种API
  • 使用函数加载进来 (可以防止暴露 API
    • 导包:from dotenv import load_dotenv
    • 导入环境变量:load_dotenv(".env")

建立一个简单ai对话

import os
from dotenv import load_dotenv

load_dotenv(".env")
# 设置环境变量,启用LangSmith的追踪功能
os.environ["LANGCHAIN_TRACING_V2"]="true"

# 可以通过以下方式验证是否成功加载
print("LangSmith API Key 已加载" if os.getenv("LANGSMITH_API_KEY") else "未找到 LangSmith API Key")
print("ZhipuAI API Key 已加载" if os.getenv("ZHIPUAI_API_KEY") else "未找到 ZhipuAI API Key")
LangSmith API Key 已加载
ZhipuAI API Key 已加载
调试信息:
LANGSMITH_API_KEY:************************************************************
ZHIPUAI_API_KEY: *********************************************************
# 使用智谱AI的GLM-4-Flash模型
from langchain_community.chat_models import ChatZhipuAI
  
chat_model=ChatZhipuAI(model="glm-4-flash")
# 创建一个简单的对话
from langchain_core.messages import HumanMessage,SystemMessage,AIMessage

messages=[
    SystemMessage(content="你是一个专业的翻译,你的任务是把中文翻译成意大利语"),
    HumanMessage(content="你好,吃了吗?")
]
  
# 调用模型
response=chat_model.invoke(messages)
print(response.content)
Ciao, hai mangiato?

提示模板

from langchain_core.prompts import ChatPromptTemplate

system_template="你是一个专业的翻译,你的任务是把中文翻译成{language}"
human_template="{text}"

# 使用提示模板创建一个对话
prompt_template=ChatPromptTemplate.from_messages(
    [
        ("system",system_template),
        ("human",human_template)
    ]
    )

# 使用提示模板创建一个对话
result=prompt_template.invoke({"language":"英语","text":"你好,吃了吗?"})

# 查看模板的完整信息
print(result)
print(result.to_messages())
messages=[SystemMessage(content='你是一个专业的翻译,你的任务是把中文翻译成英语', additional_kwargs={}, response_metadata={}), HumanMessage(content='你好,吃了吗?', additional_kwargs={}, response_metadata={})]

[SystemMessage(content='你是一个专业的翻译,你的任务是把中文翻译成英语', additional_kwargs={}, response_metadata={}), HumanMessage(content='你好,吃了吗?', additional_kwargs={}, response_metadata={})]
#调用链方法一
response=chat_model.invoke(result)
print(response.content)

# 调用链方法二
# 使用LCEL将组件链接在一起
chain=prompt_template|chat_model

response=chain.invoke({"language":"英语","text":"你好,吃了吗?"})
print(response.content)
Hello, have you eaten?
Hello, have you eaten yet?
本文章已经生成可运行项目
### 使用 LangChain 构建对话系统的教程 #### 准备工作 为了使用 LangChain 构建一个有效的对话系统,需先安装必要的库。这通常涉及 Python 环境中的 `langchain` 库以及其他可能依赖的包。 ```bash pip install langchain transformers torch datasets ``` #### 初始化组件 创建对话系统的第一步是初始化所需的各种组件,包括但不限于加载预训练的语言模型以及设置数据集路径等配置项[^1]。 ```python from langchain import LangChain from langchain.llms import OpenAI import activeloop # 加载预训练LLM llm = OpenAI() ``` #### 数据准备与处理 对于对话应用来说,准备好用于训练的数据至关重要。这里假设已经有一个存储在 Deep Lake 中的数据集,该数据集包含了历史对话记录或其他形式的知识源。 ```python dataset_path = "path/to/deep_lake_dataset" db = activeloop.DeepLake(dataset_path=dataset_path, read_only=True) retriever = db.as_retriever() retriever.search_kwargs["distance_metric"] = "cos" # 设置距离度量方式为余弦相似度 retriever.search_kwargs["k"] = 4 # 返回最接近查询的前四个文档片段 ``` #### 对话管理逻辑设计 接下来定义对话流程控制机制,比如如何接收用户输入、向 LLM 提问并展示回复给最终用户。这部分可以通过封装成函数来简化操作。 ```python def get_response(query): qa_system = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=False ) response = qa_system({"query": query}) return response['result'] if __name__ == "__main__": while True: user_input = input("User: ") bot_reply = get_response(user_input) print(f"Bot: {bot_reply}") ``` 上述代码展示了基于 LangChain 和 Activeloop 的 Deep Lake 来搭建简单对话机器人的方法[^2]。通过这种方式可以快速启动项目原型,在此基础上还可以进一步优化性能、扩展功能特性或是调整至更复杂的业务场景中去。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值