Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -336,4 +336,3 @@ jobs:
echo "检测到Java文件被更改(根据环境变量APPBUILDER_JAVA_TESTS),准备启动Run Java tests with Jacoco部分..."
cd cicd/app-builder/java
bash print_coverage.sh

11 changes: 5 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@
- 调用AI原生应用,通过[AppBuilderClient](/docs/BasisModule/Platform/Application/appbuilder_client.md)可访问并管理在百度智能云千帆AppBuilder[网页端](https://console.bce.baidu.com/ai_apaas/app)发布的AI原生应用,并可注册本地函数联动端云组件
- **编排**
- 配置知识库,通过[KnowledgeBase](/docs/BasisModule/Platform/KnowledgeBase/knowledgebase.md)管理知识库,进行文档及知识切片的增删改查,配合[网页端](https://console.bce.baidu.com/ai_apaas/app)开发产业级的`RAG`应用
- 编排工作流,提供了`Message`、`Component`、`AgentRuntime`多级工作流抽象,实现工作流编排,并可与LangChain、OpenAI等业界生态能力打通
- 编排工作流,提供了`Message`、`Component`、`FlaskRuntime`、`ChainlitRuntime`多级工作流抽象,实现工作流编排,并可与LangChain、OpenAI等业界生态能力打通
- **监控**
- 提供了可视化Tracing、详细DebugLog等监控工具,助力开发者在生产环境应用
- **部署**
- `AgentRuntime`支持部署为基于`Flask`与`gunicorn`的API服务
- `AgentRuntime`支持部署为基于`Chainlit`的对话框交互前端
- `FlaskRuntime`支持部署为基于`Flask`与`gunicorn`的API服务
- `ChainlitRuntime`支持部署为基于`Chainlit`的对话框交互前端
- 提供了`appbuilder_bce_deploy`工具,可快速部署程序到百度云,提供公网API服务,联动AppBuilder工作流

### 使用 AppBuilder-SDK 可以构建什么应用?
Expand Down Expand Up @@ -296,10 +296,9 @@ Hook:
- [TRACE基础功能](https://github.com/baidubce/app-builder/blob/master/docs/BasisModule/Trace/basic.md)
- [TRACE拓展功能](https://github.com/baidubce/app-builder/blob/master/docs/BasisModule/Trace/phoenix_method.md)
- 部署:
- [交互式前端部署](https://github.com/baidubce/app-builder/blob/master/docs/BasisModule/Deployment/AgentChainlit.md)
- [交互式前端部署](https://github.com/baidubce/app-builder/blob/master/docs/BasisModule/Deployment/chainlit_deploy.md)
- [公有云部署](https://github.com/baidubce/app-builder/blob/master/docs/BasisModule/Deployment/cloud.md)
- [API 访问](https://github.com/baidubce/app-builder/blob/master/docs/BasisModule/Deployment/flask.md)
- [AgentRuntime](https://github.com/baidubce/app-builder/blob/master/docs/BasisModule/Deployment/agentruntime.md)
- [API 访问](https://github.com/baidubce/app-builder/blob/master/docs/BasisModule/Deployment/flask_deploy.md)
- [UserSession](https://github.com/baidubce/app-builder/blob/master/docs/BasisModule/Deployment/usersession.md)
- 平台:
- 应用:
Expand Down
297 changes: 297 additions & 0 deletions cookbooks/components/chainlit_runtime.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,297 @@
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"id": "f802e64d-4eaa-445d-a48a-1042a91bc394",
"metadata": {
"tags": []
},
"source": [
"# 基于ChainlitRuntime服务化组件\n",
"\n",
"## 目标\n",
"使用 ChainlitRuntime 对组件进行服务化。\n",
"\n",
"ChainlitRuntime 是对组件(Component)和应用的服务化封装,具体有如下几个功能:\n",
"- 一键服务化组件: 使得组件能够以服务的形式运行,支持对话框交互。\n",
"- Session 数据管理: 提供 Session 数据的管理功能,允许跟踪和存储用户会话数据。\n",
"- 请求时鉴权: 支持在请求时进行认证,确保安全性。\n",
"\n",
"\n",
"## 准备工作\n",
"### 安装Python SDK\n",
"\n",
"appbuilder 支持使用 pip 安装(要求Python >= 3.8),并且 ChainlitRuntime 服务化组件依赖 `appbuilder-sdk[serve]`"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2939356f-61c2-42e9-9e0c-fc6729c193f6",
"metadata": {
"vscode": {
"languageId": "shellscript"
}
},
"outputs": [],
"source": [
"pip install appbuilder-sdk 'appbuilder-sdk[serve]'"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "aeb2fa55-075f-48df-a9fb-8b40d9900684",
"metadata": {},
"source": [
"## 基本用法\n",
"\n",
"### 1. 快速开始\n",
"\n",
"下面的示例会基于 Playground 组件,在 8091 端口部署 chainlit 服务: "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "41559341-fd7a-478c-a08b-1477d79e9d41",
"metadata": {
"ExecuteTime": {
"end_time": "2023-12-18T06:24:26.982459Z",
"start_time": "2023-12-18T06:23:53.771345Z"
}
},
"outputs": [],
"source": [
"import os\n",
"import appbuilder\n",
"from appbuilder.utils.chainlit_deploy import ChainlitRuntime\n",
"\n",
"# 使用组件之前,请前往千帆AppBuilder官网创建密钥,流程详见:https://cloud.baidu.com/doc/AppBuilder/s/Olq6grrt6#1、创建密钥\n",
"os.environ[\"APPBUILDER_TOKEN\"] = '...'\n",
"\n",
"component = appbuilder.Playground(\n",
" prompt_template=\"{query}\",\n",
" model=\"ERNIE-Bot\"\n",
")\n",
"\n",
"agent = ChainlitRuntime(component=component)\n",
"agent.chainlit_component(port=8091)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "5fc5bc38-6bc5-4187-a8fd-f802d77d89fa",
"metadata": {},
"source": [
"### 2. ChainlitRuntime 参数说明"
]
},
{
"cell_type": "markdown",
"id": "c2364c35",
"metadata": {},
"source": [
"#### 2.1 类初始化参数说明\n",
"\n",
"ChainlitRuntime 初始化接受4个参数。\n",
"\n",
"| 参数名称 | 参数类型 | 是否必须 | 描述 | 示例值 |\n",
"|--|--|--|--|--|\n",
"| component | Component | 是 | 可运行的 Component, 该 Component 需要实现 run(message, stream, **args) 方法。 | Playground(prompt_template=\"{query}\", model=\"ERNIE-Bot\") |\n",
"| user_session_config | sqlalchemy.engine.URL\\|Str\\|None | 否 | 会话 Session 数据存储的数据库配置,遵循 sqlalchemy 后端定义,可参考[文档](https://docs.sqlalchemy.org/en/20/core/engines.html#backend-specific-urls)。默认使用 sqlite:///user_session.db,即本地的 SQLite 存储 | \"sqlite:///user_session.db\" |\n",
"| user_session| UserSession | 否 | 用户会话管理器,如果不指定则自动生成一个默认的 UserSession | UserSession(user_session_config) |\n",
"| tool_choice| ToolChoice| 否 | 可用于Agent强制执行的组件工具 | |"
]
},
{
"cell_type": "markdown",
"id": "61923b00",
"metadata": {},
"source": [
"## 高级用法"
]
},
{
"cell_type": "markdown",
"id": "a2303c76",
"metadata": {},
"source": [
"### 1. 一键服务化组件 \n",
"ChainlitRuntime 可以快速组件以服务的形式运行,支持对话框交互。"
]
},
{
"cell_type": "markdown",
"id": "673c7565",
"metadata": {},
"source": [
"**1.1 对话框交互组件-文本格式**\n",
"\n",
"基于 chainlit 的对话框交互对被服务化的组件的 message 参数更加严格,要求能够接受 Str 的基础类型。\n",
"\n",
"执行下面的代码,会启动一个 chainlit 页面,页面地址:0.0.0.0:8091"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e485544f",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import appbuilder\n",
"from appbuilder.utils.chainlit_deploy import ChainlitRuntime\n",
"\n",
"# 使用组件之前,请前往千帆AppBuilder官网创建密钥,流程详见:https://cloud.baidu.com/doc/AppBuilder/s/Olq6grrt6#1、创建密钥\n",
"os.environ[\"APPBUILDER_TOKEN\"] = '...'\n",
"\n",
"component = appbuilder.Playground(\n",
" prompt_template=\"{query}\",\n",
" model=\"ERNIE-Bot\"\n",
")\n",
"\n",
"agent = ChainlitRuntime(component=component)\n",
"agent.chainlit_component(port=8091)"
]
},
{
"cell_type": "markdown",
"id": "4d63bece",
"metadata": {},
"source": [
"Chainlit Demo页面示意图如下所示,\n",
"\n",
"![chainlit demo](image/agent_runtime_with_chainlit_demo.png)"
]
},
{
"cell_type": "markdown",
"id": "e6a93195",
"metadata": {},
"source": [
"**1.2 对话框交互组件-其他格式**\n",
"\n",
"对输出其他类型的组件,如图片、音频、代码等组件,提供渲染效果。\n",
"\n",
"注意:该接口目前只支持新协议组件,即appbuilder.core.component.v2实现下的组件。\n",
"\n",
"执行下面的代码,会启动一个 chainlit 页面,页面地址:0.0.0.0:8092"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "07348a19",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import appbuilder\n",
"from appbuilder.utils.chainlit_deploy import ChainlitRuntime\n",
"from appbuilder.core.components.v2 import SimilarQuestion\n",
"\n",
"# 使用组件之前,请前往千帆AppBuilder官网创建密钥,流程详见:https://cloud.baidu.com/doc/AppBuilder/s/Olq6grrt6#1、创建密钥\n",
"os.environ[\"APPBUILDER_TOKEN\"] = '...'\n",
"\n",
"component = SimilarQuestion()\n",
"agent = ChainlitRuntime(component=component)\n",
"agent.chainlit_component_debug(\n",
" port=8092, \n",
" tool_eval_args={},\n",
" query_name = \"query\"\n",
")"
]
},
{
"cell_type": "markdown",
"id": "a92b9075",
"metadata": {},
"source": [
"Chainlit Demo页面示意图如下所示,\n",
"\n",
"![chainlit demo](image/agent_runtime_with_chainlit_component_debug.jpg)"
]
},
{
"cell_type": "markdown",
"id": "a074f367",
"metadata": {},
"source": [
"**1.2 对话框交互AppBuilderClient**\n",
"\n",
"基于 chainlit 的对话框交互AppBuilderClient,可实现对话交互。支持工作流Agent、自主规划Agent应用。\n",
"\n",
"执行下面的代码,会启动一个 chainlit 页面,页面地址:0.0.0.0:8091。可在页面上上传文档(可选)、执行对话。"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0a75e035",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import appbuilder\n",
"from appbuilder.utils.chainlit_deploy import ChainlitRuntime\n",
"\n",
"# 使用组件之前,请前往千帆AppBuilder官网创建密钥,流程详见:https://cloud.baidu.com/doc/AppBuilder/s/Olq6grrt6#1、创建密钥\n",
"os.environ[\"APPBUILDER_TOKEN\"] = \"...\"\n",
"# 使用之前,在官网个人空间获取应用ID,如下图\n",
"app_id= \"...\"\n",
"client = appbuilder.AppBuilderClient(app_id)\n",
"agent = ChainlitRuntime(client)\n",
"agent.chainlit_agent(port=8091)"
]
},
{
"cell_type": "markdown",
"id": "d5162e29",
"metadata": {},
"source": [
"在官网个人空间获取应用ID\n",
"![get app_id](../app_builder_resources/app_id.png)\n",
"\n",
"使用服务上传文件并对话示例图如下所示\n",
"![chainlit demo](./image/agent_runtime_with_chainlit_agent.png)\n",
"\n",
"使用工作流Agent应用对话示例如下图所示\n",
"![chainlit demo](./image/agent_runtime_with_chainlit_chatflow.png)"
]
},
{
"cell_type": "markdown",
"id": "2392f46d",
"metadata": {},
"source": [
"### 2. Session 数据管理\n",
"请参考:[user_session.ipynb](./user_session.ipynb)\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Loading