调用API
先使用一个例子
from openai import OpenAI
client = OpenAI(
# This is the default and can be omitted
api_key=os.environ.get("OPENAI_API_KEY"), //这个在环境env中
)
completion = client.chat.completions.create(
# 调用模型:ChatGPT-3.5
model="gpt-3.5-turbo",
# messages 是对话列表
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
)
申请API key可以从OpenAI、文心一言、讯飞星火等网站获取,得到之后调用各自api并进行自定义prompt来提升模型回答效果。这里我使用的是OpenAI的API key,调用API可能会用到一些参数
-
· model,即调用的模型,一般取值包括“gpt-3.5-turbo”(ChatGPT-3.5)、“gpt-3.5-turbo-16k-0613”(ChatGPT-3.5 16K 版本)、“gpt-4”(ChatGPT-4)。
-
· messages,即我们的 prompt。ChatCompletion 的 messages 需要传入一个列表,列表中包括多个不同角色的 prompt。我们可以选择的角色一般包括
-
system:系统角色,通常用来设置对话的初始条件;
-
user:用户输入的 prompt;
-
assistant:助手,一般是模型历史回复,作为提供给模型的参考内容。
-
-
· temperature,即 Temperature 系数。控制输出的随机程度,温度系数越低,生成更加一致可控性的答案,若越高,则会产生更多样化的答案,适合创造性的任务例如故事生成;而低温度系数更适合问题回答。
-
· max_tokens,最大 token 数,即模型输出的最大 token 数。OpenAI 计算 token 数是合并计算 Prompt 和 Completion 的总 token 数,要求总 token 数不能超过模型上限(如默认模型 token 上限为 4096)。因此,如果输入的 prompt 较长,需要设置较大的 max_token 值,否则会报错超出限制长度。
Prompt Engineering
prompt(提示)就是用户与大模型交互输入的代称。即我们给大模型的输入称为 Prompt,而大模型返回的输出一般称为 Completion。
Prompt设计的原则
编写清晰、具体的指令
-
使用分隔符清晰表示输入的不同部分,一般使用“”“
-
使用结构化的输出
让模型自己思考
-
指导模型在下结论前找出一个自己的解法并加以判断
例如:
不过文档中给出的答案是错误的,可能是调用的gpt-3.5能力没那么强,还要加以引导才能判断,我自己测试的时候使用的是gpt-4,这种程度的prompt就已经让模型能够发现错误了,如下:
大模型”幻觉“
开发与应用语言模型时,需要注意它们可能生成虚假信息的风险,尽管大模型经过了大量大规模的预训练,掌握了丰富知识,但是实际上并没有完全记住所见的信息,难以判断自己的知识边界,如果让其描述一个不存在的产品,它可能会自行构建似是而非的细节,这被称为”幻觉“。
例如给出以下代码
prompt = f"""
给我一些研究LLM长度外推的论文,包括论文标题、主要内容和链接
"""
response = get_completion(prompt)
print(response)
大模型输出结果很可能是它自己瞎编的,虽然看起来很正确
1. 论文标题: "Extrapolating LLM Lengths: A Study on the Impact of Training Data Size"
主要内容: 该论文研究了在训练数据规模不断增加的情况下,LLM长度的外推效果。通过实验和数据分析,论文探讨了训练数据规模对LLM长度外推性能的影响,并提出了一些改进方法。
链接:https://arxiv.org/abs/2106.12345
2. 论文标题: "Analyzing the Extrapolation of LLM Lengths in Natural Language Understanding Tasks"
主要内容: 该论文分析了LLM长度在自然语言理解任务中的外推情况。通过实验和对比分析,论文探讨了不同任务对LLM长度外推的需求,以及如何优化LLM模型在不同长度下的性能。
链接:https://arxiv.org/abs/2110.67890
3. 论文标题: "Improving LLM Length Extrapolation through Data Augmentation Techniques"
主要内容: 该论文提出了一种通过数据增强技术来改进LLM长度外推的方法。通过在训练数据中引入多样性和噪声,论文探讨了如何提高LLM模型在不同长度下的泛化能力。
链接:https://arxiv.org/abs/2201.23456
希望以上论文能够帮助到您的研究工作。
不过我改用gpt-4进行测试,发现这个答案就变成
截至我的最后更新(2023年4月),关于LLM(语言模型)长度外推的研究还在不断发展之中。长度外推通常指的是模型处理比其在训练期间见过的更长的文本的能力。这在大型语言模型(如GPT系列)中尤其受到关注,因为它们在多种任务上展现出了卓越的性能,包括但不限于文本生成、翻译、摘要等。
虽然我无法提供实时的论文数据库,但我可以指出一些研究方向和可能的关键词,帮助你在学术数据库和预印本服务器(如arXiv)中找到相关论文:
### 关键词
- Length Extrapolation in Language Models
- Long Context in Language Models
- Text Generation Beyond Training Length
- Scaling Laws for Language Models
### 研究方向
1. **大型语言模型的长度外推能力**:研究大型语言模型(如GPT-3)处理超出其训练长度限制的文本的能力。
2. **长度外推对模型性能的影响**:分析当输入长度超过模型在训练期间见过的最大长度时,模型性能(如准确性、连贯性)的变化。
3. **改进模型的长度外推能力**:探索技术和方法来增强模型处理长文本的能力,例如通过改进模型架构、训练策略等。
### 查找论文
为了找到具体的论文,你可以访问以下资源:
- **arXiv** (https://arxiv.org/): 一个包含物理学、数学、计算机科学等领域预印本论文的数据库。
- **Google Scholar** (https://scholar.google.com/): 一个广泛的学术搜索引擎,可以用来搜索各个领域的学术论文。
- **ACL Anthology** (https://aclanthology.org/): 专注于计算语言学和自然语言处理领域的论文集合。
### 示例论文
虽然我不能直接提供最新论文的链接,但以下是一些可能与你的兴趣相关的论文标题示例(请注意,这些标题是根据你的要求构造的,可能并不存在):
- "Exploring the Limits of Length Extrapolation in Transformer-Based Language Models"
- "Beyond the Horizon: Length Extrapolation in Large-Scale Language Models"
- "Scaling Laws for Length Extrapolation in Neural Language Models"
请使用上述关键词和资源进行搜索,以找到最新和最相关的研究成果。
明显严谨程度上升,看来模型更强也更不容易出现”幻觉“的问题。