相关文章:
AI Model Hub:一个高效的大模型应用开发集成框架(1)
AI Model Hub:一个高效的大模型应用开发集成框架(2)- 对接本地llama3
ai-model-hub github:https://github.com/flower-trees/ai-model-hub
框架中存储的作用
框架添加存储主要作用是:
- 存储Agent配置,框架可以通过前端传递的Agent信息,在DB中获取具体的Agent配置,包括模型提供厂商、及具体模型等,当然你可以在框架中扩展你需要的配置信息,如:Agent System Promet、问候语等。
- 存储聊天上下文,可以在每次回答后存储具体的问题和答案内容,并在下次提问是自动构建到模型请求中。
设计思路
框架实现最简设计,共4张表,如下图:
- Agent表,存储Agent配置,具体配置使用JSON字段,便于扩展。
- Session表,存储一次对话信息,包含多次对问答,关联一条Agent记录。
- Chat表,存储一次问答,包括问题及答案,关联一条Session记录。
- Chat_His表,存储一次问答历史,用于重答时记录问题答案历史。
注:用户字段框架默认为1,根据实际情况扩展
具体表设计
create table agent_info
(
id bigint unsigned auto_increment comment '序号' primary key,
agent_id varchar(255) not null comment 'Agent ID',
user_id bigint unsigned not null comment '用户ID',
name varchar(255) not null comment '名称',
details varchar(512) not null comment '描述',
configs text null comment '配置信息(JSON)',
status int default 0 null comment '0.正常 1.删除',
created timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
updated timestamp default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
check (json_valid(`configs`)),
unique key `idx_agent_id` (`agent_id`)
) comment '智能体信息' collate = utf8mb4_bin;
create table session_info
(
id bigint unsigned auto_increment primary key,
session_id varchar(127) not null comment '会话ID',
user_id bigint unsigned not null comment '用户ID',
session_name varchar(4000) null comment '名称',
status int default 0 null comment '0.正常 1.删除',
created timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
updated timestamp default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
agent_id varchar(10) default '001' not null comment 'Agent ID',
unique key `idx_session_id` (`session_id`)
) comment '对话信息' collate = utf8mb4_bin;
create table chat_info
(
id bigint unsigned auto_increment primary key,
session_id varchar(127) not null comment '会话ID',
chat_id varchar(127) not null comment '对话ID',
user_id bigint unsigned not null comment '用户ID',
question text null comment '问题',
answer mediumtext null comment '答案',
status int default 0 null comment '0.正常 1.删除',
updated timestamp null comment '创建时间',
created timestamp default CURRENT_TIMESTAMP not null comment '更新时间',
unique key `idx_chat_id` (`chat_id`),
index `idx_session_chat_id` (`session_id`, `chat_id`)
) comment '一条对话信息' collate = utf8mb4_bin;
create table chat_his_info
(
id bigint unsigned auto_increment primary key,
session_id varchar(127) not null comment '会话ID',
chat_id varchar(127) not null comment '对话ID',
chat_his_id varchar(127) not null comment '对话历史ID',
user_id bigint unsigned not null comment '用户ID',
question text null comment '问题',
answer mediumtext null comment '答案',
status int default 0 null comment '0.正常 1.删除',
updated timestamp null comment '创建时间',
created timestamp default CURRENT_TIMESTAMP not null comment '更新时间',
unique key `idx_chat_his_id` (`chat_his_id`),
index `idx_session_chat_id` (`session_id`, `chat_id`)
) comment '一条对话重复提问历史' collate = utf8mb4_bin;
初始化Agent配置
INSERT INTO ai_model_hub.agent_info (agent_id, user_id, name, details, configs) VALUES ('1', 1, 'chatgpt', 'chatgpt demo', '{"vendor":"chatgpt","model":"gpt-3.5-turbo"}');
INSERT INTO ai_model_hub.agent_info (agent_id, user_id, name, details, configs) VALUES ('2', 1, 'doubao', 'doubao demo', '{"vendor":"doubao","model":"ep-20240611104225-2d4ww"}');
INSERT INTO ai_model_hub.agent_info (agent_id, user_id, name, details, configs) VALUES ('3', 1, 'aliyun', 'aliyun demo', '{"vendor":"aliyun","model":"qwen-max"}');
INSERT INTO ai_model_hub.agent_info (agent_id, user_id, name, details, configs) VALUES ('4', 1, 'moonshot', 'moonshot demo', '{"vendor":"moonshot","model":"moonshot-v1-8k"}');
INSERT INTO ai_model_hub.agent_info (agent_id, user_id, name, details, configs) VALUES ('5', 1, 'ollama', 'ollama demo', '{"vendor":"ollama","model":"llama3:8b"});
框架中的DOME应用
在SimpleContextProcess中添加:
- executeUp 中添加Agent配置查询、上下文查询和构建。
- executeDown 中添加聊天记录的保存过程。
ai-model-hub/
│
├── src/
│ └── main/
│ ├── java/
│ │ └── org/
│ │ └── salt/
│ │ └── ai/
│ │ └── hub/
│ │ │ ├── process/
│ │ │ │ └── SimpleContextProcess.java