AI Model Hub:一个高效的大模型应用开发集成框架(3)- 存储设计

相关文章:
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值