【Langchain Agent研究】SalesGPT项目介绍(一)

news2025/1/18 14:42:03

  【2024最全最细LangChain教程-13】Agent智能体(二)-CSDN博客

        之前我们介绍了langchain的agent,其实不难看出,agent是更高级的chain,可以进行决策分析、可以使用工具,今天我们开始开启一些更高阶的课程,来看一下多Agent构成的相对复杂的系统,而且我们开始研究一下github上高星的项目,看看这些项目的设计思想、工程结构、代码实现和应用场景,对于我们自己构造复杂多Agent系统大有裨益。

        我们首先来看一下SalesGPT这个项目,项目的git地址如下:GitHub - jerry1900/SalesGPT: Context-aware AI Sales Agent to automate sales outreach. 

        我自己也fork了这个项目,所以大家直接去我的github上看这个项目就行。我关注和学习这个项目,有两个原因:

1. 我认为应用大模型在营销上,具有巨大的想象空间和应用场景,这个虽然现在不是热点,但是未来一定是重要的人工智能应用领域

2. 从技术上学习多agent部署、对话阶段判断、提示词模板转换等技术,这些技术在其他项目里也会有应用

1. SalesGPT的简单介绍      

       这个项目想做的事情并不复杂,就是利用大模型技术打造一个可以和用户交流、向用户推销产品的机器人。这个机器人把销售过程分为如下步骤,下面是这些步骤和样例内容,如下图所示:

Introduction: 您好,我是来自XYZ公司的ChatGPT。我们是一家专注于提供创新解决方案的公司。

Qualification: 您好,我想确认一下您是否是负责公司决策的相关人员?

Value Proposition: 我们的产品/服务可以帮助您提高效率,降低成本,并提升您的业务竞争力。

Needs Analysis: 您认为目前您的业务中存在哪些主要挑战或问题?

Solution Presentation: 基于您提到的挑战,我们的产品/服务可以提供以下解决方案...

Objection Handling: 如果您有任何对我们产品/服务的顾虑或疑问,我很乐意解答并提供更多信息。

Close: 针对我们讨论的内容,您是否有兴趣进一步了解我们的产品/服务?如果是的话,我们可以安排一个演示或提供更多资料。

End Conversation: 如果您目前没有兴趣或时间进一步了解,我完全理解。感谢您的时间,如果您未来有任何问题或需要,随时联系我们。祝您一切顺利。

        这个项目的核心思想,是要依靠大模型作为判断和推理引擎,通过设置多个agent,判断和用户交流的状态以确定不同的销售阶段给大模型不同的提示词策略,这个项目的整体核心流程如下图所示:

        

2. 业务流程介绍

        2.1 Seed the Agent

         初始化一个agent,设置启动agent所必须的数据,比如销售产品信息、销售人员设置等信息

        2.2 Autonomous Sales Agent

         启动agent开始决策判断,决定下一步的动作,是调用工具?还是将结果呈现给用户?还是做其他的操作

        2.3 Human Input

        接收用户的输入,并把用户和机器人的输出都放到memory里。

        2.4 Stage Analyzer

        这一步是我最感兴趣的,我想知道这个Agent是基于什么来判断不同的销售l阶段。这个在任何其他场景里都极有用处,比如我之前构造的旅游聊天机器人,如果可以判断出他对某个地方特别感兴趣,就可以给他推销一下旅游产品广告了,这个非常有用。

        2.5 Adjust agent’s prompt based on conversation stages

        这个也是我感兴趣的地方,就是他可以通过不同的对话阶段调整agent使用的模板,我不知道他这个是怎么去实现的,这个也是我想学习的地方。

3. 项目部署和安装

        项目的部署和安装其实并不太复杂,项目的调用代码也很简答,但是这些不是最重要的,最重要的是要我们解构一下这个项目,看看里面真正的逻辑是什么样的,尤其是阶段判断和提示词调整两块的东西是怎么做的。

        项目调用代码:

import os
from salesgpt.agents import SalesGPT
from langchain_community.chat_models import ChatLiteLLM

from dotenv import load_dotenv
load_dotenv() # make sure you have .env file with your API keys, eg., OPENAI_API_KEY=sk-xxx

# select your model - we support 50+ LLMs via LiteLLM https://docs.litellm.ai/docs/providers
llm = ChatLiteLLM(temperature=0.4, model_name="gpt-3.5-turbo") 
                            
sales_agent = SalesGPT.from_llm(llm, use_tools=True, verbose=False,
                            product_catalog = "examples/sample_product_catalog.txt",
                            salesperson_name="Ted Lasso",
                            salesperson_role="Sales Representative",
                            company_name="Sleep Haven",
                            company_business='''Sleep Haven 
                            is a premium mattress company that provides
                            customers with the most comfortable and
                            supportive sleeping experience possible. 
                            We offer a range of high-quality mattresses,
                            pillows, and bedding accessories 
                            that are designed to meet the unique 
                            needs of our customers.'''
                            )
sales_agent.seed_agent()
sales_agent.determine_conversation_stage() # optional for demonstration, built into the prompt
# agent 
sales_agent.step()

# user
user_input = input('Your response: ') # Yea, sure
sales_agent.human_step(user_input)

# agent
sales_agent.determine_conversation_stage() # optional for demonstration, built into the prompt
sales_agent.step()

# user
user_input = input('Your response: ') # What pricing do you have for your mattresses?
sales_agent.human_step(user_input)

# agent
sales_agent.determine_conversation_stage() # optional for demonstration, built into the prompt
sales_agent.step()

        我们从下节课开始,先不去部署和调用他的代码,我们主要做的是把这个项目的工程结构和核心代码进行拆解,然后我们模仿他的结构和核心原理,自己构造一个销售机器人应用于我们自己的旅游聊天机器人里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1441998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql 中文编码问题

前言 最近在学springboot整合mybatisplus技术,用到mysql数据库,然后发现在windows下插入数据表会出现中文乱码现象 (例如 “我是谁” 在数据库中就成了 “???”) windows show variables like %char%;建表时, 设置默认charset为gbk create table u…

LayUI中表格树折叠 --

1、先将插件源码进行下载,新建 tableTree.js 文件,将源码放进去 2、将 tableTree.js 文件 配置之后,在需要使用的页面进行引入: layui.define(["tableTree"],function (exports) {var tableTree layui.tableTree;// …

Mac上几款好用的MacBook视频播放器

使用Mac电脑时,视频播放器可以说是我们使用频率最高的软件之一了,不管是工作时看视频资料还是在家里看下载好的电影,都需要用到视频播放器,本文中我们就来推荐几款好用的Macbook视频播放器,总有一款适合你!…

OpenSSL 创建自签名证书

前言 Openssl 是一个方便的实用程序,用于创建自签名证书。您可以在所有操作系统(如 Windows、MAC 和 Linux 版本)上使用 OpenSSL。 自签名证书 创建我们自己的根 CA 证书和 CA 私钥(我们自己充当 CA)创建服务器私钥以生成 CSR使用我们的根 CA 和 CA 私钥创建具有 CSR 的…

vue3-内置组件-Teleport

Teleport <Teleport> 是一个内置组件&#xff0c;它可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去。 基本用法 有时我们可能会遇到这样的场景&#xff1a;一个组件模板的一部分在逻辑上从属于该组件&#xff0c;但从整个应用视图的角度来看…

如何通过ETL实现快速同步美团订单信息

一、美团外卖现状 美团作为中国领先的生活服务电子商务平台&#xff0c;其旗下的美团外卖每天承载着大量的订单信息。这些订单信息需要及时入库、清洗和同步&#xff0c;但由于数据量庞大且来源多样化&#xff0c;传统的手动处理方式效率低下&#xff0c;容易出错。比如&#…

盒子模型...

一&#xff0c;盒子模型 1.1网页布局的本质 1先准备好相关的网页元素&#xff0c;网页元素基本都是盒子BOX。 2利用CSS设置好盒子样式&#xff0c;然后摆放到相应位置。 3往盒子里面装内容。 1.2盒子模型 CSS盒子模型本质是一个盒子&#xff0c;封装周围的HTML元素&#xff…

结构体的大小以及内存对齐问题

结构体的大小怎么计算&#xff1f;什么是结构体的对齐&#xff1f; 首先想要直到结构体的大小需要先了解结构体的内存对齐。那么&#xff0c;什么是结构体的内存对齐&#xff1a; 什么是结构体内存对齐 结构体的对齐 就是 结构体类型数据在内存中按照一定的对齐规律储存。结…

【开源】SpringBoot框架开发校园电商物流云平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 商品数据模块2.3 快递公司模块2.4 物流订单模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 商品表3.2.2 快递公司表3.2.3 物流订单表 四、系统展示五、核心代码5.1 查询商品5.2 查询快递公司5.3 查…

Go语言每日一练——链表篇(四)

传送门 牛客面试笔试必刷101题 ----------------合并两个排序的链表 题目以及解析 题目 解题代码及解析 package main import _"fmt" import . "nc_tools" /** type ListNode struct{* Val int* Next *ListNode* }*//*** 代码中的类名、方法名、参…

unity——ScriptableObject相关知识点【学习笔记/不足之处欢迎斧正/个人复习向/侵删】

一、相关简介 1.ScriptableObject是什么&#xff1a;Unity提供的一个数据存储基类 2.ScriptableObject的好处有哪些&#xff1a;文件配置、数据复用、更好的处理数据带来的多态性为 二、ScriptableObject的创建 1.自定义ScriptableOject数据容器 继承ScriptableObject类 在…

[BeginCTF]真龙之力

安装程序 双击安装 出现了安装失败的标签&#xff0c;开发者不允许测试。 查看Mainfest入口文件 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android" android:versionCo…

Blender_pmx导出fbx

Blender_pmx导出fbx 学无止境&#xff1f; 相关链接&#xff1a; Blender教程&#xff1a; Blender中文手册介绍 — Blender Manualhttps://docs.blender.org/manual/zh-hans/2.79/about/introduction.htmlhttps://www.blendercn.org/https://www.blendercn.org/Blender下载…

dddddddddddddddddddd

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏&#xff1a;《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

深度学习(13)--PyTorch搭建神经网络进行气温预测

一.搭建神经网络进行气温预测流程详解 1.1.导入所需的工具包 import numpy as np # 矩阵计算 import pandas as pd # 数据读取 import matplotlib.pyplot as plt # 画图处理 import torch # 构建神经网络 import torch.optim as optim # 设置优化器 1.2.读取并处理数据…

PWM输入输出

PWM&#xff08;Pulse Width Modulation&#xff09;即脉冲宽度调制&#xff0c;在具有惯性的系统中&#xff0c;可以通过对一系列脉冲的宽度进行制&#xff0c;来等效地获得所需要的模拟参量&#xff0c;常应用于电机控速、开关电源等领域。 PWM参数 PWM 中有三个重要参数&…

代码随想录算法训练营第四十七天(动态规划篇)| 416. 分割等和子集

416. 分割等和子集 题目链接&#xff1a;416. 分割等和子集 - 力扣&#xff08;LeetCode&#xff09; 思路 回溯——超时 首先想到之前的回溯算法&#xff0c;寻找数组中加和等于sum(nums)/2的子集&#xff0c;但对于大数组超时了&#xff1a; class Solution(object):def…

nodejs+vue高校实验室耗材管理系统_m20vy

用户功能&#xff1a; 登录后要有一个首页 比如:可以看见目前的耗材消耗记录&#xff0c;可做成图表菜单栏在左侧显示 1.个人信息管理 可以对基本信息进行修改&#xff0c;(修改密码时需要验证) 2.耗材管理&#xff08;耗材信息&#xff09; 普通用户可以查询当前相关耗材信息[…

[Java][算法 哈希]Day 01---LeetCode 热题 100---01~03

LeetCode 热题 100---01~03 ------->哈希 第一题 两数之和 思路 最直接的理解就是 找出两个数的和等于目标数 这两个数可以相同 但是不能是同一个数字&#xff08;从数组上理解就是内存上不是同一位置&#xff09; 解法一&#xff1a;暴力法 暴力解万物 按照需求 …

C++类型转化cast from pointer to smaller type ‘int‘ loses information

代码如下 #include <iostream>int main() {int a 10;std::cout << (int)&a << std::endl;return 0; }编译 这段代码是要将地址转化成整数类型&#xff0c;但是在编译时编译器告诉我们这是错的&#xff0c;因为在C中&#xff0c;将指针转换为int类型的…