提示词工程实践(一) #110

Open
opened 2024-09-20 10:11:03 +08:00 by 12390900721cs · 0 comments

什么是提示词工程?

提示词工程(Prompt Engineering)是指在自然语言处理(NLP)和生成式模型(如GPT等大语言模型)中,通过设计、调整和优化输入的“提示词”(prompt),以获得所需输出的一种技术和实践方法。

核心概念

大语言模型通过接收一段输入文本(提示词),然后基于该输入生成或完成文本。提示词工程的目标是设计出能够引导模型产生准确、相关、符合预期输出的提示词。由于大语言模型的强大泛化能力,输入的提示词对模型的行为影响很大,因此如何编写和优化提示词成为了一个重要的实践领域。

提示词工程的技巧

  1. 明确问题:提示词应该清楚地表述你的需求或问题,让模型可以准确理解你想要的输出。
    • 示例:为了生成旅行文章,提示词可以是:“写一篇关于巴黎的旅游指南。”
  2. 引导模型角色:有时,通过将模型设定为特定角色,可以优化输出质量。
    • 示例:“作为历史学家,解释一下第二次世界大战的主要原因。”
  3. 提供上下文:给出更多的背景或上下文信息,让模型在生成时参考这些信息,得到更符合需求的答案。
    • 示例:“根据下文内容生成摘要:‘人工智能正快速发展,影响着各行各业…’”
  4. 控制输出格式:如果你想让输出具有特定格式,可以在提示词中明确说明。
    • 示例:“生成一个包括标题和三个段落的博客文章。”
  5. 逐步引导:有时,分步骤地给出提示词可以帮助模型更准确地理解复杂问题。
    • 示例:“首先给出解释,然后列举三个例子。”
  6. 使用示例:通过提示词中的示例来引导模型产生相似的输出。
    • 示例:“举例说明如何使用for循环来遍历列表。”

主要应用场景

  1. 文本生成:通过设计不同的提示词,控制生成的文本类型和风格。例如,可以使用不同的提示词来生成新闻报道、对话回复或故事。
  2. 问题解答:提示词工程可以用于提高模型的回答准确性,确保模型正确理解问题并提供合理的答案。
  3. 代码生成:编写合适的提示词,模型可以生成特定编程语言的代码或解决方案。
  4. 情感分析:通过提示词调整,可以引导模型从输入文本中提取情感、观点或态度。
  5. 总结与翻译:提示词工程可用于改进摘要生成或机器翻译任务中的输出质量。

这里我们接国产大模型的API,以text2SQL为场景,使用提示词来进行引导,观察测试结果。

API-KEY准备

这里使用智普ai的GLM4模型(General Language Model 4,通用语言模型第四代)来进行测试。

智普 AI:智普AI官网

申请完毕后,可以对环境变量进行设置:export ZHIPUAI_API_KEY=xxx_xxx

调用大模型进行测试

环境变量设置

注意在平台中调用API需要使用互联网,在这里需要设置如下环境变量:

1.**HF_HOME**:指定 Hugging Face 的缓存目录路径。

export HF_HOME=/code/huggingface-cache/

这意味着 Hugging Face 下载的模型、数据集等缓存文件会存储在 /code/huggingface-cache/ 路径下。这样可以确保模型文件和其他资源不会重复下载,节省存储和带宽。

2.**HF_ENDPOINT**:设置 Hugging Face 的镜像站点。

export HF_ENDPOINT=https://hf-mirror.com

这个环境变量用于指定 Hugging Face 的 API 访问地址。你使用了一个镜像站点(https://hf-mirror.com),可能是为了加速模型和数据集的下载,尤其是在国内或特定网络环境下。

3.**http_proxy**** 和 ****https_proxy**:配置 HTTP 和 HTTPS 请求的代理服务器。

export http_proxy=http://10.10.9.50:3000

export https_proxy=http://10.10.9.50:3000

这些设置告诉系统在进行 HTTP 和 HTTPS 请求时,使用位于 10.10.9.50:3000 的代理服务器。它们通常用于绕过防火墙、加快网络连接或在受限网络环境下访问外部资源。

4.**no_proxy**:设置不使用代理的地址列表。``

export no_proxy=localhost,127.0.0.1

这个变量指定了不通过代理访问的地址。这里的 localhost127.0.0.1 表示本地访问不走代理,这是为了避免代理干扰本地服务或开发环境的通信。

调用GLM4

观察讲义中的代码的prompt部分,可以看到我们在提示词中进行了:

1.任务描述:

You are a powerful text-to-SQL model.

Your job is to answer questions about a database.

2.规定了任务的规则和目标

You are given a question and context regarding one or more tables.

You must output the SQL query that answers the question.

3.示例输入

Which Class has a Frequency MHz larger than 91.5, and a City of license of hyannis, nebraska?

4.上下文

CREATE TABLE table_name_12 (class VARCHAR, frequency_mhz VARCHAR, city_of_license VARCHAR)

上下文信息的作用是提供表结构,让模型能够根据字段名称和类型正确构建 SQL 查询。

找到文件所在的目录:

进入该目录,并运行代码:

发现生成的结果正确,完成国内大模型API调用结合提示词工程测试。

## 什么是提示词工程? 提示词工程(Prompt Engineering)是指在自然语言处理(NLP)和生成式模型(如GPT等大语言模型)中,通过设计、调整和优化输入的“提示词”(prompt),以获得所需输出的一种技术和实践方法。 ### 核心概念 大语言模型通过接收一段输入文本(提示词),然后基于该输入生成或完成文本。提示词工程的目标是设计出能够引导模型产生准确、相关、符合预期输出的提示词。由于大语言模型的强大泛化能力,输入的提示词对模型的行为影响很大,因此如何编写和优化提示词成为了一个重要的实践领域。 ### 提示词工程的技巧 1. **明确问题**:提示词应该清楚地表述你的需求或问题,让模型可以准确理解你想要的输出。 - 示例:为了生成旅行文章,提示词可以是:“写一篇关于巴黎的旅游指南。” 2. **引导模型角色**:有时,通过将模型设定为特定角色,可以优化输出质量。 - 示例:“作为历史学家,解释一下第二次世界大战的主要原因。” 3. **提供上下文**:给出更多的背景或上下文信息,让模型在生成时参考这些信息,得到更符合需求的答案。 - 示例:“根据下文内容生成摘要:‘人工智能正快速发展,影响着各行各业…’” 4. **控制输出格式**:如果你想让输出具有特定格式,可以在提示词中明确说明。 - 示例:“生成一个包括标题和三个段落的博客文章。” 5. **逐步引导**:有时,分步骤地给出提示词可以帮助模型更准确地理解复杂问题。 - 示例:“首先给出解释,然后列举三个例子。” 6. **使用示例**:通过提示词中的示例来引导模型产生相似的输出。 - 示例:“举例说明如何使用for循环来遍历列表。” ### 主要应用场景 1. **文本生成**:通过设计不同的提示词,控制生成的文本类型和风格。例如,可以使用不同的提示词来生成新闻报道、对话回复或故事。 2. **问题解答**:提示词工程可以用于提高模型的回答准确性,确保模型正确理解问题并提供合理的答案。 3. **代码生成**:编写合适的提示词,模型可以生成特定编程语言的代码或解决方案。 4. **情感分析**:通过提示词调整,可以引导模型从输入文本中提取情感、观点或态度。 5. **总结与翻译**:提示词工程可用于改进摘要生成或机器翻译任务中的输出质量。 这里我们接国产大模型的API,<font style="color:#333333;">以text2SQL为场景,</font>使用提示词来进行引导,观察测试结果。 ### API-KEY准备 这里使用智普ai的GLM4模型(General Language Model 4,通用语言模型第四代)来进行测试。 <font style="color:#333333;">智普 AI:</font>[<font style="color:#333333;">智普AI官网</font>](https://open.bigmodel.cn/pricing) <font style="color:#333333;">申请完毕后,可以对环境变量进行设置:export ZHIPUAI_API_KEY=xxx_xxx</font> ### <font style="color:#333333;">调用大模型进行测试</font> #### 环境变量设置 注意在平台中调用API需要使用互联网,在这里需要设置如下环境变量: ![](https://cdn.nlark.com/yuque/0/2024/png/48516026/1726737592249-3eb68416-5896-4d38-8a2b-e7abe9992715.png) **1.**`**HF_HOME**`:指定 Hugging Face 的缓存目录路径。 `export HF_HOME=/code/huggingface-cache/` 这意味着 Hugging Face 下载的模型、数据集等缓存文件会存储在 `/code/huggingface-cache/` 路径下。这样可以确保模型文件和其他资源不会重复下载,节省存储和带宽。 **2.**`**HF_ENDPOINT**`:设置 Hugging Face 的镜像站点。 `export HF_ENDPOINT=https://hf-mirror.com` 这个环境变量用于指定 Hugging Face 的 API 访问地址。你使用了一个镜像站点(`https://hf-mirror.com`),可能是为了加速模型和数据集的下载,尤其是在国内或特定网络环境下。 **3.**`**http_proxy**`** 和 **`**https_proxy**`:配置 HTTP 和 HTTPS 请求的代理服务器。 `export http_proxy=http://10.10.9.50:3000` `export https_proxy=http://10.10.9.50:3000` 这些设置告诉系统在进行 HTTP 和 HTTPS 请求时,使用位于 `10.10.9.50:3000` 的代理服务器。它们通常用于绕过防火墙、加快网络连接或在受限网络环境下访问外部资源。 **4.**`**no_proxy**`:设置不使用代理的地址列表。`` `export no_proxy=localhost,127.0.0.1` 这个变量指定了不通过代理访问的地址。这里的 `localhost` 和 `127.0.0.1` 表示本地访问不走代理,这是为了避免代理干扰本地服务或开发环境的通信。 #### 调用GLM4 观察讲义中的代码的prompt部分,可以看到我们在提示词中进行了: 1.任务描述: <font style="color:#000000;">You are a powerful text-to-SQL model.</font> <font style="color:#000000;">Your job is to answer questions about a database.</font> 2.规定了任务的规则和目标 <font style="color:#000000;">You are given a question and context regarding one or more tables.</font> <font style="color:#000000;">You must output the SQL query that answers the question.</font> 3.示例输入 <font style="color:#000000;">Which Class has a Frequency MHz larger than 91.5, and a City of license of hyannis, nebraska?</font> 4.上下文 <font style="color:#000000;">CREATE TABLE table_name_12 (class VARCHAR, frequency_mhz VARCHAR, city_of_license VARCHAR)</font> <font style="color:#000000;">上下文信息的作用是提供</font>**表结构**<font style="color:#000000;">,让模型能够根据字段名称和类型正确构建 SQL 查询。 </font> <font style="color:#000000;"></font> <font style="color:#000000;">找到文件所在的目录:</font> ![](https://cdn.nlark.com/yuque/0/2024/png/48516026/1726739860440-3ee4c90a-dd33-4b9c-9087-a1f5fea7a640.png) 进入该目录,并运行代码: ![](https://cdn.nlark.com/yuque/0/2024/png/48516026/1726739883762-1e27df3b-8348-40c1-8c6d-ef28c73594bf.png) <font style="color:#000000;">发现生成的结果正确,完成国内大模型API调用结合提示词工程测试。</font> <font style="color:#000000;"></font>
12390900721cs changed title from 1.1提示词工程实践(一) to 提示词工程实践(一) 2024-09-20 10:12:06 +08:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: HswOAuth/llm_course#110
No description provided.