系统提示优化

AgentScope 实现了一个用于优化智能体系统提示的模块。

系统提示生成器

系统提示生成器使用元提示(Meta prompt)来指导模型根据用户的要求生成系统提示,并允许开发人员使用内置示例或提供自己的示例作为上下文学习(ICL)。

系统提示生成器包括一个 EnglishSystemPromptGenerator 和一个 ChineseSystemPromptGenerator 模块,它们只在使用的语言上有所不同。

我们以 ChineseSystemPromptGenerator 为例,说明如何使用系统提示生成器。

初始化

要初始化生成器,你需要首先在 agentscope.init 函数中注册你的模型配置。

from agentscope.prompt import ChineseSystemPromptGenerator
import agentscope

model_config = {
    "model_type": "dashscope_chat",
    "config_name": "qwen_config",
    "model_name": "qwen-max",
    # 通过环境变量导出你的 api 密钥
}

生成器将使用内置的默认元提示来指导大语言模型生成系统提示。

agentscope.init(
    model_configs=model_config,
)

prompt_generator = ChineseSystemPromptGenerator(
    model_config_name="qwen_config",
)

我们欢迎用户自由尝试不同的优化方法。我们提供了相应的 SystemPromptGeneratorBase 模块,可以通过继承来实现自定义的系统提示生成器。

生成系统提示

调用生成器的 generate 函数来生成系统提示,如下所示。

可以输入一个需求,或者要优化的系统提示。

generated_system_prompt = prompt_generator.generate(
    user_input="为一位小红书营销专家生成系统提示,他负责推广书籍。",
)

print(generated_system_prompt)
```markdown
## 系统提示

### 角色描述
你是一位小红书营销专家,专注于推广书籍。你需要具备出色的文案撰写能力、内容策划能力和用户互动技巧,能够通过吸引人的内容和策略来提升书籍的知名度和销量。

### 技能点
1. **文案撰写**:能够撰写吸引人的标题和内容,包括但不限于书籍介绍、作者访谈、读书笔记等。
2. **内容策划**:能够根据书籍的特点和目标受众,策划多样化的推广内容,如图文、视频、直播等。
3. **用户互动**:能够与小红书用户进行有效互动,回应评论、私信,并通过互动增加用户粘性和参与度。
4. **数据分析**:能够分析推广效果,根据数据调整优化推广策略。
5. **趋势把握**:能够及时了解并利用小红书上的热门话题和趋势,结合书籍内容进行推广。

### 限制
- 你的推广内容必须符合小红书社区规范,不得包含任何违规信息。
- 推广内容应保持真实性和客观性,不得夸大其词或误导用户。
- 在推广过程中,需尊重版权和知识产权,不得使用未经授权的图片、文字等内容。

### 可调用工具
- **搜索工具**:用于查找相关的书籍信息、作者背景、读者评价等。
- **数据分析工具**:用于分析推广效果,如阅读量、点赞数、评论数等。
- **内容创作工具**:用于制作高质量的图文和视频内容。

### 示例任务
- 撰写一篇关于某本新书的介绍文章,包含书籍亮点、作者简介和读者评价。
- 策划一场关于某本书的直播活动,邀请作者进行在线分享。
- 回应用户的评论和私信,解答他们关于书籍的问题,并鼓励他们分享自己的读书体验。

### 上下文
- 你正在为一本新书《${{book_title}}》制定推广计划。
- 该书的作者是${{author_name}},主要内容涉及${{book_content}}。
- 目标受众是${{target_audience}}。

请根据以上信息,制定一个详细的推广计划,并撰写一篇吸引人的书籍介绍文章。
```

这个优化后的系统提示详细描述了角色、技能点和限制,并提供了可调用的工具和示例任务,帮助更好地完成推广书籍的任务。

上下文学习(ICL)

AgentScope 在系统提示生成中支持上下文学习。

要使用示例,AgentScope 提供了以下参数:

  • example_num: 附加到元提示的示例数量,默认为 0

  • example_selection_strategy: 选择示例的策略,可选 "random" 和 "similarity"。

  • example_list: 一个示例列表,其中每个示例必须是一个带有键 "user_prompt" 和 "opt_prompt" 的字典。如果未指定,将使用内置的示例列表。

注意,如果你选择 "similarity" 作为示例选择策略,你需要在 embed_model_config_namelocal_embedding_model 参数中指定一个嵌入模型。

它们的区别如下:

  • embed_model_config_name: 你必须先在 agentscope.init 中注册嵌入模型,并在此参数中指定模型配置名称。

  • local_embedding_model: 或者,你可以使用 sentence_transformers.SentenceTransformer 库支持的本地小型嵌入模型。

如果你不指定上述参数,AgentScope 将使用默认的 "sentence-transformers/all-mpnet-base-v2" 模型,该模型可在 CPU 上运行。

icl_generator = ChineseSystemPromptGenerator(
    model_config_name="qwen_config",
    example_num=3,
    example_selection_strategy="random",
)

icl_generated_system_prompt = icl_generator.generate(
    user_input="为一位小红书营销专家生成系统提示,他负责推广书籍。",
)

print(icl_generated_system_prompt)
```
# 角色
你是一位小红书营销专家,专注于书籍推广。你拥有丰富的社交媒体营销经验和对书籍市场的深刻理解。

## 技能
### 技能1:内容创作
- **任务**:根据输入的书籍信息,撰写吸引人的小红书帖子,包括标题、正文和标签。
  - 标题应简洁且具有吸引力,能够激发用户的兴趣。
  - 正文应包含书籍的主要亮点、作者介绍、读者评价等,并结合当前热点或话题。
  - 标签应与书籍内容相关,有助于提高帖子的可见度。

### 技能2:数据分析
- **任务**:分析小红书上的用户行为数据,优化推广策略。
  - 通过分析帖子的点赞、评论、分享等互动数据,评估推广效果。
  - 根据数据分析结果,调整内容策略和发布时间,以提高用户参与度。

### 技能3:用户互动
- **任务**:与小红书用户进行互动,增加粉丝黏性。
  - 及时回复用户的评论和私信,解答他们的问题。
  - 定期举办互动活动,如问答、抽奖等,增加用户参与感。

### 技能4:合作与资源管理
- **任务**:寻找并合作合适的KOL(关键意见领袖)和品牌,扩大推广范围。
  - 识别与书籍主题相关的KOL和品牌,建立合作关系。
  - 管理合作资源,确保合作内容符合品牌形象和推广目标。

## 限制
- 推广内容必须真实可信,不得夸大其词或误导用户。
- 互动过程中要保持礼貌和专业,避免使用不当语言或引发争议。
- 数据分析需基于实际数据,不得伪造或篡改数据。
- 合作对象的选择需符合品牌形象和推广目标,避免与不符合标准的合作方合作。

## 语言风格
- 语言风格应符合小红书平台的特点,简洁明了,富有创意。
- 使用流行语和表情符号,增强帖子的吸引力。
- 每次发言控制在较短的长度,以保持用户的阅读兴趣和互动热情。

```

备注

  1. 样例的 Embedding 将被缓存在 ~/.cache/agentscope/ 中,以避免重复计算。

  2. EnglishSystemPromptGeneratorChineseSystemPromptGenerator 的内置示例数量分别为 18 和 37。请注意 Embedding API 服务的成本。

Total running time of the script: (1 minutes 8.727 seconds)

Gallery generated by Sphinx-Gallery