大模型应用开发入门:GPT-4 与 ChatGPT 高级技巧实战
本文详细介绍了大模型应用开发的核心技术,涵盖提示工程设计、模型微调全流程及插件应用。内容包含提示词的角色设定、上下文构建、思维链推理及少样本学习策略;详细阐述了微调的数据准备、API 调用、监控及使用步骤,并结合法律分析、代码审查等案例说明应用场景;此外还补充了 RAG 架构对比及安全伦理考量,旨在帮助开发者掌握构建高质量智能应用的关键方法。

本文详细介绍了大模型应用开发的核心技术,涵盖提示工程设计、模型微调全流程及插件应用。内容包含提示词的角色设定、上下文构建、思维链推理及少样本学习策略;详细阐述了微调的数据准备、API 调用、监控及使用步骤,并结合法律分析、代码审查等案例说明应用场景;此外还补充了 RAG 架构对比及安全伦理考量,旨在帮助开发者掌握构建高质量智能应用的关键方法。

本章将深入探讨如何通过高级技巧,如提示工程、微调和插件使用,来最大化利用 GPT-4 和 ChatGPT 的能力。以下是本文的主要内容:
提示工程是一门新兴的学科,专注于优化输入提示词,以引导模型生成预期的输出。设计有效的提示词涉及以下三个关键要素:
赋予模型一个特定角色,使其响应更符合预期。例如:
prompt = "你是一个专业的编程助手,擅长解决各种编程问题。"
提供足够的背景信息,帮助模型理解任务的背景和限制。例如:
context = "当前项目基于 Python Flask 框架,需要处理高并发请求。"
明确描述需要模型完成的具体任务。例如:
task = "请为我编写一个 Flask 应用的用户认证模块,包括注册、登录和登出功能。"
组合后的完整提示词示例:
full_prompt = f"{role}\n\n{context}\n\n{task}"
我们知道,GPT-4 不擅长直接计算复杂数学题。比如,它无法直接准确计算 369 × 1235。
通过在提示词中加入'让我们一步一步思考'的指令,可以鼓励模型进行逐步推理,从而提高回答的准确性。例如:
prompt = "请计算 369 × 1235。让我们一步一步思考。"
输出示例逻辑:
369 * 1000 = 369000369 × 200 = 73800369 × 30 = 11070369 * 5 = 1845369000 + 73800 + 11070 + 1845 = 455715因此,369 × 1235 = 455715。
少样本学习指的是通过在提示词中提供少量高质量的示例,指导模型完成特定任务。这有助于模型快速适应特定的格式或逻辑。
示例:
示例 1:
问题:什么是时间复杂度?
回答:时间复杂度用于衡量算法执行所需时间的增长速率,通常用大 O 符号表示。
示例 2:
问题:什么是空间复杂度?
回答:空间复杂度用于衡量算法在执行过程中所需内存空间的增长速率,通常用大 O 符号表示。
问题:什么是递归?
回答:
模型输出: 递归是一种在函数定义中调用自身的方法,常用于解决具有重复子问题的计算问题。
示例:
给出一个简短的总结,不超过 100 字:
微调是指在特定数据集上对预训练模型进行再训练,以提升其在特定任务上的性能。通过微调,模型能够更好地理解和生成与特定领域相关的内容,从而降低幻觉率并提高专业度。
微调步骤如下:
收集包含输入(prompt)和输出(completion)的高质量示例,保存为 JSONL 格式。数据质量直接影响微调效果。
{"prompt": "请编写一个 Python 函数,计算两个数的和。", "completion": "def add(a, b):\n return a + b"}
使用 OpenAI 提供的工具将数据集上传至服务器。
openai tools fine_tunes.prepare_data -f your_data.jsonl
也可以通过代码上传:
import openai
response = openai.File.create(
file=open("out_openai_completion_prepared.jsonl", "rb"),
purpose='fine-tune'
)
# 两个参数是必需的:file 和 purpose
通过 API 调用开始微调过程,选择合适的基础模型和参数。
openai api fine_tunes.create -t your_prepared_data.jsonl -m davinci --suffix "custom_add"
使用命令行工具监控微调任务的进展。
openai api fine_tunes.follow -i ft-YourFineTuneID
在 API 调用中使用微调后的模型进行预测。
import openai
openai.api_key = "YOUR_API_KEY"
response = openai.Completion.create(
model="davinci:ft-your-org:custom_add-2024-04-01",
prompt="请编写一个 Python 函数,计算两个数的差。",
max_tokens=10
)
print(response["choices"][0]["text"])
目标:让模型能够理解和分析法律文档,提供准确的分析和建议。微调后的模型能更好地识别法律术语和条款逻辑。
目标:通过微调模型,自动检测代码中的潜在问题并提供改进建议。 JSONL 文件可以包含代码及相应的审查评论。这将帮助模型学习如何提供准确且相关的代码质量反馈。
{"prompt": "Review the following Python code: 'def sum(a, b): return a + b\nresult = sum(5, '5')'" , "completion": "Type error: The 'sum' function is adding an integer and a string. Consider converting the string to an integer using int() before passing it to the function."}
目标:生成财务报告的简明摘要,帮助用户快速了解关键内容。
目标:精准翻译技术文档,保持术语和专业性的一致。
目标:在特定专业领域内生成高质量、符合要求的内容,如医疗、金融等。
基于合成数据集,微调模型以生成高效的电子邮件营销内容。
使用 GPT-3.5 Turbo 生成包含营销提示词和对应邮件内容的示例。
import openai
import pandas as pd
def chat_completion(prompt, model="gpt-3.5-turbo", temperature=1):
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=temperature,
)
return response["choices"][0]["message"]["content"]
# 示例
prompts = ["Grocery Stores, Brussels, small"]
responses = [chat_completion(f"Role: You are an expert content writer with extensive direct marketing experience.\nContext: You have to write a short message for a direct marketing campaign to sell a new e-commerce payment service to stores. The target stores have the following three characteristics: - The sector of activity: {sector} - The city where the stores are located: {city} - The size of the stores: {size}\nTask: Write a short message for the direct marketing campaign. Use the skills defined in your role to write this message! It is important that the message you create takes into account the product you are selling and the characteristics of the store you are writing to.") for sector, city, size in [("Grocery Stores", "Brussels", "small")]]
data = pd.DataFrame({"prompt": prompts, "completion": responses})
data.to_csv("out_openai_completion.csv", index=False)
使用生成的合成数据集对模型进行微调,以生成高质量的营销邮件。
定义:插件扩展了 GPT-4 的功能,使其能够与外部系统和数据源互动。
应用:
结合优势:微调模型使其在特定任务上表现更优,而插件则扩展了模型的操作能力,二者结合能显著提高应用程序的智能化水平。
除了微调,检索增强生成(RAG)也是构建企业级 AI 应用的重要架构。
在使用大模型时,必须注意以下安全问题:
本章介绍了 GPT-4 和 ChatGPT 的高级技巧,包括提示工程、微调和插件使用。通过这些技巧,开发人员能够更有效地利用语言模型,构建高质量、智能化的应用程序。同时,理解和应用这些高级技巧,是构建企业级 AI 应用的关键。在实际开发中,应根据具体需求权衡微调、RAG 和提示工程的成本与效果,以实现最佳的业务价值。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online