上一篇教大家开发如何调用DeepSeek对话接口,以及其他大模型的对话接口。
一、发现问题
本文 使用大模型对话的技巧和原则,提升对话回复的效率和质量。
我们来回顾下,先看下demo代码
这是我们调用WebApi接口的返回值,我们在使用chatgpt网页版问相同的问题,得到的结果差异很多。比如下图。大家可以测试下各种提问。而且不管是openai的大模型,还是DeepSeek都会出现这个情况。
原因很好解释,chatgpt网页版调用的是基于gpt大模型进行各种微调优化后的回答,而我们直接调用gpt大模型,所以得到的结果也是不一样的。那就有很多问题了,比如:
-
1、我们调用WebApi回答的问题是永远没有网页版本的好吗?
-
2、如何缩小这个差距,或者能否超越网页版本?
-
3、如何使用接口给的那些参数来优化对话?
今天我们就带着这些问题来聊一下对话WebAPI的最佳实践。有如下几种方式:
- 角色设定:擅于使用 System 给GPT设定角色和任务,如“哲学大师”;
- 指令注入:在 System 中注入常驻任务指令,如“主题创作”;
- 问题拆解:将复杂问题拆解成的子问题,分步骤执行,如:Debug 和多任务;
- 分层设计:创作长篇内容,分层提问,先概览再章节,最后补充细节,如:小说生成;
- 编程思维:将prompt当做编程语言,主动设计变量、模板和正文,如:评估模型输出质量;
- Few-Shot:基于样例的prompt设计,规范推理路径和输出样式,如:构造训练数据;
接下来我们就根据这几点一一介绍。
一、大模型对话接口WebAPI调用模拟器playground
OpenAI官方提供一个playground,是调用对话WebAPI的一个网页模拟器,地址如下:
https://platform.openai.com/playground/chat?models=gpt-4o-mini
不过需要充值,有些麻烦,我们可以使用国内的硅基流动的playground来体验一下。
https://cloud.siliconflow.cn/playground/chat/17885302723
本文都是针对system角色的内容进行优化!
二、角色设定
请求参数messages里,有一个非常重要的角色system,system就是大模型在本次对话中扮演什么身份,比如大模型本次扮演的是“体育专家”,一般使用第3人称“你是xxx专家/教授等”,所以接口调用时,role=system的content内容需要重点思考。
1、角色设定的差异对比
system:"你是一位小学数学老师"。
syetem:"你是一位博学多才的哲学家"
提问:1+1=2
结果差异很大。说明system的设定非常重要。我们可以根据具体的场景,针对不同的客户群里,设置不同的system的content值,就能让大模型的回答更贴近各种客户群体的不同所想。
还有一些system的content常用用法,
模版:你是一位xxx(身份),对于我的所有问题,你都用xxx(身份)的思维解答。
比如:(1)你是一位小学数学老师,对于我的所有问题,你都用小学生的思维解答。
(2)对于我的所有问题,你都用佛学或中国哲学来回答,不要啰嗦,要有大师风范。
三、指令注入
同样是对角色system的content设置,比如“主题创作”。
比如1:
对于陈列出的每个[话题],创作100字的内容,体现话题的论点,语言风趣幽默。
比如2:
您将获得一对关于同主题的文章(用-------标签分隔)。首先总结每篇文章的论点,然后指出那篇文章提出了更好的论点,并解释原因。
四、分步骤设定
同样是对角色system的content设置。比如:
您将受到DEBUG问题,将每个问题分类为报错日志分析、根因可能性推断、解决方案、参考资料,分点陈列输出,格式如下所示:
报错日志分析:
根因可能性推断:
解决方案:
参考资料:
五、编程思维
事例1
根据以上的事例,可以看到,system里的内容,很像我们编程的思维,第一步执行什么,第二步执行什么,最后还有统计count数。并且还有“每个”,跟我们代码里的for循环一样。
回答的内容可以看到整个for循环输出,计算出了count数量。
事例2-翻译
system:我输入英文,你翻译成中文,我输入中文,你翻译成英文。
事例3-按照你的格式输出
总结
我们针对system角色设置内容,也是一种提示词设置方法,只有不断地测试不同的方式,才能更大程度的挖掘大模型的能力,才能更好的贴合实际的需求。