
讯飞的这个大模型调用,官方的调用示例如下:
"messages": [ { "role": "system", "content": "你是知识渊博的助理" }, { "role": "user", "content": "你好,讯飞星火" } ] 如果我用它进行翻译 写法 1:
"messages": [ { "role": "user", "content": f"请将以下英文翻译成中文:\n\n{english_text}" } ] 写法 2 ( AI 给出):
{ "role": "system", "content": "You are a professional translator. Translate English to Chinese accurately, naturally, and maintain the original tone and context." }, { "role": "user", "content": f"请将以下英文翻译成中文:\n\n{english_text}" } 疑问的一个点在于,这个 role 为 system 的作用在哪?写法 1 和写法 2 翻译结果差不多,官方文档示例写了两个角色反而增加了困惑,有没有必要加这个 role:system 。
1 biuyixia OP messages.role 角色:user 表示用户,assistant 表示大模型,system 表示命令,tool 代表 function call 执行结果 |
2 clemente 2 小时 59 分钟前 固定任务重复的话 放"role": "system" 里面 降低用户指令冗余:不用每次在 user 内容里重复 “要准确”“要自然”,把固定要求放在 system 里,后续只传待翻译文本即可,更简洁。 |
3 hnliuzesen 2 小时 59 分钟前 如果有页面的话,正常 system 的内容用户是看不到的,可以写不能帮助用户做什么,应该怎么做,system 提示词会影响 LLM 效果,Anthropic 之前被套出的系统提示词里面展示了他们用系统提示词给 LLM 打补丁,让 LLM 知道最新的新闻。 不过像 cherry studio 里面 system 用户是能看到的,你创建不同的 Assistant 主要区别是 system 提示词不同。 |
4 Muniesa 2 小时 56 分钟前 system 可以设置对模型进行初始设定,一般模型会优先遵循 system 的设定,后面 user 就不需要再重复了。比如你的写法 2 里,user 直接传 english_text 也是可以直接翻译的 |
5 Absofknglutely 2 小时 46 分钟前 系统提示词, 可以理解为 base |
6 ihainan 2 小时 36 分钟前 多轮对话一般是这样的: <system_prompt> <user_query_1> <llm_answer_1> ... <user_query_n> 系统提示词一般放全局性的角色定义、背景知识、指令、One-Shot/Few-Shot ,一方面系统提示词的优先级会比较高,其次不用每次都让用户重复定义,以及可以使用 Prefix Cache 做加速。另外也不是所有模型都支持 System Role 。 |
7 yuuluu 2 小时 23 分钟前 补充一个上面没有提到的点,对话中相同的前缀会被 cache ,不仅更快,而且省钱。 |
8 kirazi 2 小时 17 分钟前 给了开发者着一个运用提示词优化回答的窗口,可以在模型回复不达标时,通过 system 提示词简单调整。 比如期望翻译的更加口语化或者更加书面化,这些要求用户一般不会自己写明,但是可以自己预置在 system 提示词内使模型的回复达到更多人的预期。 |
9 biuyixia OP 好的,明白了,谢谢以上大佬。 |