Appearance
01. 应用配置的存储流程
在 LLMOps 应用编排页面,应用的配置可以划分成几种,例如:1.草稿配置:用户在前端编排页面修改 Agent 配置时,实时存储的就是 草稿配置,草稿配置只会在 编排页面 调试中生效,在开放 API 或者 WebApp 中均不会起效果。2.当前发布的运行配置:即当前 Agent 智能体在开放 API 或者在 WebApp 中使用的配置信息,由 草稿配置 发布得到。3.历史发布的运行配置:记录每一次发布的运行配置,便于在编排页面对配置进行 回退操作,当执行 回退操作 时会将对应的运行配置同步到 草稿配置 中,完成对 草稿配置 的覆盖。 其运行流程如下
所以在 LLMOps 项目中,可以考虑使用两张表来完成该运行流程,这两张表分别是: 1.app_config:应用运行配置表,用于存储该 Agent 应用实际运行的配置信息(WebApp、开放 API 运行的 Agent 配置)。 2.app_config_version:应用配置历史版本表,该表用于存储每次发布的配置信息历史+草稿信息,通过 config_type 来标识记录是 历史配置 还是 草稿,通过 version 字段来标识不同的版本。 那么不同的操作执行的逻辑如下:1.创建应用:创建应用的同时添加 app_config_version 记录,并在记录中存储 默认草稿配置信息。2.更新应用草稿配置:将数据同步到 app_config_version 的草稿配置记录中。3.发布应用:取出应用的 app_config_version 草稿配置,同步添加到 app_config 中,同时在 app_config_version 中添加一个历史配置信息记录,并更改应用的状态,从而完成发布应用流程。4.更新应用:取出应用的 app_config_version 草稿配置,并同步更新 app_config 中的配置,同时在 app_config_version 中添加一条历史配置信息记录,从而完成应用更新流程。5.取消发布:删除 app_config 中的配置,并更改应用的状态。
02. 应用配置数据结构设计
在 Agent 应用编排页面中,为了便于后续的扩展,对于 启用 类字段,均使用 {"enable": true} 而非单纯 boolean 类型的标识来代替,便于后期扩展某项功能,例如 长期记忆是否启用,该字段配置如下
后期如果想对 长期记忆 的 内容长度 进行配置,只需要在配置中新增字段 length_limit 即可,例如{"long_term_memory": {"enable": true, "length_limit": 2000}}
除了上述的特殊部分,在 草稿配置 以及 历史配置 中,还会存储存储 关联工具列表 、关联知识库列表、关联工作流列表,这些数据涉及到跨表的引用,所以考虑使用 jsonb列表 来存储对应的引用,在每次 Agent 使用之前均会检测对应数据是否存在,并进行更新,例如 { "datasets": [ "1cbb6449-5463-49a4-b0ef-1b94cdf747d7", "f3f28f75-8e60-4eba-b6df-4d1b390bbd89" ] } 基于该思路,对应用配置的数据结构设计如下
json
{
# 模型配置,涵盖提供者、模型名字、模型运行参数信息
"model_config": {
"provider": "openai",
"model": "gpt-4o-mini",
"parameters": {
"temperature": 0.5,
"top_p": 0.5,
"presence_penalty": 0.2,
"frequency_penalty": 0.3,
"max_tokens": 4500
}
},
# 携带上下文轮数
"dialog_round": 3,
# 人设与回复逻辑/预设prompt
"preset_prompt": "你是一个拥有10年经验的翻译官,请帮助用户解决问题。",
# 关联工具列表
"tools": [
{
"type": "builtin_tool",
"provider_id": "google",
"tool_id": "google_serper"
},
{
"type": "api_tool",
"provider_id": "5e7834dc-bbca-4ee5-9591-8f297f5acded",
"tool_id": "e1baf52a-1be2-4b93-ad62-6fad72f1ec37"
}
],
# 关联工作流列表
"workflows": [
"5e7834dc-bbca-4ee5-9591-8f297f5acded",
"9f5e42d4-e184-4e2c-88f2-0ef843749e3f"
],
# 关联知识库列表
"datasets": [
"1cbb6449-5463-49a4-b0ef-1b94cdf747d7",
"f3f28f75-8e60-4eba-b6df-4d1b390bbd89"
],
# 检索配置
"retrieval_config": {
"retrieval_strategy": "semantic",
"k": 5,
"score": 0.5
},
# 长期记忆配置
"long_term_memory": {
"enable": true
},
# 对话开场白
"opening_statement": "嘿!🎉 我是你的好朋友,Gauthmath 导师机器人。",
# 开场白建议问题列表
"opening_questions": [
"你能解释一下二次方程的概念吗?",
"如何解线性方程组?",
"求解x^2-4x+4=0"
],
# 语音转文本
"speech_to_text": {
"enable": true
},
# 文本转语音
"text_to_speech": {
"enable": false,
"voice": "echo",
"auto_play": false
},
# 审核配置
"review_config": {
"enable": true,
"keywords": ["敏感词", "慕课网"],
"inputs_config": {
"enable": true,
"preset_response": "很抱歉,该问题无法回复"
},
"outputs_config": {
"enable": true
}
},
}设计好 应用配置 结构后,即可考虑完成对应 Agent 智能体的配置,实现一个 Agent(或者说一个 Class),通过接收不同的 config 能实现不同的功能,从而完成 可视化编排Agent 的整个流程
总结
- LLMOps应用配置分为草稿配置、当前发布运行配置、历史发布运行配置三类,通过
app_config和app_config_version两张表实现配置的存储、发布、回退等操作。 - 应用配置数据结构设计采用可扩展的字段格式(如
{"enable": true}),跨表引用数据使用jsonb列表存储,涵盖模型、工具、知识库、审核等多维度配置项。 - 基于统一的配置结构可实现Agent的可视化编排,通过接收不同配置实现不同功能,提升Agent的灵活性和可扩展性。