首页
Mleon

转换

转换

Mleon
Mleon
粉丝:98
2023-05-04
106 人已看
主题:6
描述:5
例子:13
其他:15
字数:8318

转换

出处 内容出处

https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/6/transforming

引言

转换格式

大语言模型非常擅长将输入转换成不同的格式,

翻译转换 转换格式

例如输入一段文本,在不同语言之间进行转换或翻译,

修正错误 转换格式

或者帮助进行拼写和语法纠正,因此,将一段可能不完全符合语法的文本作为输入,能帮助你稍微修正一下,

格式转换 转换格式

甚至转换格式,例如输入HTML并输出JSON。

对比 容易使用

因此,我曾经很痛苦地用一堆正则表达式写了一堆应用程序,现在使用大型语言模型和几个提示可以更加简单实现了。

经历 经常使用

是的,我使用ChatGPT来校正今天我写的几乎所有东西。所以我很高兴现在向你展示更多笔记本中的示例。

准备 准备工作

因此,首先,我们将导入OpenAI,并使用我们在视频中一直使用的getCompletion帮助函数。

import openai
import os

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file

openai.api_key  = os.getenv('OPENAI_API_KEY')
def get_completion(prompt, model="gpt-3.5-turbo", temperature=0): 
    messages = [{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=temperature, 
    )
    return response.choices[0].message["content"]

翻译

多语言能力

我们首先要做的是翻译任务。因此,大语言模型是在许多来源的大量文本上进行训练的,其中很多是互联网,当然,这是用许多不同的语言。因此,这赋予了模型进行翻译的能力。这些模型以不同的熟练程度掌握数百种语言。因此,我们将通过一些示例来演示如何使用这种能力。

英语转西班牙语 多语言能力

让我们从简单的事情开始。在第一个例子中,提示是将下列英文文本翻译成西班牙语。嗨,我想订购一个搅拌机。回答是,Hola,me gustaría ordenar una licuadora。对于所有西班牙语使用者,我非常抱歉,不幸的是,我从未学过西班牙语,正如您肯定可以看出的那样。

prompt = f"""
Translate the following English text to Spanish: ```Hi, I would like to order a blender```
"""
response = get_completion(prompt)
print(response)
识别法语 多语言能力

好吧,让我们再试一个例子。在这个例子中,提示是,告诉我这是什么语言。然后这是法语,Combien coûte la lampe d'air。让我们运行一下。模型已确定这是法语。

prompt = f"""
Tell me which language this is: ```Combien coûte le lampadaire?```
"""
response = get_completion(prompt)
print(response)
同时翻译 多语言能力

该模型也可以同时进行多个翻译。在这个例子中,让我们把下面的文本翻译成法语和西班牙语。你知道吗,让我们再加一个,一位英国海盗。文本是: 我想订购一个篮球。这里有法语,西班牙语和英国海盗。

prompt = f"""
Translate the following  text to French and Spanish
and English pirate: ```I want to order a basketball```
"""
response = get_completion(prompt)
print(response)
与场景有关

在一些语言中,翻译可能会根据说话者与听众的关系而变化。你还可以向语言模型解释这一点,因此,它将能够相应地进行翻译。

正式和非正式 与场景有关

在这个例子中,我们说,请将以下文本翻译为西班牙语中的正式和非正式形式。你想订购枕头吗?请注意,我们使用了不同的分隔符,比这些反引号更重要的是,它是一种清晰的分隔符。它是一种清晰的分隔符。

prompt = f"""
Translate the following text to Spanish in both the formal and informal forms: 
'Would you like to order a pillow?'
"""
response = get_completion(prompt)
print(response)

这里有正式的和非正式的。

  • 所以正式的是在和某人说话的时候也许比你年长或处于专业情况下。就需要使用正式的语气,

  • 非正式是当你和一群朋友说话的时候。

我其实不会说西班牙语,但是我爸爸知道,他说这是正确的。

需求 翻译器需求

接下来的例子是,我们将假装我们负责一家跨国电子商务公司,因此用户的信息将是各种不同的语言,因此用户将用多种语言向我们讲述他们的资讯科技问题。所以我们需要一个通用翻译器。

翻译器代码 翻译器需求

首先,我们将粘贴一个包含各种不同语言的用户消息列表。现在, 我们将循环遍历每个用户消息。因此,在用户消息中的问题,然后我将复制一段较长的代码块。

因此,我们首先要求模型告诉我们问题所使用的语言。这里是提示。然后,我们将打印出原始消息的语言和问题,然后我们将要求模型将其翻译成英语和韩语。

user_messages = [
  "La performance du système est plus lente que d'habitude.",  # System performance is slower than normal         
  "Mi monitor tiene píxeles que no se iluminan.",              # My monitor has pixels that are not lighting
  "Il mio mouse non funziona",                                 # My mouse is not working
  "Mój klawisz Ctrl jest zepsuty",                             # My keyboard has a broken control key
  "我的屏幕在闪烁"                                               # My screen is flashing
] 
for issue in user_messages:
    prompt = f"Tell me what language this is: ```{issue}```"
    lang = get_completion(prompt)
    print(f"Original message ({lang}): {issue}")

    prompt = f"""
    Translate the following  text to English \
    and Korean: ```{issue}```
    """
    response = get_completion(prompt)
    print(response, "\n")
翻译器效果 翻译器代码

让我们运行这个。因此,原始消息是法语。因此,我们有各种语言,然后模型将其翻译成英语和韩语。

你可以在这儿看到,所以模型说,这是法语。那是因为这个提示的反应是,这是法语。

扩展 回应单个词

如果你想让这个回应只有一个单词,你可以尝试编辑这个提示,比如说,告诉我这是什么语言,只用一个单词回答或者不要用句子,如果你想让这只是一个字,那么就这么做。

扩展 转其它格式

或者你可以用JSON格式或类似的格式请求,这可能会鼓励它不使用整个句子。

建议 试其它语言

真是太棒了,你刚刚建立了一个通用的翻译器,也可以随意暂停视频并添加任何你想尝试的其他语言,也许是你自己会说的语言,看看模型的表现如何。

语气

需求 语气转换

接下来我们要深入探讨的是语气转换。写作可以根据所定的听众的不同,

因此,我将向同事或教授写电子邮件的方式显然会与我弟弟的短信方式截然不同。

俚语转商业信

因此,ChatGPT实际上也可以帮助产生不同的语气。让我们看看一些例子。在第一个例子中,提示是,将以下俚语翻译成商业信函。兄弟,这是乔,看看立灯的规格。让我们执行这个。正如你所看到的,我们有一个更正式的商业信函并提出立灯规格的建议。

prompt = f"""
Translate the following from slang to a business letter: 
'Dude, This is Joe, check out this spec on this standing lamp.'
"""
response = get_completion(prompt)
print(response)

格式

转换不同格式

接下来我们要做的是转换不同格式。ChatGPT非常擅长在不同格式之间进行翻译,例如JSON到HTML,XML,各种各样的东西,markdown。在提示中,我们将描述输入和输出格式。

JSON转HTML 转换不同格式

这是一个例子。所以我们有了这个JSON包含餐厅员工的姓名和电子邮件列表。然后在提示中,我们要求模型将其从JSON翻译成HTML。

因此,提示是,将以下Python字典从JSON翻译成带有列标题和标题的HTML表格。然后我们将获得模型的响应并将其打印出来。所以这里有一些HTML显示所有员工的姓名和电子邮件。

data_json = { "resturant employees" :[ 
    {"name":"Shyam", "email":"shyamjaiswal@gmail.com"},
    {"name":"Bob", "email":"bob32@gmail.com"},
    {"name":"Jai", "email":"jai87@gmail.com"}
]}

prompt = f"""
Translate the following python dictionary from JSON to an HTML \
table with column headers and title: {data_json}
"""
response = get_completion(prompt)
print(response)
验证 格式正确 JSON转HTML

所以现在让我们看看是否可以实际查看这个HTML。我们将使用这个Python库中的display函数,显示HTML响应。这里你可以看到这是一个格式正确的HTML表格。

from IPython.display import display, Markdown, Latex, HTML, JSON
display(HTML(response))

修正

用途 修正用途

接下来的转换任务是拼写检查和语法检查。这是ChatGPT的一个非常受欢迎的用途。我强烈建议这样做。我一直在这样做。当您使用非母语语言时,这尤其有用。

修正示例

以下是一些常见的语法和拼写问题的示例,以及语言模型如何帮助解决这些问题。所以我要粘贴一些具有一些语法或拼写错误的句子列表,然后我们将循环遍历每个句子。

然后要求模型去做这个:请校对并更正以下文本,然后我们将获得响应并像往常一样打印它。因此,模型能够修正所有这些语法错误。

text = [ 
  "The girl with the black and white puppies have a ball.",  # The girl has a ball.
  "Yolanda has her notebook.", # ok
  "Its going to be a long day. Does the car need it’s oil changed?",  # Homonyms
  "Their goes my freedom. There going to bring they’re suitcases.",  # Homonyms
  "Your going to need you’re notebook.",  # Homonyms
  "That medicine effects my ability to sleep. Have you heard of the butterfly affect?", # Homonyms
  "This phrase is to cherck chatGPT for speling abilitty"  # spelling
]
for t in text:
    prompt = f"""Proofread and correct the following text
    and rewrite the corrected version. If you don't find
    and errors, just say "No errors found". Don't use 
    any punctuation around the text:
    ```{t}```"""
    response = get_completion(prompt)
    print(response)
扩展 修正扩展 修正示例

我们可以使用我们之前讨论过的一些技巧,因此,要改进提示,我们可以说校对并更正以下文本,并重新编写。所以我们说, 校正, 修正版本.如果你没有发现任何错误, 就说没有发现错误。让我们试一下。这样我们就可以说, 哦, 他们还在这里使用引号。

不断改进提示 修正扩展

但是你可以想象一下,通过一点点迭代式提示开发,你能够找到一种更可靠的提示方式,每次都能够更好地工作。

检查评论

现在我们再举一个例子。在将文本发布到公共论坛之前,始终检查您的文本是很有用的。我们将通过检查评论的示例来进行检查。这是一篇关于填充熊的评论。因此,我们将要求模型校对并纠正评论。太好了,我们有了这个修正版本。

text = f"""
Got this for my daughter for her birthday cuz she keeps taking \
mine from my room.  Yes, adults also like pandas too.  She takes \
it everywhere with her, and it's super soft and cute.  One of the \
ears is a bit lower than the other, and I don't think that was \
designed to be asymmetrical. It's a bit small for what I paid for it \
though. I think there might be other options that are bigger for \
the same price.  It arrived a day earlier than expected, so I got \
to play with it myself before I gave it to my daughter.
"""
prompt = f"proofread and correct this review: ```{text}```"
response = get_completion(prompt)
print(response)
对比 比较差异 检查评论

我们可以做的一件很酷的事情是找到原始评论和模型输出之间的差异。因此,我们将使用这个redlines Python包来完成这个任务。我们将获取我们评论的原始文本和模型输出之间的差异,然后显示这个。

因此在这里,你可以看到原始评论和模型输出之间的差异以及已经更正的内容。所以我们使用的提示是校对并更正此评论。

from redlines import Redlines

diff = Redlines(text,response)
display(Markdown(diff.output_markdown))
扩展 综合运用

但是你也可以进行更大的更改,例如更改语气,等等。让我们再试一试。所以在这个提示中,我们将要求模型校对并更正这篇评论,而且更具吸引力,并确保它遵循APA风格并针对高级读者。我们还将要求以markdown格式输出。因此,我们使用了上面的原始评论文本。让我们执行这个。在这里,我们有一个扩展的APA风格评论软熊。

prompt = f"""
proofread and correct this review. Make it more compelling. 
Ensure it follows APA style guide and targets an advanced reader. 
Output in markdown format.
Text: ```{text}```
"""
response = get_completion(prompt)
display(Markdown(response))

这就是转换视频的全部内容。

预告 下节预告

接下来,我们将扩展,我们将从语言模型中获取一个更短的提示并生成一个更长,更自由的响应。

讨论
随记