消息是用户发送给助手或助手发送给用户的信息单元。与生命周期钩子结合使用,它们构成了聊天的基本构建块。

消息包含内容、时间戳,且不能嵌套。

示例:回复用户消息

让我们创建一个简单的助手,它用问候语回复用户消息。

import chainlit as cl

@cl.on_message
async def on_message(message: cl.Message):
    response = f"Hello, you just sent: {message.content}!"
    await cl.Message(response).send()

消息 API

了解更多关于消息 API 的信息。

聊天上下文

由于 LLM 是无状态的,您通常需要将当前对话的消息累积到列表中,以便在每次查询时向 LLM 提供完整的上下文。

您可以使用 user_session 手动执行此操作。但是,Chainlit 提供了一种内置方式来实现此功能

chat_context
import chainlit as cl

@cl.on_message
async def on_message(message: cl.Message):
    # Get all the messages in the conversation in the OpenAI format
    print(cl.chat_context.to_openai())

    # Send the response
    response = f"Hello, you just sent: {message.content}!"
    await cl.Message(response).send()

每条发送或接收的消息将自动累积到 cl.chat_context 中。然后您可以使用 cl.chat_context.to_openai() 获取 OpenAI 格式的对话并将其提供给 LLM。