Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ConnectAI-E/Prompt-Engineering-Tutior

🎡 Pompt 提示词工程师入门指南 ~视频字幕+代码资料 [( Python、Golang、NodeJs ) x ( 中文、英文 )]
https://github.com/ConnectAI-E/Prompt-Engineering-Tutior

chatgpt connect-ai go golang javascript nodejs openai prompt prompt-engineering python

Last synced: about 2 months ago
JSON representation

🎡 Pompt 提示词工程师入门指南 ~视频字幕+代码资料 [( Python、Golang、NodeJs ) x ( 中文、英文 )]

Awesome Lists containing this project

README

        





🎡提示词工程师入门指南



👏🏻欢迎PR & Star,让更多人了解 提示词工程师 👏🏻








## 介绍

🥐 参考视频课程:[ChatGPT Prompt Engineering for Developers](https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/1/introduction)

🍔 中文字幕搬运:[提示词工程师入门指南【吴恩达】- 企联AI开源字幕组 - 欢迎PR翻译字幕](https://www.bilibili.com/video/BV1zz4y1i7QT)

🥪 实现语言:Python、Golang、NodeJs

🍗 语料语言:英文、中文

## 代码资料

> 欢迎大家PR!

| 资料 | 语料 |
|:-------|:---------------------------------------------------------------------------------------------------------------------------------------------------|
| 教学视频 | 中✅英✅ |
| Python | 中✅英✅ |
| NodeJS | 中✅英✅
| Golang | 中✅英✅ |
| 字幕 | 中✅英✅

## 正文

### Guidelines 总体准则

LLM分成两个基本大类:Base-LLM和Instruction-Tuned-LLM。

前者是基础语言模型,基于预训练数据预测下一个单词。后者则针对指令进行微调,使其更可能完成人类的指令。

OpenAI的模型中,InstructGPT Models 列出了针对指令优化的模型。表格中也列出了不同的指令微调训练方法,如SFT、FeedME、PPO等。

编写指令的准则包括:

- 清晰和具体,但不一定要短。
- 使用定界符如"""、```、---、<>、。以防止prompt注入,给LLM产生混乱的理解。
- 使用结构化输出,如要求以HTML或JSON格式输出。
- 要求检查:要求LLM先检查是否满足某个条件后再进行输出,如果条件不满足可以直接告知。
- 利用少样本学习,展示一个期望的例子给LLM。
- 给模型一些思考时间,不要给它过于简单或困难的问题。
- 按步骤来解答,设定分隔符,例如使用"Text:<>"来表示文本。
- 让模型自己推导出过程,而不仅仅是结果。展示一个带有解题过程的例子给LLM。
- 避免模型产生幻觉:要告诉模型先查找相关资料,再根据相关资料来回答问题。(但模型产生幻觉很难避免,也是目前模型研究领域努力的方向)

### Iterative Prompting 迭代提示词

编写Prompt的过程是不断迭代的。

基本步骤:
- 编写Prompt
- 进行测试,
- 分析原因
- 修订Prompt(澄清思路)
- 循环上述步骤,直到达到满意的结果为止。

### Summarizing 总结能力
如果你经营一个电商网站,其中包含大量用户评论,你可以利用语言模型的"总结(summarize)"和"提取信息(extract)"的能力来简化你的工作量。

使用LLM,你可以进行一系列的测试,如限制字数、限定主题、关注价格,并尝试用提取信息的方式替代总结。

你还可以利用一个for循环,使用相同的提示模板来批量处理不同的内容。这样做可以帮助你更高效地处理大量评论。

### Inferring 逻辑推理
如果您想在用户评论中了解积极反馈和消极反馈的数量,那么您就需要使用"LLM推理"的能力。

举例来说,LLM能够推理用户的情绪(sentiment),识别情绪类型(比如:happy、satisfied、grateful、impressed、content),提取品牌和商品信息并以JSON格式输出,还可以同时执行多个任务(例如提取用户评论中的商品并推理用户的情绪),推断主题,并基于推断的主题设计一个提醒程序等。

因此,在用户评论中应用"LLM推理"的能力能够帮助您准确地了解积极反馈和消极反馈的情况。

### Transforming 内容转换
转换类应用是一种将一种语言转换为另一种语言的应用。

例如,通过转换类应用,可以将一段文字翻译成另一种语言,识别一段文字所使用的语言,甚至同时将文本翻译成两种以上的语言。此外,还可以指定转换的语气是正式还是非正式的,指定适用于不同场合的语言,比如商务场合的邮件。转换类应用不仅限于自然语言的翻译,还可以进行程序语言的转换,例如将JSON转换为HTML。同时,您还可以要求LLM帮助您纠正语法错误。

### Expanding 文本扩展
LLM具备将简短文字扩展并添加修饰以及融入特定语言风格的能力。

在下面的示例中,LLM充当了一个邮件回复助手的角色。您可以要求LLM撰写一封回复客户的邮件,并让它利用客户来信中的详细信息,以增加回复的真实感。此外,您还可以通过调整温度值来使回复显得不那么呆板。

通过利用LLM的功能,您可以获得一封根据客户来信细节编写的回复邮件,同时也能根据需要灵活调整回复的语气。这使得与客户的邮件沟通更加个性化和真实。

### Chatbot 对话Bot
在使用OpenAI API发送消息时,消息中的角色可以包括系统(system)、用户(user)和助手(assistant)三种角色。

系统角色(system)用于设定全局的风格和限制等信息。

用户角色(user)表示人类用户,即发送消息的真实用户。

助手角色(assistant)表示LLM,即语言模型,在对话中扮演回复和交互的角色。
```bush
def get_completion(prompt, model="gpt-3.5-turbo"):
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=0, # this is the degree of randomness of the model's output
)
return response.choices[0].message["content"]

def get_completion_from_messages(messages, model="gpt-3.5-turbo", temperature=0):
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=temperature, # this is the degree of randomness of the model's output
)
return response.choices[0].message["content"] # print(str(response.choices[0].message))

messages = [
{'role':'system', 'content':'You are an assistant that speaks like Shakespeare.'},
{'role':'user', 'content':'tell me a joke'},
{'role':'assistant', 'content':'Why did the chicken cross the road'},
{'role':'user', 'content':'I don\'t know'} ]

response = get_completion_from_messages(messages, temperature=1)
print(response)

```

### Conclusion 结论
在以下说明中,我们将讨论一些原则和能力相关的事项。

一、原则:

1. 指令要求清晰和具体,确保模型明确了解您的要求。

2. 给予模型一些时间进行思考和处理。

二、提示的开发过程是一个持续迭代的过程,需要不断进行调试和改进。

三、模型具备以下能力:总结、推理、转换和扩展。这些能力可以在不同的应用场景中发挥作用。