当前位置: 首页 > article >正文

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

  【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.kler.cn/a/232096.html

相关文章:

  • Python爬虫----python爬虫基础
  • C:原反补码
  • Go八股(Ⅵ)Goroutine 以及其中的锁和思想
  • Ubuntu安装ollama,并运行ollama和通义千问,使用gradio做界面
  • springboot实现简单的数据查询接口(无实体类)
  • [GXYCTF2019]BabyUpload--详细解析
  • Qt简易登录界面
  • 【网站项目】031网络游戏公司官方平台
  • H12-821_315
  • leetcode(滑动窗口)483.找到字符中所有字母异位词(C++详细解释)DAY4
  • 深度学习中常用激活函数介绍
  • druid配置wall导致无法批量sql
  • vivado GATED_CLOCK、IOB、IO_BUFFER_TYPE、KEEP、KEEP_HIERARCHY、MARK_DEBUG
  • 跟着pink老师前端入门教程-day21+22
  • C语言第二十一弹---指针(五)
  • 风丘电动汽车热管理方案 为您的汽车研发保驾护航
  • leetcode-区域和检索 - 数组不可变
  • 13. UE5 RPG限制Attribute的值的范围以及生成结构体
  • 3D Line Mapping Revisited论文阅读
  • POPPPPPJ勒索病毒:了解最新POPPPPPJ,以及如何保护您的数据
  • 自定义指令实现图片懒加载
  • 【数据结构】链表OJ面试题4(题库+解析)
  • sqli-labs-master靶场训练笔记(38-53|boss战)
  • STM32——FLASH(1)简单介绍、分类、读写流程及注意事项
  • 百面嵌入式专栏(面试题)C语言面试题22道
  • 命令行任务管理器的at命令