chainlit 一些内置session 变量

chainlit 兼容扩展点不是很多,但是灵活性还是很不错的,比如我们可以自己基于session 实现一些数据在不同阶段的共享,当然chainlit也内置了一些
变量,可以方便使用

内置的变量

  • 信息
user_session = user_sessions[context.session.id]
# Copy important fields from the session
user_session["id"] = context.session.id
user_session["env"] = context.session.user_env
user_session["chat_settings"] = context.session.chat_settings
user_session["user"] = context.session.user
user_session["chat_profile"] = context.session.chat_profile
user_session["http_referer"] = context.session.http_referer
user_session["client_type"] = context.session.client_type
 
if isinstance(context.session, WebsocketSession):
    user_session["languages"] = context.session.languages
 
return user_session.get(key, default)
  • 简单说明
    基于session 存储信息的使用,就类似我们日常开发中的session 使用
import chainlit as cl
 
 
@cl.on_chat_start
def on_chat_start():
    cl.user_session.set("counter", 0)
 
 
@cl.on_message
async def on_message(message: cl.Message):
    counter = cl.user_session.get("counter")
    counter += 1
    cl.user_session.set("counter", counter)
 
    await cl.Message(content=f"You sent {counter} message(s)!").send()

说明

使用好内置session 变量可以做一些有趣的事情,比如chainlit 的starter 是比较方便的功能,但是缺少一些上下文信息(比如我们需要处理特定任务的场景),使用好chat_profile 这个session 变量就可以做不少事情

参考资料

backend/chainlit/user_session.py
https://docs.chainlit.io/concepts/user-session
https://docs.chainlit.io/concepts/message

posted on 2024-09-18 00:03  荣锋亮  阅读(9)  评论(0编辑  收藏  举报

导航