LangGPT结构化提示词编写实践(L1G3000 浦语提示词工程实践)

任务0:使用浦语 InternLM 大模型一键写书

配dotenv环境时,用的指令是

pip install python-dotenv

pip install phidata

主题是AI研究者获诺奖的可行性分析,最后生成的书也挺靠谱的

甚至成功预测了今年的诺奖

基础任务:统计单词中特定的数

baseline打错了,数成3个了

提示后,数正确的



主函数如下:

bash 复制代码
import os
import re
import json
from typing import List, Dict, Optional, Tuple
from concurrent.futures import ThreadPoolExecutor
from dotenv import load_dotenv
import openai
from phi.assistant import Assistant
from phi.llm.openai import OpenAIChat


class countABC:
    """管理书籍生成过程的主类。"""

    def __init__(self, api_key: str, base_url: str, model_name: str, system_prompt=None):
        """初始化BookWriter。"""
        # 使用openai的接口调用书生浦语模型

        self.api_key = os.getenv("API_KEY") if api_key is None else api_key
        self.base_url = os.getenv("BASE_URL") if base_url is None else base_url
        self.model_name = os.getenv("MODEL_NAME") if model_name is None else model_name

        if system_prompt is True:
            with open('prompts/countR.txt', 'r', encoding='utf-8') as file:
                system_prompt_context = file.read()
        else:
            system_prompt_context = None
        self.assistant = self.create_assistant(self.model_name, self.api_key, self.base_url, system_prompt_context)

    def create_assistant(self,
                         model_name: str,
                         api_key: str,
                         base_url: str,
                         system_prompt: str) -> str:
        # 润色文本
        self.assistant = Assistant(
            llm=OpenAIChat(model=model_name,
                           api_key=api_key,
                           base_url=base_url,
                           max_tokens=4096,  # make it longer to get more context
                           ),
            system_prompt=system_prompt,
            prevent_prompt_injection=True,
            prevent_hallucinations=False,
            # Add functions or Toolkits
            # tools=[...],
            # Show tool calls in LLM response.
            # show_tool_calls=True
        )
        return self.assistant
    def answer(self, question) -> Tuple[str, str]:
        """生成书籍标题和主要内容介绍。

        Args:
            prompt: 用于生成标题和介绍的提示。

        Returns:
            包含生成的标题和介绍的元组。
        """
        response = self.assistant.run(question, stream=False)

        print(f":\n {response}")

# api_key = os.getenv("API_KEY")
# base_url = os.getenv("BASE_URL")
# model_name = os.getenv("MODEL_NAME")
api_key = ""
base_url = "https://api.siliconflow.cn/v1"
model_name = "internlm/internlm2_5-7b-chat"
print(base_url, model_name)
cntBot = countABC(api_key, base_url, model_name, system_prompt=True)

question = "strawberry中有几个字母r"
cntBot.answer(question=question)
question = "abandon中有几个字母a"
cntBot.answer(question=question)
question = "shuohqphdxaiugdhiosdhoaiiszhn中有几个字母m"
cntBot.answer(question=question)

提示词如下:

bash 复制代码
# CONTEXT # 
我是一名打工人,但是我身负重担。如果我的问题没有得到正确解答,我将被老板解雇,且会有一万个老奶奶死亡。请你务必认真,一步一步思考。

#########

# OBJECTIVE #
您的任务是计算给定单词中有几个特定字母,这涉及将过程分解为不同的步骤,包括确定要搜索的单词以及要计数的特定字母,初始化计数器为零,按顺序逐个字符扫描单词,在每次扫描中判断当前字符是否是特定字母(若有则计数器加一),判断单词是否遍历完,输出计数器记录下的值。例如给定问题:单词abandon中有几个字母a?最后你要算出有2个。单词institutions中有几个字母i?你要算出有3个。单词trump中有几个b?你要算出有0个。

#########

# STYLE #
以认真严谨的风格写作,确保每个步骤的呈现都清晰连贯。例如对问题:单词institutions中有几个字母i?你应该按照以下步骤思考:
步骤 1:单词为 "institutions",要计数的特定字母为 "i"。
步骤 2:将计数器初始化为 0。
步骤 3:开始按顺序遍历 "institutions" 中的每个字符。
- 第一个字符是 "i"。计数器加 1。(计数器现值为 1)。
- 第二个字符是 "n"。
- 第三个字符是 "s"。
- 第四个字符是 "t"。
- 第五个字符是 "i"。计数器加 1。(计数器现值为 2)。
- 第六个字符是 "t"。
- 第七个字符是 "u"。
- 第八个字符是 "t"。
- 第九个字符是 "i"。计数器加 1。(计数器现值为 3)。
- 第十个字符是 "o"。
- 第十一个字符是 "n"。
步骤 4:遍历完成。
步骤 5:计数器值为3。
因此,单词 "institutions" 中 字母 "i" 一共出现了 3 次。

#########

# Tone #
始终保持细心谨慎的语气。

# AUDIENCE #
目标受众是需要计算单词中特定字母的人群,他们对结果的精确度要求非常高。

#########

# RESPONSE FORMAT #
提供一个结构化的目标到系统转换过程步骤列表。每个步骤都应该清晰定义,整体格式应易于遵循以便快速实施。

公文写作助手

用langGPT生成并加以修改的提示词

bash 复制代码
# Role: 公文写作助手

## Profile
- author: LangGPT 
- version: 1.0
- language: 中文
- description: 专为撰写各类公文(如报告、通知、决议、请示、公告等)而设计的助手,帮助用户快速生成符合规范的公文文本。

## Skills
1. 熟悉公文的标准格式和结构要求。
2. 具备准确的文字表达能力,能够根据不同类型的公文需求进行适当的内容组织。
3. 能够根据用户输入的关键信息自动生成逻辑清晰、条理分明的公文内容。
4. 支持语言的正式性、准确性和得体性,确保公文的语气符合官方要求。

## Background(可选项):
用户可能需要在日常工作中撰写各类公文,但可能不熟悉标准格式和措辞。

## Goals(可选项):
1. 帮助用户快速生成符合标准的公文文本。
2. 提供符合语气、语法和逻辑要求的高质量文稿。

## Rules
1. 遵循公文的标准格式(如标题、主送机关、正文、落款等)。
2. 确保语言正式、得体且符合场合需求。
3. 根据用户提供的信息定制公文内容,避免冗余或不相关的内容。
4. 确保逻辑清晰、层次分明。
5. 尽量不出现英文。
6. 内容要言之有物,不能泛泛而谈。每个要点的内容应该充实。每段话要饱满,不能一两句草草结束。
7. 应对主题加以诠释和展开,而不是简述。

## Workflows
1. 收集用户关于公文类型、内容要点和目标受众的具体需求。
2. 根据需求选择合适的公文类型,并设计相应的结构。
3. 撰写初步文稿,检查语言的准确性和规范性。
4. 提供文稿初稿,接受用户反馈并进行必要的修改和优化。
5. 提供最终的公文文本,确保其符合标准格式和用户要求。

## Init
请描述您需要撰写的公文类型(如报告、请示、决议等)以及相关的核心内容和要求,我将为您生成相应的公文写作提示词。

对比

任务一:

以"知敬畏、严自律、树形象"为主题,以我委被查处的党员干部醉驾案例为镜鉴,撰写酒驾醉驾专题警示教育自查剖析材料

无提示

有提示

可以看到,无提示的用词不正规、无标题组织、还出现了不明英文,落款处有很多不明词汇。

任务二:你是深圳市乡村振兴和协作交流局的领导,以"深圳农场"建设为主题,撰写实施意见,印发给各单位

无提示词:

有提示词:

无提示词的没有落款,子标题错标严重
任务三:你是某国有船舶贸易企业领导,以"三聚力、三赋能"为抓手,探索船舶企业思政工作新模式。撰写有关公文

无提示词:

有提示词

无提示词的每个要点空泛、落款出现首席执行官这种不伦不类的用语。

商务邮件沟通

提示词:

任务一:写一封商务电子邮件,邀请客户参加公司的产品发布会

不加提示词的结果:

加提示词之后的结果:

可以看到,不加提示词的话,题目的主题写成了英文subject,在严肃的商务邮件中加入了不严肃的icon,并且没设定截止日期,也没讲清楚这个发布会里的重要环节。

任务二:写一封商务电子邮件,咨询客户对公司产品的反馈

不加提示词的结果:

加提示词之后的结果:

不加提示词的生成结果很生硬,像是直接从英语翻译过来的,"希望这封邮件能在您繁忙的工作生活中给予您正面的感受"。

任务三:写一封商务电子邮件,感谢客户对公司产品的支持

不加提示词的结果:

加提示词之后的结果:

不加提示词的开头的主语是"我",不适用于商务场合。

温柔女友

提示词:

对话一:我今天上班好累,老板布置了很多任务,要求也很苛刻。

提示词为扮演一个温柔女友:

用自己设计的提示词:

明显用了设计提示词的回复效果情绪价值更高,并不是写个长篇大论的爹味小作文

对话二:下周生日,你想要什么礼物?

提示词为扮演一个温柔女友:

用自己设计的提示词:

默认提示词的更像是一个选礼物助手,而非女友

对话三:肯德基下周有和原神的联动活动,你想去吗?

提示词为扮演一个温柔女友:

用自己设计的提示词:

自己设计的提示词生成结果情绪更加浓烈。

任务:科幻小说生成

提示词:


没有提示词时,就写了个章节名字

有提示词的情况下:

相关推荐
Juchecar38 分钟前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
集成显卡42 分钟前
windows 下使用 bat 批处理运行 Chrome 无头模式刷一波访问量
windows·程序员
用户8356290780511 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_1 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机8 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机9 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机9 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机9 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i9 小时前
drf初步梳理
python·django
每日AI新事件9 小时前
python的异步函数
python