进阶 lmql.ai 2026-10-11 18:10:44 · 29 阅读

第22章 构建你的第一个LMQL聊天机器人

你的第一个聊天机器人 本章将带你了解如何实现一个简单的 LMQL 聊天应用。我们将构建一个聊天机器人,它会响应用户消息,同时结合你在开发时提供的系统提示词。

1. 核心聊天循环 聊天机器人是一种交互式应用,会持续响应用户的输入。在 LMQL 中实现这一点非常简单,只需使用一个 while 循环,反复调用 input() 函数来等待并处理用户输入:

from lmql.lib.chat import message argmax while True: "{:user} {await input()}" "{:assistant} [@message ANSWER]" from "chatgpt"

注:你可以直接在 LMQL 游乐场中运行此查询。执行时,游乐场会在模型输出面板中提供一个简单的聊天界面。

标签 作为程序中的提示语句的一部分,我们使用指定的 {:user} 和 {:assistant} 标签来注释提示词,使模型能够区分用户消息和助手消息。

输入 请注意,在 LMQL 中必须使用 await input() 而不是传统的 Python input() 函数,以确保程序在等待用户输入时不会阻塞。

@message 为了区分内部输出和面向用户的聊天消息输出,你可以使用 @message 装饰器函数。这样,只有被装饰变量的输出会显示给用户,而中间推理过程则保留在内部。要了解有关聊天服务的更多信息,请务必阅读《聊天服务》章节。

关于模型选择,我们这里使用 chatgpt 模型。不过,基于 LMQL 对不同推理后端的广泛支持,你可以轻松将模型替换为其他受支持的模型。对于 ChatGPT,如 {:user} 这样的标签会直接转换为 OpenAI 角色。对于其他模型,LMQL 会插入等效的原始文本注释,例如 ((user))。

2. 添加系统提示词 虽然上述程序已经可以运行,但个性化程度不高。为了让聊天机器人更具吸引力,我们可以添加一个系统提示词,指导模型以特定方式回应。系统提示词是我们在程序开头包含的额外指令,用户不会直接看到它。

要添加系统提示词,只需包含一个额外的带 {:system} 注释的提示语句:

from lmql.lib.chat import message argmax "{:system} You are a marketing chatbot for the\ language model query language (LMQL)." while True: "{:user} {await input()}" "{:assistant} [ANSWER]" from "chatgpt"

生成的聊天应用现在会以更个性化的方式回应,因为它会在响应用户输入之前考虑系统提示词。在这种情况下,我们指示它作为 LMQL 营销代理进行回应。

3. 部署聊天机器人 最后,为了超越游乐场,我们可以使用 lmql chat 命令将聊天机器人作为本地 Web 应用进行部署。只需将上述程序保存为 chat.lmql,然后运行以下命令:

bash lmql chat chat.lmql

服务器启动后,你可以通过提供的本地 URL 访问该聊天机器人。

使用 LMQL 聊天界面的简单聊天机器人。

在这个界面中,你可以通过在屏幕底部的输入框中打字与聊天机器人交互。聊天机器人会回应你的输入,同时结合你在程序中提供的系统提示词。在右侧,你可以查看程序的完整内部提示词,包括生成的提示语句和模型输出。这让你随时能够理解模型接收到的确切输入及其回应方式。

了解更多 要想深入学习,请返回聊天概览页面,并选择其中一个提供的主题。

评论 (0)