2024年运维最新【大模型应用开发教程】03_调用大模型 API_system prompt(2)

Prompt 最初是 NLP(自然语言处理)研究者为下游任务设计出来的一种任务专属的输入模板,类似于一种任务(例如:分类,聚类等)会对应一种 Prompt。在 ChatGPT 推出并获得大量应用之后,Prompt 开始被推广为给大模型的所有输入。即,我们每一次访问大模型的输入为一个 Prompt,而大模型给我们的返回结果则被称为 Completion

例如,在下面示例中,我们给 ChatGPT 的提问 “NLP 中的 Prompt 指什么”是我们的提问,其实也就是我们此次的 Prompt;而 ChatGPT 的返回结果就是此次的 Completion。也就是对于 ChatGPT 模型,该 Prompt 对应的 Completion 是下图的展示。
在这里插入图片描述

后续我们都将会使用 Prompt 替代给 LLM 的输入,使用 Completion 替代 LLM 的输出。同时,我们会结合具体案例,介绍如何设计 Prompt 能够充分发挥 LLM 的能力。

2. Temprature

LLM 生成是具有随机性的,在模型的顶层通过选取不同预测概率的预测结果来生成最后的结果。我们一般可以通过控制 Temprature 参数来控制 LLM 生成结果的随机性与创造性。

Temprature 一般取值在 0~1 之间:

  • 当取值较低接近0时,预测的随机性会较低,产生更保守、可预测的文本,不太可能生成意想不到或不寻常的词。
  • 当取值较高接近1时,预测的随机性会较高,所有词被选择的可能性更大,会产生更有创意、多样化的文本,更有可能生成不寻常或意想不到的词。

例如,当我们使用 ChatGPT 要求其为我们想一个关于跨语言模型的硕士毕业论文选题,当我们将 temprature 设置为0时,模型回复为:

题目:基于跨语言模型的机器翻译性能优化研究

摘要:随着全球化的发展,跨语言交流的需求日益增长。机器翻译作为一种自动化翻译技术,为跨语言交流提供了便利。然而,由于语言之间的差异性,机器翻译系统在不同语言对之间的性能存在差异。本论文旨在通过研究跨语言模型,探索如何优化机器翻译的性能,提高翻译质量和准确性。

关键词:跨语言模型,机器翻译,性能优化,翻译质量,准确性

1. 引言
1.1 研究背景和意义
1.2 国内外研究现状
1.3 研究目标和内容

2. 跨语言模型的原理和方法
2.1 传统机器翻译方法
2.2 跨语言模型的基本原理
2.3 跨语言模型的常用方法和技术

3. 跨语言模型在机器翻译中的应用
3.1 跨语言模型在机器翻译中的优势和挑战
3.2 跨语言模型在不同语言对上的性能表现比较
3.3 跨语言模型在特定领域机器翻译中的应用案例分析

4. 跨语言模型的性能优化方法
4.1 数据预处理和特征选择
4.2 模型参数调优和训练策略
4.3 跨语言模型与其他技术的结合应用

5. 实验设计与结果分析
5.1 实验设计和数据集介绍
5.2 实验结果分析和对比
5.3 实验结果的可行性和可靠性验证

6. 结论与展望
6.1 研究工作总结
6.2 存在的问题和不足
6.3 进一步研究方向和展望

参考文献

注:以上仅为一个选题示例,具体选题应根据个人兴趣和研究背景进行调整和修改。

当我们将 Temprature 设置为1时,模型回复为:

以下是关于跨语言模型的几个硕士毕业论文选题建议:

1. 跨语言文本分类模型的比较和优化——通过比较不同跨语言模型的性能,分析其在不同语言之间的适应性和准确性,并尝试优化现有模型,提高跨语言文本分类的效果。

2. 基于跨语言模型的机器翻译性能分析——通过比较不同跨语言模型在机器翻译任务中的表现,研究不同语言之间的短板和优势,并探讨如何针对性地改进跨语言机器翻译的性能。

3. 跨语言情感分析模型的构建与应用——使用跨语言模型构建情感分析模型,通过比较模型在不同语言上的准确性和一致性,分析不同语言中情感表达的差异,并探索在多语言场景下的情感分析应用。

4. 多任务学习下的跨语言模型训练——探索多任务学习下跨语言模型的训练方法和效果,通过同时训练多个任务来提高跨语言模型的泛化能力和性能,并验证多任务学习对跨语言模型的影响。

5. 跨语言问答系统的构建与评估——构建跨语言问答系统,通过跨语言模型实现问题的自动解析和答案的生成,并评估系统在多语言环境下的效果和可用性。

6. 基于预训练的跨语言模型的应用于语音识别——将预训练的跨语言模型应用于语音识别任务中,研究其对语音识别准确性和多语种适应性的影响,并比较不同模型对多语种语音数据的处理能力。

选择适合自己兴趣和研究方向的选题,并与导师进行深入讨论和确认。

对于不同的问题与应用场景,我们可能需要设置不同的 Temprature。例如,

  • 在本教程搭建的个人知识库助手项目中,我们一般将 Temprature 设置为0,从而保证助手对知识库内容的稳定使用,规避错误内容、模型幻觉;
  • 在产品智能客服、科研论文写作等场景中,我们同样更需要稳定性而不是创造性;
  • 但在个性化 AI、创意营销文案生成等场景中,我们就更需要创意性,从而更倾向于将 Temprature 设置为较高的值。

3. System Prompt

System Prompt 是随着 ChatGPT API 开放并逐步得到大量使用的一个新兴概念,事实上,它并不在大模型本身训练中得到体现,而是大模型服务方为提升用户体验所设置的一种策略。

具体来说,在使用 ChatGPT API 时,你可以设置两种 Prompt:

  1. System Prompt,该种 Prompt 内容会在整个会话过程中持久地影响模型的回复,且相比于普通 Prompt 具有更高的重要性;
  2. User Prompt,这更偏向于咱们平时的 Prompt,即需要模型做出回复的输入。

我们一般设置 System Prompt 来对模型进行一些初始化设定,例如,我们可以在 System Prompt 中给模型设定我们希望它具备的人设如一个个人知识库助手等。System Prompt 一般在一个会话中仅有一个。在通过 System Prompt 设定好模型的人设或是初始设置后,我们可以通过 User Prompt 给出模型需要遵循的指令。例如,当我们需要一个幽默风趣的个人知识库助手,并向这个助手提问我今天有什么事时,可以如下地构造 Prompt:

{
    "system prompt":"你是一个幽默风趣的个人知识库助手,可以根据给定的知识库内容回答用户的提问,注意,你的回答风格应是幽默风趣的",
    "user prompt":"我今天有什么事务?"
}

通过如上 Prompt 的构造,我们可以让模型以幽默风趣的风格回答用户提出的问题。注意,如果有多个用户问题,那么我们只需要添加对应数量的 User Prompt 即可,System Prompt 仅需构造一个。

附一 基于 LangChain 自定义 LLM

LangChain 为基于 LLM 开发自定义应用提供了高效的开发框架,便于开发者迅速地激发 LLM 的强大能力,搭建 LLM 应用。

LangChain 也同样支持多种大模型,内置了 OpenAI、LLAMA 等大模型的调用接口。但是,LangChain 并没有内置所有大模型,它通过允许用户自定义 LLM 类型,来提供强大的可扩展性。

在本部分,我们以百度文心大模型为例,讲述如何基于 LangChain 自定义 LLM,让我们基于 LangChain 搭建的应用能够支持百度文心、讯飞星火等国内大模型。

本部分涉及相对更多 LangChain、大模型调用的技术细节,有精力同学可以学习部署,如无精力可以直接使用后续代码来支持调用。

要实现自定义 LLM,需要定义一个自定义类继承自 LangChain 的 LLM 基类,然后定义两个函数:

  1. _call 方法,其接受一个字符串,并返回一个字符串,即模型的核心调用;
  2. _identifying_params 方法,用于打印 LLM 信息。

首先我们导入所需的第三方库:

import json
import time
from typing import Any, List, Mapping, Optional, Dict, Union, Tuple
import requests
from langchain.callbacks.manager import CallbackManagerForLLMRun
from langchain.llms.base import LLM
from langchain.utils import get_from_dict_or_env
from pydantic import Field, model_validator

由于百度文心使用双重秘钥进行认证,用户需要先基于 API_Key 与 Secret_Key 来获取 access_token,再使用 access_token 来实现对模型的调用(详见《3. 调用百度文心》),因此我们需要先定义一个 get_access_token 方法来获取 access_token:

def get\_access\_token(api_key : str, secret_key : str):
    """
 使用 API Key,Secret Key 获取access\_token,替换下列示例中的应用API Key、应用Secret Key
 """
    # 指定网址
    url = f"https://aip.baidubce.com/oauth/2.0/token?grant\_type=client\_credentials&client\_id={api\_key}&client\_secret={secret\_key}"
    # 设置 POST 访问
    payload = json.dumps("")
    headers = {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    }
    # 通过 POST 访问获取账户对应的 access\_token
    response = requests.request("POST", url, headers=headers, data=payload)
    return response.json().get("access\_token")

接着我们定义一个继承自 LLM 类的自定义 LLM 类:

# 继承自 langchain.llms.base.LLM
class Wenxin\_LLM(LLM):
    # 原生接口地址
    url = "https://aip.baidubce.com/rpc/2.0/ai\_custom/v1/wenxinworkshop/chat/eb-instant"
    # 默认选用 ERNIE-Bot-turbo 模型,即目前一般所说的百度文心大模型
    model_name: str = Field(default="ERNIE-Bot-turbo", alias="model")
    # 访问时延上限
    request_timeout: Optional[Union[float, Tuple[float, float]]] = None
    # 温度系数
    temperature: float = 0.1
    # API\_Key


### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

![](https://img-blog.csdnimg.cn/img_convert/815effa5b61ceddecd5c01c0d09d5915.png)

给大家整理的电子书资料:

  

![](https://img-blog.csdnimg.cn/img_convert/3b8e19f78fe1a4650ae6816413d59b2e.png)



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 18
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值