第23章 LMQL Serving 服务部署与实现
使用 chatserver
或者,如果你想在自己的代码中启动 LMQL chat server,可以使用 lmql.lib.chat.chatserver。该类接收查询文件路径或查询函数作为参数,并返回一个 chat server 对象,可通过 run() 方法启动:
python
from lmql.lib.chat import chatserver
chatserver('path/to/my-query.lmql').run()
注意,直接传递查询函数时,必须提供异步定义(async def)函数,以便支持并发处理客户端请求。
@message 流式输出
Chat 依赖基于装饰器的输出流式处理。具体来说,只有被 @message 标注的模型输出变量才会被流式传输并在聊天界面中显示给用户。这使得模型输出与聊天输出之间能够清晰分离,同时也支持隐藏内部推理过程。
若要在自定义输出写入器中使用 @message,请确保继承自 lmql.lib.chat 中的 ChatMessageOutputWriter,该类提供了专门处理和流式传输 @message 变量的额外方法。
更高级的用法
对于更高级的服务场景(例如将 Chat 集成到你自己的 Web 应用中),请参考 src/lmql/ui/chat/__init__.py 中 chatserver 的极简实现。该实现非常精简,可轻松适配你的需求和基础设施。对应的 Web UI 实现在 src/lmql/ui/chat/assets/ 中,可作为你自定义客户端实现和 UI 适配的良好起点。
关于其他形式的输出流(例如通过 HTTP 或 SSE),请参阅有关 Output Streaming 的章节。
免责声明:LMQL chat server 是一个简单的代码模板,不包含任何安全特性、认证或成本控制。它仅适用于本地开发和测试,不应直接用于生产环境。在部署你自己的聊天应用之前,请确保实施必要的安全措施、控制成本和实现认证机制。