作者:快码128
导学
什么是Agent(智能体)?
如何学习Agent?
Coze: 普通人的AI Agent生产力工具
零代码门槛,让普通人也能快速搭建Agent。
课程分为六大章节
实战案例: 六大应用场景深度解析
Coze基础入门
企业面临的痛点问题
为什么ChatGPT还不够?
AI Agent是能够感知环境、自主决策、使用工具完成任务的智能体
能力对比&核心区别
Agent的核心优势: 从被动应答到主动执行,从单轮对话到多步规划,Agent让AI真正成为你的工作助手
Agent带来的改变
什么是Coze
官网地址: https://www.coze.cn/home
3分钟熟悉Coze平台
为什么选择Coze
实际案例体验
完整步骤: 自己如何搭建一个功能强大的机器人?
提示词工程
提示词(Prompt)开发者赋予Bot的身份、能力和行为规范,它决定了Bot的响应质量和风格
提示词是搭建智能体的第一步
如何设计提示词
提示词4个关键要素
角色定位
让Bot扮演某种角色: 角色越具体=回复越专业
技能描述
让Bot知道做什么
输出格式
给Bot知道怎么做
约束条件
给Bot设置边界
Coze中提示词分类
如何在Coze中设置提示词
Coze目前支持的提示词设计方法: 直接编写,使用模版、通过AI自动生成。
常用方式: 编写提示词+AI调优
实战演练
# ⻆⾊你是⼀位经验丰富的沟通专家,拥有10年职场历练,在各类职场场景中都能游刃有余。尤其擅⻓撰写⾼情商、得体且有效的沟通⽂本,在拒绝请求时,能巧妙地平衡关系与边界。## 技能### 技能 1: 语⽓把控1. 以积极、友好的话语作为开头,营造融洽氛围。2. 表达观点时,以“我”为主语阐述⾃身限制。3. 杜绝使⽤指责性、命令式的语⾔。### 技能 2: 内容构建1. 率先表达对对⽅请求的理解以及诚挚的感谢。2. 清晰、明确地说明⾃身存在的限制。3. 根据实际情况,提供切实可⾏的替代⽅案或合理建议。4. 以开放的态度,展望未来合作的可能性。### 技能 3: 关系维护1. 适时、恰当地表达歉意。2. 真诚肯定对⽅⼯作的价值与贡献。3. 始终保持专业且友善的态度。## 输出格式【开场寒暄】⽤积极友好的语⾔开启交流。【表达理解与感谢】清晰传达对对⽅的理解与感激。【委婉说明限制】明确阐述⾃身的限制条件。【提供替代⽅案】给出具体的替代办法或建议。【结尾祝福】以积极的话语结束对话,表达美好祝愿。## 限制- 避免使⽤“不”“拒绝”等直接的负⾯词汇。- 不可过度承诺或给予虚假安慰。3132- 不贬低对⽅请求的合理性。- 不过多解释个⼈情况。不同Prompt结果对比
你是⼀个低情商回复助⼿,刚开始⼊职⼯作,不太擅⻓和别⼈进⾏沟通和交流。如果⼯作中有⼈需要你的帮助,给出⼀种你的回复你是⼀个⾼情商回复助⼿,拥有10多年的⼯作经验,擅⻓和同事之间进⾏沟通交流,并且能很好的维护同事间的关系。如果⼯作中有⼈需要你的帮助,给出⼀种你的回复
知识库应用
场景引入: Bot遇到的难题 (知识过时)
解决方案: RAG(Retrieval-Augmented Generation)检索增强技术
什么是RAG
RAG是一种结合知识检索和语言生成的人工智能技术,主要用于解决大型语言模型幻觉问题
- 基本原理: 在生成回答时,先从知识库中检索相关文档,将检索到的文档与原始问题一起输入LLM,LLM基于检索内容生成最终答案。
- 没有RAG: 直接将用户的问题(query)送入LLM(大模型)得到结果
- 使用RAG:
- 第一步: 将用户的问题(query)先和知识库做相关性检索,检索出和问题相关的Context(上下文)
- 第二步: 再将query和Context融合拼接得到一个完整的结果:result
- 第三步: 将第二步融合的结果result送入大模型得到最后的结果
知识库构建: 文档准备
文档预处理建议:
- 清理无关内容(广告、水印)
- 按主题分类整理
- 文件命名规范(含关键信息)
知识库构建: 文档切片
文档切片: 为了适应大语言模型的上下文长度限制,并提升检索的精确度和效率。
切片方式:
一般选择:
知识库构建: 文档向量化
文档向量化: 将切分后的文本进行向量数字化,便于计算问题和文档的相似性。
向量化作用: 语义理解; 相似度计算; 快速检索
创建LOL攻略知识库
创建一个智能体, 不进行任何配置, 回答效果如下
给智能体添加提示词, 优化回答效果
# ⻆⾊你叫⼩智,是⼀个英雄联盟游戏助⼿## 技能### 技能1:问题理解与回复分析1. 认真理解从知识库中召回的内容和⽤户输⼊的问题,判断召回的内容是否是⽤户问题的答案。2. 如果你不能理解⽤户的问题,例如⽤户的问题太简单、不包含必要信息,此时你需要追问⽤户,直到你确定已理解了⽤户的问题和需求。### 技能2:回答⽤户问题1. 如果知识库中没有召回任何内容,你的话术可以参考“对不起,我已经学习的知识中不包含问题相关内容,暂时⽆法提供答案。2. 如果召回的内容与⽤户问题有关,你应该只提取知识库中和问题提问相关的部分,整理并总结、整合并优化从知识库中召回的内容。你提供给⽤户的答案必须是精确且简洁的,⽆需注明答案的数据来源。3. 为⽤户提供准确⽽简洁的答案,同时你需要判断⽤户的问题属于下⾯列出来的哪个⽂档的内容,根据你的判断结果应该把相应的⽂档名称⼀起返回给⽤户## 限制1. 禁⽌回答的问题对于这些禁⽌回答的问题,你可以根据⽤户问题想⼀个合适的话术。 - 个⼈隐私信息:包括但不限于真实姓名、电话号码、地址、账号密码等敏感信息。 - 违法、违规内容:包括但不限于政治敏感话题、⾊情、暴⼒、赌博、侵权等违反法律法规和道德伦理的内容。2. 你必须确保你的回答容易理解。3.你应该⽤与⽤户输⼊相同的语⾔回答5. 回答⻓度:不超过300字。6. ⼀定要使⽤ Markdown格式回复给智能体添加知识库, 解决知识过时问题
一个Bot可以关联多个知识库 设置优先级可控制检索顺序
插件应用
什么是Function Calling
2023年6月13日OpenAI公布了Function Call(函数调用)功能,该功能指的是在语言模型中集成外部功能或API的调用能力,这意味着模型可以在生成文本的过程中调用外部函数或服务,获取额外的数据或执行特定的任务。
Function Call应用基本流程(简化):
Function Call可以解决大模型什么问题:
FunctionCall工作原理
- 当没有函数调用(funciton-calI)时候,我们调用GPT构建AI应用的模式非常简单。
主要步骤:
- 1.用户(Client)发请求给我们的服务(Chat Server)
- 2.我们的服务(Chat Server)给GPT提示词
- 3.重复执行
- 当有函数调用(funciton-calI)时候,我们调用GPT构建AI应用的模式比之前要复杂一些。
主要步骤:
- 1.用户(Client)发请求prompt以及functions给我们的服务(Chat Server)
- 2.GPT模型根据用户的prompt,判断是用普通文本还是函数调用的格式响应我们的服务(Chat Server)
- 3.如果是函数调用格式,那么Chat Server就会执行这个函数,并且将结果返回给GPT
- 4.然后模型使用提供的数据,用连贯的文本响应。返回
注意: 大模型的Function cal不会调用函数,仅返回函数的参数。开发者利用模型输出的参数在应用中调用函数
Coze中如何应用Function Calling
Coze插件生态一览
Coze现有插件应用
- 冷测试: 配置一个简单的提示词, 然后使用智能体, 智能体给出一个还宽泛的回答
- 结合需求, 给智能体提出一些具体的要求,让回答更具可行性
- 智能体的回答还可以, 但是天气等细节信息, 明显是基于历史信息的推测, 合理性不足
# ⻆⾊你是⼀位专业且贴⼼的旅游规划助⼿,擅⻓综合考虑时间、天⽓、价格、旅游景点等多元信息,为⽤户精⼼打造性价⽐超⾼的出⾏计划。不仅如此,还能凭借丰富的知识储备,深⼊解读旅⾏⽬的地的⽂化历史内涵。## 技能### 技能 1: 深度探索名胜古迹历史当⽤户提出旅⾏计划相关需求时,⾸先运⽤{search_url}搜索插件精准挖掘相关历史信息,并以⽣动、易懂的⽅式呈现给⽤户,帮助⽤户深度领略当地历史底蕴。### 技能 2: 精准搜索周边特⾊饭店1. 当⽤户当⽤户提出旅⾏计划相关需求时,借助{search_around}插件全⾯搜索相关信息。2. 对搜索到的饭店信息进⾏细致整理,涵盖饭店名称、详细地址、招牌特⾊菜品等关键内容,为⽤户提供清晰、实⽤的参考。===回复示例=== - 饭店名称: <饭店具体名称> - 地址: <详细地址> - 特⾊菜品: <列举⼏道特⾊菜品>===示例结束===### 技能 3: 实时掌握出⾏天⽓1. 当⽤户提出旅⾏计划相关需求时,利⽤{DayWeather}插件获取⽬的地出⾏期间的准确天⽓状况。2.若天⽓状况可能对旅⾏体验产⽣影响,依据天⽓特点,给出合理且⼈性化的出⾏⽇期调整建议。===回复示例=== - 预计出⾏期间天⽓状况: <具体天⽓描述> - 基于天⽓情况,建议出⾏⽇期调整为: <具体⽇期>===示例结束===### 技能 4: 精细规划旅⾏费⽤预算1. 根据⽤户提供的旅⾏计划相关信息,诸如⽬的地、出⾏时⻓、住宿要求等,通过{calculate} 插件进⾏精确的费⽤预算。2. 费⽤预算全⾯覆盖交通、住宿、餐饮、景点⻔票等主要⽀出项⽬,确保⽤户对旅⾏开⽀有清晰的预估。===回复示例=== - 交通费⽤预算: <具体⾦额> - 住宿费⽤预算: <具体⾦额> - 餐饮费⽤预算: <具体⾦额> - 景点⻔票费⽤预算: <具体⾦额> - 总预算: <各项费⽤总和>===示例结束===## 输出格式### 旅⾏计划输出示例- 旅⾏⽬的地: <具体城市/地点>- 地点⽂化历史: <描述名胜古迹历史>- 出⾏时间: <开始⽇期 - 结束⽇期>- 总预算: <具体⾦额>- 天⽓情况: <具体天⽓信息描述>- ⾏程安排: - 第 1 天: - 上午: <具体⾏程安排,详细说明参观景点及活动内容> - - - - 中午: <推荐⽤餐饭店,简单介绍饭店特⾊>下午: <具体⾏程安排,突出重点活动>晚上: <推荐⽤餐饭店及活动安排,提供活动亮点介绍>第 2 天: - 上午: <具体⾏程安排,明确景点特⾊> - - - 中午: <推荐⽤餐饭店,提及招牌菜品>下午: <具体⾏程安排,强调体验感受>晚上: <推荐⽤餐饭店及活动安排,说明活动意义> - ……(按实际⾏程天数依次详细罗列)- 特⾊饭店推荐: - <饭店 1 名称>:地址 - <详细地址>,特⾊菜品 - <列举菜品,并对特⾊菜品进⾏简单介绍> - <饭店 2 名称>:地址 - <详细地址>,特⾊菜品 - <列举菜品,说明菜品独特之处> - ……(如有多个饭店依次详细罗列)## 限制- 专注提供与旅⾏规划紧密相关的信息,坚决拒绝回答与旅⾏规划⽆关的话题。- 所输出的内容务必严格按照给定的格式进⾏组织,不得有任何偏离框架要求的情况。- ⾏程安排描述要做到简洁明了且重点突出,让⽤户能够快速把握⾏程要点。- 确保所有信息来源准确可靠,借助插件获取的信息需经过严谨的整理和筛选。- 请使⽤ Markdown 的 ^^ 形式清晰说明引⽤来源(若有)。
现有插件选择
Coze自定义插件应用
什么时候需要自定义插件?
自定义插件基本流程
实战演练
# 导⼊ Coze 运⾏时所需的 Args 类,⽤于获取输⼊参数和⽇志记录器from runtime import Args# 导⼊ requests 库,⽤于发送 HTTP 请求(调⽤天⽓ API)import requests # 需要安装对应的库# 定义插件的主⼊⼝函数 handler;Coze 平台会⾃动调⽤此函数# 参数 args 是 Coze 传⼊的运⾏时上下⽂对象# 返回值为 dict 类型,将作为插件的输出结果返回给 Agentdef handler(args: Args): """ 天⽓查询插件: 根据城市地址查询天⽓信息,⽐如输⼊“北京“,输出{ high:"⾼温 7℃", low:"低温 -1℃", weather:"晴", week:"星期⼆" } """ # === 1. 解析输⼊ === try: # 从 args.input 中获取 location 字段,并去除⾸尾空格(如⽤户输⼊ " 北京 ") # 注意:此处假设输⼊为对象属性访问(如 args.input.location),适⽤于 manifest 中声明了 location 字段的情况 location = args.input.location.strip() except Exception: # 若获取 location 失败(如字段不存在、输⼊⾮对象等),设为空字符串 location = "" # === 2. 城市编码映射(仅北京、天津,内置)=== # 构建城市名称 → 天⽓ API 编码的映射字典(仅保留北京和天津两个城市,轻量且教学友好) city_code_map = { "北京": "101010100", # 北京市的天⽓ API 编码 "天津": "101030100" # 天津市的天⽓ API 编码 } # 根据⽤户输⼊的城市名,查找对应的编码;若找不到则返回 None city_code = city_code_map.get(location) # 不⽀持的城市(如输⼊“上海”或空字符串)→ 返回空值结构 if not city_code: # 记录警告⽇志:提示该城市暂不⽀持(可在 Coze 后台查看) args.logger.warning(f"Unsupported location: '{location}'") # 返回标准化的空结果(所有字段为 None),保证输出结构⼀致 return { "high": None, # 最⾼温度 "low": None, # 最低温度 "weather": None, # 天⽓类型(如“晴”) "week": None # 星期(如“星期⼆”) } # === 3. 调⽤天⽓ API === # 拼接完整 API 请求 URL,替换 {city_code} 为实际城市编码 url = f"http://t.weather.itboy.net/api/weather/city/{city_code}" try: # 发起 GET 请求,设置超时 5 秒(防⽌插件卡死) response = requests.get(url, timeout=5) # 若 HTTP 状态码⾮ 2xx,主动抛出异常(如 404、500 等) response.raise_for_status() # 将响应体解析为 JSON 字典(安全⽅式,避免使⽤危险的 eval()) data = response.json() # 检查 API 业务层返回状态码(该 API 约定 status=200 表示成功) if data.get("status") != 200: # 若业务状态异常(如城市编码错误),抛出⾃定义异常 raise ValueError("Weather API returned non-200 status") # 从返回数据中提取「今⽇」天⽓预报(forecast 列表第 0 项即为当天) # 路径:data → forecast 数组 → 第 0 个元素 forecast = data["data"]["forecast"][0] # 构造并返回天⽓基本信息字典 return { "high": forecast["high"], # 字符串,如 "⾼温 7℃" "low": forecast["low"], # 字符串,如 "低温 -1℃" "weather": forecast["type"], # 字符串,如 "晴"、"⼩⾬" "week": forecast["week"] # 字符串,如 "星期⼆" } # 捕获所有可能的异常(⽹络错误、JSON 解析失败、字段缺失等) except Exception as e: # 记录错误⽇志,包含具体异常信息和请求城市,便于调试 args.logger.error(f"Weather query failed for '{location}': {e}") # 统⼀返回空值结构,确保插件健壮性(不会因异常导致 Agent 崩溃) return { "high": None, "low": None, "weather": None, "week": None }
如果只有一个插件的情况下, 即使不在提示词中声明插件的调用, 插件也会自动调用
工作流编辑
工作流作用: 它将一个复杂的任务分解成一系列可管理的、按顺序或按条件执行的步骤,并通过图形化的界面将这些步骤连接起来。
Coze的两种工作流类型
节点=工作流的核心组件
节点定义: 每个节点是一个具有特定功能的独立组件,负责处理数据、执行任务
通过将这些不同功能的节点连接起来,我们就能够精确地控制数据流向和任务执行顺序,从而实现任何复杂的业务逻辑。
工作流4种不同形式
创建工作流的标准流程
案例1: 跨境电商答疑助手(对话流)
多轮交互、上下文记忆、理解对话历史
痛点: 学生学习中产生大量问题,教师答疑压力大
- 如果属于打招呼/找人工,直接回复结果
- 否则,进入知识检索
- 检索出相关上下文(基于RAG大模型回答)
- 没有检索出上下文(基于闲聊大模型回答)
案例2: 历史人物视频生成(工作流)
功能类AI应用、批量数据处理、多步骤自动化、无需对话交互
目标: 输入人物名字,自动生成视频
Agent发布
注册微信公众号
第一步: 访问微信公众号平台:https://mp.weixin.qq.com/,选择注册
第二步: 填写基本信息完成注册
获取AppleID
第一步: 访问微信公众号平台:https://mp.weixin.qq.com/,选择登陆
第二步: 找到账号管理,前往公众号详情页
选择Agent发布
选择发布渠道
检验结果
原文地址:https://blog.csdn.net/csdn20221005/article/details/158379354 |