langchain+gpt+agent

news/2025/2/16 2:15:34/

一.agent+Conversation

通过用户问题,来选择

import json
import os
import refrom langchain import FAISS, PromptTemplate, LLMChain
from langchain.agents import initialize_agent, Tool, AgentType
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
from langchain.document_loaders import TextLoader
from langchain.embeddings import OpenAIEmbeddings
from langchain.memory import ConversationBufferMemory
from langchain.text_splitter import SpacyTextSplitter
from langchain.tools import tool"""
pip install spacy
python -m spacy download zh_core_web_sm
"""os.environ["OPENAI_API_KEY"] = ''llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-16k", max_tokens=10240)  # type: ignorefile_path = "faq.txt"loader = TextLoader(file_path, encoding="utf-8")
documents = loader.load()
text_splitter = SpacyTextSplitter(chunk_size=500, chunk_overlap=0, pipeline="zh_core_web_sm", separator="\n\n")
texts = text_splitter.split_documents(documents)
embeddings = OpenAIEmbeddings()docsearch = FAISS.from_documents(texts, embeddings)
faq_chain = RetrievalQA.from_chain_type(llm=llm, retriever=docsearch.as_retriever(), verbose=True)order_1_num = "20230926001"order_2_num = "20230927002"order_1 = {"order_number": order_1_num,"statu": "已发货","shipping_date": "2023-09-26","estimated_delivered_date": "2023-09-31"
}order_2 = {"order_number": order_2_num,"statu": "未发货","shipping_date": None,"estimated_delivered_date": None}answer_order_info = PromptTemplate(template="请把下面的订单信息回复给用户:\n{order}?", input_variables=["order"])answer_order_llm = LLMChain(llm=ChatOpenAI(temperature=0), prompt=answer_order_info)# 模拟订单
@tool("searchOrder", return_direct=True)
def search_order(input: str) -> str:"""userful for when you need to answer questions about customers orders"""pattern = r"\d{11}"match = re.search(pattern, input)order_number = inputif match:order_number = match.group(0)else:return f"""请提供订单号"""if order_number == order_1_num:return answer_order_llm.run(json.dumps(order_1))elif order_number == order_2_num:return answer_order_llm.run(json.dumps(order_2))else:return f"""根据{input}没有找到订单"""# 模拟推荐商品
def recommend_product(input: str) -> str:if "male".lower() == input.lower():return "红色衣服,衣服的商品编号为999"elif "female".lower() == input.lower():return "黄色衣服,衣服的商品编号为888"else:return "蓝色衣服,衣服的商品编号为777"# 模拟推荐商品
@tool("productPrice", return_direct=True)
def product_price(input: str) -> str:"""userful for when you need to answer questions about product price.the user needs to provide the item number to query product priceAnswer users' questions in Chinese"""print(str)pattern = r"\d{3}"match = re.search(pattern, input)product_number = inputif match:product_number = match.group(0)else:return f"""请提供商品编号"""if "999" == product_number:return "价格为1080"elif "888" == product_number:return "价格为2080"elif "777" == product_number:return "价格为3080"else:return "价格不知道"# 模拟问电商faq
@tool("FAQ", return_direct=True)
def faq(input: str) -> str:"""userful for when you need to answer questions about shopping policies,like return policyAnswer users' questions in Chinese"""return faq_chain.run(input)tools = [Tool(name="recommend product", func=recommend_product,description="""userful for when you need to answer questions about product recommendations,"if question about male ,input value is male,    if question about female ,input value is female""",return_direct=True),faq,search_order,product_price
]memory = ConversationBufferMemory(memory_key="chat_history", return_message=True)
# 当没有相关答案,不需要一直重试,最大次数max_iterations=2
agent = initialize_agent(tools, llm, agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION, memory=memory, verbose=True)# question = "我有一个订单20230926002的购买日期是多久?一直没有收到,啥时候发货,帮我查下"
# print(agent.run(question))def query_answer(question: str) -> str:# question = "我要查询一个订单啥时候送到?"res = agent.run(question)print(res)return resif __name__ == '__main__':query_answer("我的订单到哪了?")

faq.txt

Q:如果更改收获地址?
A:在订单发货前,登录账号,进行修改,如果已经发货,联系客服协助处理Q:如何查询发票?
A:进入"我的发票"页面,在此页面上查看详细信息Q:为什么我的订单被取消?
A:订单可能因为库存不足,支付异常,用户要求等原因被取消,联系客服Q:如何使用优惠券?
A:在购物车页面,输入优惠券代码后,点击"应用"。优惠券折扣将自动应用你的订单Q:物流时效是多久?
A:一般情况下,大部分城市的订单在2-3个工作日,偏远地区是5-7个工作日,具体的配货时间可能因为订单的商品,物流公司而异

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/news/1128022.html

相关文章

学之思项目第一天-完成项目搭建

一、前端 拉下前端代码执行 npm i 然后执行npm run serve就行了 二、后端 搭建父子模块 因为这个涉及到前台以及后台管理所以使用父子模块 并且放置一个公共模块,放置公共的依赖以及公共的代码 2.1 搭建父子工程 这个可以使用直接一个个的maven模块&#xff…

FPGA设计时序约束二、输入延时与输出延时

目录 一、背景 二、set_input_delay 2.1 set_input_delay含义 2.2 set_input_delay参数说明 2.3 使用样例 三、set_output_delay 3.1 set_output_delay含义 3.2 set_output_delay参数说明 3.3 使用样例 四、样例工程 4.1 工程代码 4.2 时序报告 五、参考资料 一、…

如何使用pycharm连接Mysql数据库!!!

1、Mysql的安装: MySQL针对不同的用户提供了2中不同的版本: MySQL Community Server:社区版。由MySQL开源社区开发者和爱好者提供技术支持,对开发者开放源代码并提供免费下载。MySQL Enterprise Server:企业版。包括最…

引入easyExcel后,导致springboot项目无法开启tomcat

报错信息: Caused by: java.lang.annotation.IncompleteAnnotationException: org.terracotta.statistics.Statistic missing element type at sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:81) at com.sun.proxy…

基于微信小程序的公交信息在线查询系统小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

Python 3.10.9 Mac m1 无法安装grpc的解决办法

pip install airavata-mft-cli python3.10 -m venv venv source venv/bin/activate pip install grpcio1.47.0rc1 pip install grpcio-tools1.47.0rc1 然后就成了 python -m grpc_tools.protoc -I --python_out. --grpc_python_out. message.proto 参考文章: …

外贸人员如何选择适合的邮箱服务

随着互联网和数字技术的快速发展,电子邮件已经成为商务沟通的主要方式之一。对于外贸人员来说,选择一个合适且高效的邮箱服务至关重要。本文将探讨外贸人员在选择外贸邮箱时应考虑的因素,以便找到最适合自己的解决方案。 “外贸人员如何选择合…

基于微信小程序的停车场预约收费小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…