译者 | 布加迪
审校 | 重楼
文章插图
您可能在日常的网上互动中遇到过聊天机器人,但有没有考虑过底层为这些数字助手提供支持的技术?聊天机器人(尤其在客户支持领域)已经成为现代企业的一个主力工具 , 在提高效率的同时改进了客户服务 。今天,我们将深入研究LangChAIn和DeepInfra如何使这种聊天机器人变得响应更迅即、更高效 。
聊天机器人的基本组成部分不妨先了解基础知识——聊天机器人的核心组件有哪些?在开发一个响应迅即又高效的聊天机器人时,三个要素必不可少:模型、提示模板(Prompt Template)和记忆 。
模型代表了聊天机器人背后的AI大脑,它负责理解和响应用户输入 。提示模板引导聊天机器人的响应,确保它们的回复紧扣对话主题 。最后,记忆保持交互的状态,使聊天机器人能够记住过去的对话,并利用它们来理解当前对话的上下文 。
操作指南现在开始动手吧 。我们将逐步介绍使用LangChain和DeepInfra构建客户支持聊天机器人的过程 。我们假设这个聊天机器人在一家在线服装店“工作”,可以帮助顾客为他们挑选衣服 。
- 获取DeepInfra API密钥
from getpass import getpassimport os# Set the DeepInfra API tokenDEEPINFRA_API_TOKEN = getpass()os.environ["DEEPINFRA_API_TOKEN"] = DEEPINFRA_API_TOKEN
- 建立LangChain和DeepInfra环境
from langchain import ConversationChain, LLMChain, PromptTemplatefrom langchain.memory import ConversationBufferWindowMemoryfrom langchain.llms import DeepInfra# Create the DeepInfra instancellm = DeepInfra(model_id="databricks/dolly-v2-12b")llm.model_kwargs = {'temperature': 0.7, 'repetition_penalty': 1.2, 'max_new_tokens': 250, 'top_p': 0.9}
- 注意:为聊天机器人选择和部署合适的模型
- 创建提示模板以指导聊天机器人的响应
template = """Given the following user prompt and conversation log, formulate a question that would be the most relevant to provide the user with an answer from a knowledge base. You should follow the following rules when generating and answer: - Always prioritize the user prompt over the conversation log. - Ignore any conversation log that is not directly related to the user prompt. - Only attempt to answer if a question was posed. - The question should be a single sentence. - You should remove any punctuation from the question. - You should remove any words that are not relevant to the question. - If you are unable to formulate a question, respond with the same USER PROMPT you got.Conversation log: {history}USER PROMPT: {human_input}Your response:"""prompt = PromptTemplate( input_variables=["history", "human_input"],template=template)
- 初始化聊天机器人,并设置记忆
推荐阅读
- 向量数据库简介和五个常用的开源项目介绍
- 如何使用Docker进行Web应用的快速部署
- 在 Linux 文件系统中使用 attr 添加扩展属性
- Spring Cloud Gateway提供的简易网关实现方式,你使用过吗?
- Docker网络管理:连接容器和主机
- 算法和数据结构:解析与应用
- SpringBoot拦截器和动态代理有什么区别?
- 买电动车48V和60V的区别有多大?有人买60V的后悔?行内人说实话
- 孙东海回应和张柏芝抢抚养权之事,两人多次同框带孩子成为话柄!
- 胡萝卜和白萝卜莫同吃