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