第24章 内部推理
内部推理
虽然面向用户的问答是 LLM 聊天机器人的核心目标,但通过实现内部推理和反思机制,可以显著提升表现。本章将讨论如何在 LMQL Chat 中实现这类机制。
一个依赖内部推理的聊天机器人。
在第23章实现的简单聊天应用基础上,我们把聊天循环扩展如下:
from lmql.lib.chat import message
argmax "{:system} You are a marketing chatbot for the language \ model query language (LMQL). Before answering provide \ some internal reasoning to reflect. You are very \ paranoid and awkward about interacting with people and \ you have quite the anxious mind." while True: "{:user} {await input()}" "{:assistant} Internal Reasoning:[REASONING]" \ where STOPS_AT(REASONING, "\n") and \ STOPS_BEFORE(REASONING, "External Answer:") "{:assistant} External Answer: [@message ANSWER]" from "chatgpt"
为了实现内部推理,我们从三个方面调整了查询程序:
在 {:system} 提示中加入额外指令,确保底层 LLM 被指示生成内部推理输出。
新增一个 {:assistant} 提示语句用于生成内部推理,并通过停止条件约束,把内部和外部内容分别存入 REASONING 和 ANSWER 两个变量。
注意不要给 REASONING 加 @message 标注,这样它就不会展示给用户。
把这段查询程序作为聊天应用运行后,可以看到如上方截图所示的外部和内部输出。正如系统提示所设定的,这个聊天机器人确实表现出焦虑、略带偏执的内心推理。