ChatGPT(二) Prompt和应用

prompt的迭代优化

当对当前任务有一定的了解与想法之后,可以先编写初步的prompt版本。如果得到的结果不理想则对prompt进行迭代改进(根据得到的结果不断地添加一定的限制),从而获得最终的合适的prompt。增加限制的方向:

1. 限制语言模型输出的长度,例如可以指定语句数、词数、汉字数等。

2. chatgpt生成的文本又是会出现错误,即处理抓错文本细节。例如:让chatgpt生成一个营销广告,但是在生成的广告中chatgpt认为该产品面临的是家具零销商而不是终端消费者。因此,需要对prompt进行进一步的限制从而解决chatgpt出现错误的可能性。调整的目的:根据不同的目标受众关注不同的方面,输出风格和内容上都适合的文本。

设计高效的prompt也需要不断地而优化迭代。

只有当我们得到的prompt在样例样本上的表现较好之后,才会考虑将其用于多个样本上并在此基础上对prompt的性能进行评估,基于上述查看是否需要进行进一步的细致优化。

应用

文本概括

    text = f"""

    这个熊猫公仔是我给女儿的生日礼物,她很喜欢,去哪都带着。 公仔很软,超级可爱,面部表情也很和善。

    但是相比于价钱来说, 它有点小,我感觉在别的地方用同样的价钱能买到更大的。 快递比预期提前了一天到货,

    所以在送给女儿之前,我自己玩了会。

    """

任务:对产品评论生成一个摘要并限制长度

    prompt = f"""

    把用三个反引号括起来的产品总结成一句话\

    且这句话在30个字以内

    '''{text}'''

    """

结果

这个熊猫公仔软萌可爱,女儿喜欢,但价钱稍贵,大小有点小,快递提前到货。

任务:设置对产品的关键角度侧重

例如:平台侧重于用户体验,商家侧重于傻瓜拼价格和质量,物流侧重于运输的时效性

    prompt = f"""

    把用三个反引号括起来的产品总结成一句话\

    内容侧重于用户体验\

    且这句话在30个字以内

    '''{text}'''

    """

结果

这个熊猫公仔软萌可爱,面部表情和善,但价钱稍贵,大小有点小,快递提前到货。

任务:关键信息提取

例如:分别提取出运输、商品质量和价格的相关的信息

    prompt = f"""

    把用三个反引号括起来的产品评论中的运输、产品质量与价格相关的描述分别提取出来\

    将提取出的信息按照运输:xxx信息,产品质量与价格:XXX信息的格式输出

    '''{text}'''

    """

结果

运输:快递比预期提前了一天到货
产品质量与价格:相比于价钱来说,它有点小,我感觉在别的地方用同样的价钱能买到更大的。

推断

情感推断

    text = f"""

    我需要一盏漂亮的卧室灯,这款灯具有额外的储物功能,价格也不算太高。

    我很快就收到了它。在运输过程中,我们的灯绳断了,但是公司很乐意寄送了一个新的。

    几天后就收到了。这款灯很容易组装。我发现少了一个零件,于是联系了他们的客服,他们很快就给我寄来了缺失的零件!

    在我看来,Lumina 是一家非常关心顾客和产品的优秀公司!

    """

    # print(text)

    prompt = f"""

    把用三个反引号括起来的产品评论中的感情输出出来\

    用一个单词回答,评论中涉及到的是【正面】还是【负面】情绪\

    用五个单词描述评论中涉及到的情感并将答案格式化为由逗号隔开的单词列表形式\

    判断评论中给出的情绪是否为愤怒

    '''{text}'''

    """

结果

正面
满意,快速,容易,关心顾客,优秀

如上所示结果不是我们想要的,调整prompt如下之后测试:

    prompt = f"""

    下述评论文本中表达出来的情感是什么?\

    请用一个单词回答评论文本中涉及到的情绪是【正面】还是【负面】情绪\

    请用五个单词描述评论文本中涉及到的情感,并将答案格式化为由逗号隔开的单词列表形式\

    评论文本中表达出的情感是否为愤怒,并给出是否为愤怒情绪的回答\

    请对上述问题分别作答

    评论文本:'''{text}'''

    """

结果

情感:满意, 赞赏, 感激, 积极, 肯定
情绪:正面
情感是否为愤怒:否

chatgpt将第一个和第三个问题归结为一个问题进行了整合作答

    prompt = f"""

    问题一:下述评论文本中表达出来的情感是什么?\

    问题二:请用一个单词回答评论文本中涉及到的情绪是【正面】还是【负面】情绪\

    问题三:请用五个单词描述评论文本中涉及到的情感,并将答案格式化为由逗号隔开的单词列表形式\

    问题四:评论文本中表达出的情感是否为愤怒,并给出是否为愤怒情绪的回答\

    请对问题一、二、三、四分别作答

    评论文本:'''{text}'''

    """

问题一:评论文本中表达出来的情感是积极的。
问题二:正面情绪。
问题三:满意,快速,乐意,容易,关心。
问题四:评论文本中表达出的情感不是愤怒情绪。

信息提取与主题推断

    prompt = f"""

    问题一:请从下述评论文本中提取出产品名称、对应的制造公司以及评论展示出的情绪并以json文本的格式输出\

    问题二:请给与下述评论文本中一个特定的标题

    评论文本:'''{text}'''

    """

问题一的输出结果为:
{
  "产品名称": "卧室灯",
  "制造公司": "Lumina",
  "情绪": "积极"
}

问题二的输出结果为:
"漂亮的卧室灯带有额外储物功能"

文本转换

文本翻译

大模型进行的语言翻译摒弃了传统翻译器的逐词替换而是可以通过上下文理解原句的意图选择合适的翻译词汇。

   

    text = f"""

    莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕!一蓑烟雨任平生。

    """

prompt = f"""

    问题1:请问下数文本是什么语言?

    问题2:将此文本翻译成英语、德语以及西班牙语

    问题3:将文本翻译成英文并展示成洒脱与压抑两种语气

    问题4:将翻译文本展示成如下格式:

    原始消息:

    英文翻译:

    德语翻译:

    西班牙语翻译:

    文本:'''{text}'''

    """

结果

问题1:请问下数文本是什么语言?
答:这段文本是中文。

问题2:将此文本翻译成英语、德语以及西班牙语
答:
英语翻译:Do not listen to the sound of leaves in the forest, why not sing and walk slowly. A bamboo stick and straw shoes are lighter than a horse, who is afraid! Let the drizzle of a straw raincoat accompany me throughout my life.
德语翻译:Höre nicht auf das Geräusch von Blättern im Wald, warum nicht singen und langsam gehen. Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Lass den Nieselregen eines Strohregenmantels mich mein ganzes Leben begleiten.
西班牙语翻译:No escuches el sonido de las hojas en el bosque, ¿por qué no cantar y caminar despacio? Un bastón de bambú y zapatos de paja son más ligeros que un caballo, ¡quién tiene miedo! Deja que la llovizna de un impermeable de paja me acompañe toda la vida.

问题3:将文本翻译成英文并展示成洒脱与压抑两种语气
答:
洒脱语气:Do not pay attention to the rustling of leaves in the woods, why not sing and stroll leisurely. A bamboo cane and straw shoes are lighter than a horse, who cares! Let the drizzle of a straw raincoat accompany me throughout my life.
压抑语气:Ignore the sound of leaves rustling in the woods, why not sigh and walk slowly. A bamboo cane and straw shoes are lighter than a horse, who is afraid! Let the drizzle of a straw raincoat accompany me throughout my life.

问题4:将翻译文本展示成如下格式:
原始消息:
莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕!一蓑烟雨任平生。

英文翻译:
Do not listen to the sound of leaves in the forest, why not sing and walk slowly. A bamboo stick and straw shoes are lighter than a horse, who is afraid! Let the drizzle of a straw raincoat accompany me throughout my life.

德语翻译:
Höre nicht auf das Geräusch von Blättern im Wald, warum nicht singen und langsam gehen. Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Lass den Nieselregen eines Strohregenmantels mich mein ganzes Leben begleiten.

西班牙语翻译:
No escuches el sonido de las hojas en el bosque, ¿por qué no cantar y caminar despacio? Un bastón de bambú y zapatos de paja son más ligeros que un caballo, ¡quién tiene miedo! Deja que la llovizna de un impermeable de paja me acompañe toda la vida.

文本:
莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕!一蓑烟雨任平生。

多个prompt

    prompt = f"""

    请直接告诉我下述文本是什么语种,直接输出语种,例如中文,不要添加任何其他消息:

    文本:'''{text}'''

    """

    # print(prompt)

    lang = get_completions(prompt)

    print(f"原始消息({lang}):{text}\n")

    prompt=f"""

    将此文本翻译成英语、德语以及西班牙语,并写成

     英文翻译:

     德语翻译:

     西班牙语翻译:

     的格式:

     '''{text}'''

    """

    response = get_completions(prompt)

    print(response)

注意:print(f"原始消息({lang}):{text}\n")中的括号要使用英文!

结果

原始消息(中文):
    莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕!一蓑烟雨任平生。


英文翻译:
Do not listen to the sound of leaves rustling through the woods, why not sing and stroll slowly? A bamboo cane and straw shoes are lighter than a horse, who is afraid! A straw raincoat and misty rain accompany me throughout my life.

德语翻译:
Höre nicht auf das Geräusch von Blättern, die durch den Wald rascheln, warum nicht singen und langsam spazieren gehen? Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Ein Strohmantel und Nebelregen begleiten mich mein ganzes Leben lang.

西班牙语翻译:
No escuches el sonido de las hojas que crujen en el bosque, ¿por qué no cantar y pasear lentamente? Un bastón de bambú y zapatos de paja son más ligeros que un caballo, ¡quién tiene miedo! Un abrigo de paja y lluvia brumosa me acompañan durante toda mi vida.

循环翻译多种语言并输出

import time

   

user_message=[

        "Höre nicht auf das Geräusch von Blättern, die durch den Wald rascheln, warum nicht singen und langsam spazieren gehen? Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Ein Strohmantel und Nebelregen begleiten mich mein ganzes Leben lang.",

        "莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕!一蓑烟雨任平生。",

        "No escuches el sonido de las hojas que crujen en el bosque, ¿por qué no cantar y pasear lentamente? Un bastón de bambú y zapatos de paja son más ligeros que un caballo, ¡quién tiene miedo! Un abrigo de paja y lluvia brumosa me acompañan durante toda mi vida.",

        "Do not listen to the sound of leaves rustling through the woods, why not sing and stroll slowly? A bamboo cane and straw shoes are lighter than a horse, who is afraid! A straw raincoat and misty rain accompany me throughout my life."

    ]

    for text in user_message:

        time.sleep(20)

        prompt = f"""

        请直接告诉我下述文本是什么语种,直接输出语种,例如中文,不要添加任何其他消息:

        文本:'''{text}'''

        """

        lang = get_completions(prompt)

        print(f"原始消息({lang}):{text}\n")

        prompt=f"""

        将此文本翻译成英语、德语以及西班牙语,并写成

        英文翻译:

        德语翻译:

        西班牙语翻译:

        的格式:

        '''{text}'''

        """

        response = get_completions(prompt)

        print(response, "\n=============================================================================")

注意列表消息之间加逗号

结果

原始消息(德语):Höre nicht auf das Geräusch von Blättern, die durch den Wald rascheln, warum nicht singen und langsam spazieren gehen? Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Ein Strohmantel und Nebelregen begleiten mich mein ganzes Leben lang.

英文翻译:
Don't listen to the sound of leaves rustling through the forest, why not sing and take a slow walk? A bamboo stick and straw shoes are lighter than a horse, who is afraid! A straw coat and misty rain accompany me throughout my life.

德语翻译:
Höre nicht auf das Geräusch von Blättern, die durch den Wald rascheln, warum nicht singen und langsam spazieren gehen? Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Ein Strohmantel und Nebelregen begleiten mich mein ganzes Leben lang.

西班牙语翻译:
No escuches el sonido de las hojas que crujen en el bosque, ¿por qué no cantar y dar un paseo lento? Un palo de bambú y zapatos de paja son más ligeros que un caballo, ¡quién tiene miedo! Un abrigo de paja y lluvia brumosa me acompañan durante toda mi vida.
=============================================================================
原始消息(中文):莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕!一蓑烟雨任平生。

英文翻译:
Do not listen to the sound of leaves rustling through the woods, why not sing and stroll slowly? A bamboo cane and straw shoes are lighter than a horse, who is afraid! A straw raincoat allows one to wander through life in the misty rain.

德语翻译:
Höre nicht auf das Geräusch von Blättern, die durch den Wald rascheln, warum nicht singen und langsam spazieren gehen? Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Ein Strohmantel erlaubt es einem, im nebligen Regen durch das Leben zu wandern.

西班牙语翻译:
No escuches el sonido de las hojas que crujen en el bosque, ¿por qué no cantar y pasear lentamente? Un bastón de bambú y zapatos de paja son más ligeros que un caballo, ¡quién tiene miedo! Un abrigo de paja permite vagar por la vida en la lluvia brumosa.
=============================================================================
原始消息(西班牙语):No escuches el sonido de las hojas que crujen en el bosque, ¿por qué no cantar y pasear lentamente? Un bastón de bambú y zapatos de paja son más ligeros que un caballo, ¡quién tiene miedo! Un abrigo de paja y lluvia brumosa me acompañan durante toda mi vida.

英文翻译:
Don't listen to the sound of rustling leaves in the forest, why not sing and walk slowly? A bamboo cane and straw shoes are lighter than a horse, who is afraid! A straw coat and misty rain accompany me throughout my life.

德语翻译:
Hören Sie nicht auf das Geräusch raschelnder Blätter im Wald, warum nicht singen und langsam spazieren gehen? Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Ein Strohmantel und nebliger Regen begleiten mich mein ganzes Leben lang.

西班牙语翻译:
No escuches el sonido de las hojas que crujen en el bosque, ¿por qué no cantar y caminar lentamente? Un bastón de bambú y zapatos de paja son más ligeros que un caballo, ¡quién tiene miedo! Un abrigo de paja y lluvia brumosa me acompañan durante toda mi vida.
=============================================================================
原始消息(英文):Do not listen to the sound of leaves rustling through the woods, why not sing and stroll slowly? A bamboo cane and straw shoes are lighter than a horse, who is afraid! A straw raincoat and misty rain accompany me throughout my life.

英文翻译:
Do not listen to the sound of leaves rustling through the woods, why not sing and stroll slowly? A bamboo cane and straw shoes are lighter than a horse, who is afraid! A straw raincoat and misty rain accompany me throughout my life.

德语翻译:
Hören Sie nicht auf das Geräusch von raschelnden Blättern im Wald, warum nicht singen und langsam spazieren gehen? Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Ein Strohmantel und ein nebliger Regen begleiten mich mein ganzes Leben lang.

西班牙语翻译:
No escuches el sonido de las hojas que crujen en el bosque, ¿por qué no cantar y pasear lentamente? Un bastón de bambú y zapatos de paja son más ligeros que un caballo, ¡quién tiene miedo! Un impermeable de paja y una lluvia brumosa me acompañan durante toda mi vida.
=============================================================================

语气与写作风格调整

time.sleep(20)

        prompt = f"""

        请直接告诉我下述文本是什么语种,直接输出语种,例如中文,不要添加任何其他消息:

        文本:'''{text}'''

        """

        # print(prompt)

        lang = get_completions(prompt)

        print(f"原始消息({lang}):{text}\n")

        # prompt=f"""

        # 将此文本翻译成英语、德语以及西班牙语,并写成

        # 英文翻译:

        # 德语翻译:

        # 西班牙语翻译:

        # 的格式:

        # '''{text}'''

        # """

        prompt=f"""

        将下述文本修改成诗歌的格式:

        '''{text}'''

        """

        response = get_completions(prompt)

        print(response, "\n=============================================================================")

结果

原始消息(德语):Höre nicht auf das Geräusch von Blättern, die durch den Wald rascheln, warum nicht singen und langsam spazieren gehen? Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Ein Strohmantel und Nebelregen begleiten mich mein ganzes Leben lang.

Höre nicht auf das Geräusch von Blättern,
die durch den Wald rascheln,
warum nicht singen und langsam spazieren gehen?

Ein Bambusstock und Strohschuhe sind leichter als ein Pferd,
wer hat Angst!

Ein Strohmantel und Nebelregen begleiten mich mein ganzes Leben lang.
=============================================================================
原始消息(中文):莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕!一蓑烟雨任平生。

莫听穿林打叶声,
何妨吟啸且徐行。
竹杖芒鞋轻胜马,
谁怕!
一蓑烟雨任平生。
=============================================================================
原始消息(西班牙语):No escuches el sonido de las hojas que crujen en el bosque, ¿por qué no cantar y pasear lentamente? Un bastón de bambú y zapatos de paja son más ligeros que un caballo, ¡quién tiene miedo! Un abrigo de paja y lluvia brumosa me acompañan durante toda mi vida.

No escuches el sonido de las hojas que crujen en el bosque,
¿por qué no cantar y pasear lentamente?
Un bastón de bambú y zapatos de paja
son más ligeros que un caballo, ¡quién tiene miedo!

Un abrigo de paja y lluvia brumosa
me acompañan durante toda mi vida.
=============================================================================
原始消息(英文):Do not listen to the sound of leaves rustling through the woods, why not sing and stroll slowly? A bamboo cane and straw shoes are lighter than a horse, who is afraid! A straw raincoat and misty rain accompany me throughout my life.

不听林间叶声响,
何妨歌唱慢步行。
竹杖草鞋轻如马,
谁惧!草衣雨雾伴。
=============================================================================

上述结果有一个问题,chatgpt自动将英文翻译成了中文而后才进行了格式的修改。这个问题存在的原因,据chatgpt自我解释是:在前面的命令中并未有翻译的指令,可能是因为翻译是一个常见的需求,所以机器人默认进行了翻译。另外,机器人可能会根据上下文和用户的意图进行推测,以提供更准确的回答。

因此,基于上述问题修改prompt如下:

prompt=f"""

        将下述文本修改成诗歌的格式,且不需要对文本进行翻译:

        '''{text}'''

        """

        response = get_completions(prompt)

        print(response, "\n=============================================================================")

结果

原始消息(德语):Höre nicht auf das Geräusch von Blättern, die durch den Wald rascheln, warum nicht singen und langsam spazieren gehen? Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Ein Strohmantel und Nebelregen begleiten mich mein ganzes Leben lang.

Höre nicht auf das Geräusch von Blättern,
die durch den Wald rascheln,
warum nicht singen und langsam spazieren gehen?

Ein Bambusstock und Strohschuhe sind leichter als ein Pferd,
wer hat Angst!

Ein Strohmantel und Nebelregen begleiten mich mein ganzes Leben lang.
=============================================================================
原始消息(中文):莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕!一蓑烟雨任平生。

莫听穿林打叶声,
何妨吟啸且徐行。
竹杖芒鞋轻胜马,
谁怕!
一蓑烟雨任平生。
=============================================================================
原始消息(西班牙语):No escuches el sonido de las hojas que crujen en el bosque, ¿por qué no cantar y pasear lentamente? Un bastón de bambú y zapatos de paja son más ligeros que un caballo, ¡quién tiene miedo! Un abrigo de paja y lluvia brumosa me acompañan durante toda mi vida.

No escuches el sonido de las hojas que crujen en el bosque,
¿por qué no cantar y pasear lentamente?
Un bastón de bambú y zapatos de paja
son más ligeros que un caballo, ¡quién tiene miedo!

Un abrigo de paja y lluvia brumosa
me acompañan durante toda mi vida.
=============================================================================
原始消息(英文):Do not listen to the sound of leaves rustling through the woods, why not sing and stroll slowly? A bamboo cane and straw shoes are lighter than a horse, who is afraid! A straw raincoat and misty rain accompany me throughout my life.

Do not listen to the sound of leaves rustling through the woods,
Why not sing and stroll slowly?
A bamboo cane and straw shoes are lighter than a horse,
Who is afraid!
A straw raincoat and misty rain accompany me throughout my life.
=============================================================================

结果正确,因此chatgpt应该还具有自动分析回答出错的工程。

文件格式转换

        time.sleep(20)

        prompt = f"""

        请直接告诉我下述文本是什么语种,直接输出语种,例如中文,不要添加任何其他消息:

        文本:'''{text}'''

        """

        # print(prompt)

        lang = get_completions(prompt)

        print(f"原始消息({lang}):{text}\n")

        # prompt=f"""

        # 将此文本翻译成英语、德语以及西班牙语,并写成

        # 英文翻译:

        # 德语翻译:

        # 西班牙语翻译:

        # 的格式:

        # '''{text}'''

        # """

        prompt=f"""

        将下述文本展示成HTML文件,且不需要对文本进行翻译:

        '''{text}'''

        """

        response = get_completions(prompt)

        print(response, "\n=============================================================================")

结果

原始消息(德语):Höre nicht auf das Geräusch von Blättern, die durch den Wald rascheln, warum nicht singen und langsam spazieren gehen? Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Ein Strohmantel und Nebelregen begleiten mich mein ganzes Leben lang.

<!DOCTYPE html>
<html>
<head>
<title>Text in HTML</title>
</head>
<body>
<p>Höre nicht auf das Geräusch von Blättern, die durch den Wald rascheln, warum nicht singen und langsam spazieren gehen? Ein Bambusstock und Strohschuhe sind leichter als ein Pferd, wer hat Angst! Ein Strohmantel und Nebelregen begleiten mich mein ganzes Leben lang.</p>
</body>
</html>

=============================================================================
原始消息(中文):莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕!一蓑烟雨任平生。

<!DOCTYPE html>
<html>
<head>
<title>Text in HTML</title>
</head>
<body>
<p>莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕!一蓑烟雨任平生。</p>
</body>
</html>

=============================================================================
原始消息(英文):Do not listen to the sound of leaves rustling through the woods, why not sing and stroll slowly? A bamboo cane and straw shoes are lighter than a horse, who is afraid! A straw raincoat and misty rain accompany me throughout my life.

<!DOCTYPE html>
<html>
<head>
<title>Text in HTML</title>
</head>
<body>
<p>Do not listen to the sound of leaves rustling through the woods, why not sing and stroll slowly? A bamboo cane and straw shoes are lighter than a horse, who is afraid! A straw raincoat and misty rain accompany me throughout my life.</p>
</body>
</html>

拼写以及语法纠正

可以使用Redlines包对纠正的地方进行展示。Redlines()函数会生成一个Markdown的文本展示字段,在这个段落中原文以及被修改的地方会展示出来,被修改处会使用划线来进行展示。

pip install redlines
pip install IPython




from redlines import Redlines

from IPython.display import display, Markdown

   

text = f"""

        He go to the park yesterday for playing football with hes friends. \

        They was having a lot of fun but then it start to rain. They decides to leave early and goes home.\

        On they way back, they seen a beautiful rainbow in the sky.

    """



    prompt=f"""

    校对并更正下列文本:

    '''{text}'''

    """

    response = get_completions(prompt)

    diff = Readlines(text, response)

    display(Markdown(diff.output_markdown))

注意:若是使用IPython库来展示markdown需要在特定的jupyter中进行编辑,若是使用vscode,则需要使用maarkdown库,代码修改如下:

    response = get_completions(prompt)
    diff = Redlines(text, response)
    markdown_text = markdown.markdown(diff.output_markdown)
    print(markdown_text)

结果

<p>He <span style='color:red;font-weight:700;text-decoration:line-through;'>go </span><span style='color:green;font-weight:700;'>went </span>to the park yesterday <span style='color:red;font-weight:700;text-decoration:line-through;'>for playing </span><span style='color:green;font-weight:700;'>to play </span>football with <span style='color:red;font-weight:700;text-decoration:line-through;'>hes friends.         </span><span style='color:green;font-weight:700;'>his friends. </span>They <span style='color:red;font-weight:700;text-decoration:line-through;'>was </span><span style='color:green;font-weight:700;'>were </span>having a lot of fun but then it <span style='color:red;font-weight:700;text-decoration:line-through;'>start </span><span style='color:green;font-weight:700;'>started </span>to rain. They <span style='color:red;font-weight:700;text-decoration:line-through;'>decides </span><span style='color:green;font-weight:700;'>decided </span>to leave early and <span style='color:red;font-weight:700;text-decoration:line-through;'>goes home.        </span><span style='color:green;font-weight:700;'>go home. </span>On <span style='color:red;font-weight:700;text-decoration:line-through;'>they </span><span style='color:green;font-weight:700;'>their </span>way back, they <span style='color:red;font-weight:700;text-decoration:line-through;'>seen </span><span style='color:green;font-weight:700;'>saw </span>a beautiful rainbow in the sky.</p>

而后创建一个.md文件将上述结果粘贴进入,则可以得到如下:

综合样例

如何使用一个prompt同时对文本进行翻译、、拼写纠正、语气调整、格式转换,例子如下:

    prompt=f"""

    针对下述三个反引号之间的文本:

    首先,进行拼写和语法纠错;

    而后,将其转化成西班牙语;

    第三,将其语气调整为散文的描述语言;

    最后,将其转换成为json格式输出。

    注意,将上述问题的输出全部修改为markdown格式

    '''{text}'''

    """

    response = get_completions(prompt)

    diff = Redlines(text, response)

    # display(Markdown(diff.output_markdown))

    # print(Markdown(diff.output_markdown))

    # console = Console()

    # console.print(Markdown(diff.output_markdown))

    markdown_text = markdown.markdown(diff.output_markdown)

    print(markdown_text)

结果

<p><span style='color:green;font-weight:700;'>首先,进行拼写和语法纠错: </span></p>
<p><span style='color:green;font-weight:700;'>``` </span></p>
<p><span style='color:green;font-weight:700;'></span>He <span style='color:red;font-weight:700;text-decoration:line-through;'>go </span><span style='color:green;font-weight:700;'>went </span>to the park yesterday <span style='color:red;font-weight:700;text-decoration:line-through;'>for playing </span><span style='color:green;font-weight:700;'>to play </span>football with <span style='color:red;font-weight:700;text-decoration:line-through;'>hes friends.         </span><span style='color:green;font-weight:700;'>his friends. </span>They <span style='color:red;font-weight:700;text-decoration:line-through;'>was </span><span style='color:green;font-weight:700;'>were </span>having a lot of <span style='color:red;font-weight:700;text-decoration:line-through;'>fun </span><span style='color:green;font-weight:700;'>fun, </span>but then it <span style='color:red;font-weight:700;text-decoration:line-through;'>start </span><span style='color:green;font-weight:700;'>started </span>to rain. They <span style='color:red;font-weight:700;text-decoration:line-through;'>decides </span><span style='color:green;font-weight:700;'>decided </span>to leave early and <span style='color:red;font-weight:700;text-decoration:line-through;'>goes home.        </span><span style='color:green;font-weight:700;'>go home. </span>On <span style='color:red;font-weight:700;text-decoration:line-through;'>they </span><span style='color:green;font-weight:700;'>their </span>way back, they <span style='color:red;font-weight:700;text-decoration:line-through;'>seen </span><span style='color:green;font-weight:700;'>saw </span>a beautiful rainbow in the <span style='color:red;font-weight:700;text-decoration:line-through;'>sky.</span><span style='color:green;font-weight:700;'>sky. </span></p>
<p><span style='color:green;font-weight:700;'>``` </span></p>
<p><span style='color:green;font-weight:700;'>而后,将其转化成西班牙语: </span></p>
<p><span style='color:green;font-weight:700;'>``` </span></p>
<p><span style='color:green;font-weight:700;'>Él fue al parque ayer para jugar al fútbol con sus amigos. Se lo estaban pasando muy bien, pero luego comenzó a llover. Decidieron irse temprano y regresar a casa. En el camino de vuelta, vieron un hermoso arco iris en el cielo. </span></p>
<p><span style='color:green;font-weight:700;'>``` </span></p>
<p><span style='color:green;font-weight:700;'>第三,将其语气调整为散文的描述语言: </span></p>
<p><span style='color:green;font-weight:700;'>``` </span></p>
<p><span style='color:green;font-weight:700;'>Él se dirigió al parque ayer para disfrutar de una partida de fútbol con sus amigos. La diversión estaba en su apogeo cuando de repente comenzó a llover. Tomaron la decisión de abandonar el juego antes de tiempo y emprender el regreso a casa. En el camino de vuelta, sus ojos se deleitaron con la visión de un hermoso arco iris que se desplegaba en el cielo. </span></p>
<p><span style='color:green;font-weight:700;'>``` </span></p>
<p><span style='color:green;font-weight:700;'>最后,将其转换成为json格式输出: </span></p>
<p><span style='color:green;font-weight:700;'>```json </span></p>
<p><span style='color:green;font-weight:700;'>{ </span></p>
<p><span style='color:green;font-weight:700;'>"text": "Él se dirigió al parque ayer para disfrutar de una partida de fútbol con sus amigos. La diversión estaba en su apogeo cuando de repente comenzó a llover. Tomaron la decisión de abandonar el juego antes de tiempo y emprender el regreso a casa. En el camino de vuelta, sus ojos se deleitaron con la visión de un hermoso arco iris que se desplegaba en el cielo." </span></p>
<p><span style='color:green;font-weight:700;'>} </span></p>
<p><span style='color:green;font-weight:700;'>```</span></p>

文本扩展

本小节使用给客户回复个性化的邮件作为例子。此外,介绍get_completion()函数除了prompt之外的另外一个参数temperature,即get_completion(prompt, temperature)。参数temperature可以控制结果的多样化以及随机性,temperature=0代表输出是可靠的且可预测的(这个输出是概率最高的输出),temperature越大代表输出的结果随机性越高且可预测性越低。

对客户邮件(评论)的定制化回复主要流程如下:

首先,确定客户邮件(评论)的情感倾向;

而后,根据原文和情感倾向让AI生成自动回复的邮件

    text = f"""

        这个熊猫公仔是我给女儿的生日礼物,她很喜欢,去哪都带着。 公仔很软,超级可爱,面部表情也很和善。\

        但是相比于价钱来说, 它有点小,我感觉在别的地方用同样的价钱能买到更大的。 快递比预期提前了一天到货,\

        所以在送给女儿之前,我自己玩了会。

    """

    prompt=f"""

    请输出下列文本的情感倾向,只需要给出具体的情感倾向即可不需要给出其他的信息,例如:积极的

    '''{text}'''

    """

    emotion = get_completions(prompt)

    prompt = f"""

    你是一位客户服务的AI助理

    你的任务是给一位客户发送回复的邮件

    根据三个反引号中的客户邮件的详细内容和邮件中的情感倾向,生成回复以感谢客户的评价并给出处理方案

    用简明并且专业的与其进行回复

    最后使用“AI助理”作为邮件的电子签名

    客户邮件内容:

    '''{text}'''

    客户邮件的情感倾向:

    '''{emotion}'''

    """

    response = get_completions(prompt, temperature = 0.6)

    print(response)

结果:

temperature = 0.6

尊敬的客户,

非常感谢您对我们产品的支持和评价!我们很高兴听到您的女儿喜欢我们的熊猫公仔,并且带着它去各个地方。我们为能给您的女儿带来快乐感到非常荣幸。

关于您提到的尺寸问题,我们非常抱歉给您带来了困扰。我们会将您的反馈反馈给相关部门,以便在未来的产品设计中进行改进。我们希望能为您提供更多满意的产品选择。

另外,我们很高兴听到您对快递的提前到货表示满意。我们将继续努力提高服务质量,为您提供更好的购物体验。

如果您有任何其他问题或需求,请随时与我们联系。再次感谢您的反馈和支持!

祝您和您的女儿度过愉快的时光!

AI助理

尊敬的客户,

非常感谢您选择我们的熊猫公仔作为女儿生日礼物,并且很高兴听到她对此非常喜欢。我们一直致力于提供高质量、可爱的产品,以满足客户的需求和期望。

对于您提到的大小问题,我们非常抱歉给您带来了不便。我们会将您的反馈意见传达给我们的产品团队,并努力改进产品的规格,以提供更多尺寸选择给我们的客户。

同时,我们也很高兴得知您对熊猫公仔的质地和面部表情表示满意。我们的目标是为客户提供高品质的产品和愉悦的购物体验。

最后,我们非常感谢您对我们快递服务的赞扬。我们将继续努力提供更快、更可靠的配送服务,以确保客户能够及时收到心仪的商品。

如果您有任何其他问题或需求,请随时与我们联系。我们将竭诚为您服务。

祝您和女儿度过愉快的时光!

AI助理

temperature = 0

尊敬的客户,

非常感谢您对我们熊猫公仔的评价和支持!我们很高兴听到您的女儿喜欢这个生日礼物,并且带着它到处走。我们致力于提供优质的产品,确保公仔的柔软和可爱,以及面部表情的和善。

对于您提到的价格问题,我们非常抱歉让您感到不满意。我们会将您的反馈转达给相关团队,以便改进我们的产品定价策略。同时,我们也会继续努力提供更多不同尺寸的选择,以满足不同客户的需求。

另外,我们很高兴听到您对快递的提前到货感到满意。我们将继续与物流合作伙伴密切合作,以确保订单能够按时送达。

如果您有任何其他问题或需求,请随时与我们联系。我们将竭诚为您提供帮助和支持。

再次感谢您的反馈和支持!

祝您和您的女儿度过愉快的时光!

AI助理

尊敬的客户,

非常感谢您对我们熊猫公仔的评价和支持!我们很高兴听到您的女儿喜欢这个生日礼物,并且带着它到处走。我们致力于提供优质的产品,确保它们的质量和可爱程度能够让客户满意。

关于您提到的尺寸问题,我们非常抱歉给您带来了困扰。我们会将您的反馈传达给我们的产品团队,以便在未来的设计中考虑到更多尺寸选择,以满足不同客户的需求。

另外,我们很高兴听到您对快递的服务感到满意。我们一直努力确保订单能够按时送达,并提供出色的物流体验。

如果您有任何其他问题或需要进一步的帮助,请随时与我们联系。我们将竭诚为您提供满意的解决方案。

再次感谢您的反馈和支持!

祝您和您的女儿度过愉快的时光!

AI助理

聊天机器人

在使用chatgpt构建聊天机器人时首先需要学习确定各个上下文提示的角色,在chatgpt的messages定义中有以下三个角色:’system‘,’user‘以及’assistant‘。

’system‘:以此角色作为输入的message用于给与chatgpt一个总体的指示,例如:

{'role':'system','content':'你是一个优秀的、严谨的、知识渊博的科研助理'}

上述的定义则固定了chatgpt的角色以及接下来聊天倾向的领域

’user‘:用户发送的消息,即chatgpt聊天界面给予的提问,例如:

{'role':'user','content':'你是可以解释一下LLM模型是什么?'}

’Assitant‘:chatgpt聊天界面给予的回复,相当于chatgpt,可以给与聊天机器人更多的上下提示

{'role':'user','content':'LLM模型是指Large Language Model,即大语言模型。'}

接下来将探索构建一个科研助手机器人,使用collect_message()函数来不断的收集prompt并将其附加到一个名为上下文(context)的列表中。具体代码如下:

import os
import openai
from dotenv import load_dotenv, find_dotenv
# find_dotenv 寻找并定位.env文件的路径
# load_dotenv 读取该.env文件并将文件中的路径加载到当前运行环境中
from redlines import Redlines
import markdown
import panel as pn

# 加载获得环境变量
def get_openai_key():
    _ = load_dotenv(find_dotenv())
    # # 加载获得环境变量
    # openai.api_key = os.environ['OPENAI_API_KEY']
    return os.environ['OPENAI_API_KEY']


def get_completions_from_messages(messages, model='gpt-3.5-turbo', temperature = 0):

    response = openai.ChatCompletion.create(
        model = model,
        messages = messages,
        temperature = temperature,
    )
    return response.choices[0].message["content"]

def collect_messages(_):
    prompt = inp.value_input
    inp.value = ''
    context.append({'role':'user','content':f"{prompt}"})
    response = get_completions_from_messages(context)
    context.append({'role':'assistant','content':f"{response}"})
    panels.append(
        pn.Row('User', pn.pane.Markdown(prompt, width = 600))
    )
    panels.append(
        pn.Row('Assitant', pn.pane.Markdown(response, width = 600), style = {'background-color':'#F6F6F6'})
    )

    return pn.Column(*panels)

if __name__ == '__main__':

    openai.api_key = "sk"

    pn.extension()

    panels = []

    context = [
       {'role':'system','content':'你是一个优秀的、严谨的、知识渊博的科研助理'} 
    ]

    inp = pn.widgets.TextInput(value = '你好!', placeholder = '请在这里输入文本')
    button_coversation = pn.widgets.Button(name = "聊天")

    interactive_conversation = pn.bind(collect_messages, button_coversation)

    dashboard = pn.Column(
        inp,
        pn.Row(button_coversation),
        pn.panel(interactive_conversation, loading_indicator = True, height = 300),
    )

    dashboard.show()

结果:

文章内容来源于ChatGPT prompt的课程笔记

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值