chainlit 一些外部集成部署方法

chainlit 对于部署支持多种模式,比如直接all-in-one 的,基于fastapi 集成的(api 模式),基于copilot (web 地址 ),react (web 组件),以及其他外部集成,比如slack,team,discord 等,以下简单说明下

模式说明

  • web app 模式
    也就是默认的all-in-one, 直接基于提供的cli 启动就可以了
  • copilot
    就是web 组件url 地址的引用,同时也支持不少参数配置,比如认证,定制,进行函数调用,还是很灵活的
  • api 模式
    实际上就是与fastapi 的集成,实现机制上了python ContextVar,使用上需要明确先调用内部提供的方法
@app.get("/app")
async def read_main():
    # 核心,会进行context 的包装
    init_http_context()
    await cl.Message(content="Hello, I am a chatbot!").send()
    return {"message": "Hello World from main app"}

认证处理(基于依赖以及上下文数据)

from chainlit.context import init_http_context
from chainlit.auth import authenticate_user
import chainlit as cl
 
app = FastAPI()
 
@app.get("/hello")
async def hello(
    request: Request,
    current_user: Annotated[
        cl.User, Depends(authenticate_user)
    ],
):
    print(current_user)
    init_http_context(user=current_user)
    await cl.Message(content="Hello World").send()
    return HTMLResponse("Hello World")
  • react 组件模式
    就是标准的react 组件引用,这个实际的frontend 也使用了此组件
  • 其他集成模式
    就是外部的一些集成,通过配置,或者一些简单代码集成的

说明

chainlit提供的集成模式还是比较多的,fastapi api 集成模式部分还是值得参考的

参考资料

https://docs.chainlit.io/deploy/overview
https://www.npmjs.com/package/@chainlit/react-client

posted on 2024-10-11 07:20  荣锋亮  阅读(58)  评论(0编辑  收藏  举报

导航