mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-08-07 11:23:40 +00:00
feat: Support resource for dbgpts (#1527)
This commit is contained in:
parent
474d3166c7
commit
7138ec5166
1
assets/schema/upgrade/v_0_5_6/upgrade_to_v0.5.6.sql
Normal file
1
assets/schema/upgrade/v_0_5_6/upgrade_to_v0.5.6.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
# Nothing to do.
|
395
assets/schema/upgrade/v_0_5_6/v0.5.5.sql
Normal file
395
assets/schema/upgrade/v_0_5_6/v0.5.5.sql
Normal file
@ -0,0 +1,395 @@
|
|||||||
|
-- Full SQL of v0.5.5, please not modify this file(It must be same as the file in the release package)
|
||||||
|
|
||||||
|
CREATE
|
||||||
|
DATABASE IF NOT EXISTS dbgpt;
|
||||||
|
use dbgpt;
|
||||||
|
|
||||||
|
-- For alembic migration tool
|
||||||
|
CREATE TABLE IF NOT EXISTS `alembic_version`
|
||||||
|
(
|
||||||
|
version_num VARCHAR(32) NOT NULL,
|
||||||
|
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
|
||||||
|
) DEFAULT CHARSET=utf8mb4 ;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `knowledge_space`
|
||||||
|
(
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'auto increment id',
|
||||||
|
`name` varchar(100) NOT NULL COMMENT 'knowledge space name',
|
||||||
|
`vector_type` varchar(50) NOT NULL COMMENT 'vector type',
|
||||||
|
`desc` varchar(500) NOT NULL COMMENT 'description',
|
||||||
|
`owner` varchar(100) DEFAULT NULL COMMENT 'owner',
|
||||||
|
`context` TEXT DEFAULT NULL COMMENT 'context argument',
|
||||||
|
`gmt_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'created time',
|
||||||
|
`gmt_modified` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_name` (`name`) COMMENT 'index:idx_name'
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='knowledge space table';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `knowledge_document`
|
||||||
|
(
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'auto increment id',
|
||||||
|
`doc_name` varchar(100) NOT NULL COMMENT 'document path name',
|
||||||
|
`doc_type` varchar(50) NOT NULL COMMENT 'doc type',
|
||||||
|
`space` varchar(50) NOT NULL COMMENT 'knowledge space',
|
||||||
|
`chunk_size` int NOT NULL COMMENT 'chunk size',
|
||||||
|
`last_sync` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'last sync time',
|
||||||
|
`status` varchar(50) NOT NULL COMMENT 'status TODO,RUNNING,FAILED,FINISHED',
|
||||||
|
`content` LONGTEXT NOT NULL COMMENT 'knowledge embedding sync result',
|
||||||
|
`result` TEXT NULL COMMENT 'knowledge content',
|
||||||
|
`vector_ids` LONGTEXT NULL COMMENT 'vector_ids',
|
||||||
|
`summary` LONGTEXT NULL COMMENT 'knowledge summary',
|
||||||
|
`gmt_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'created time',
|
||||||
|
`gmt_modified` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_doc_name` (`doc_name`) COMMENT 'index:idx_doc_name'
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='knowledge document table';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `document_chunk`
|
||||||
|
(
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'auto increment id',
|
||||||
|
`doc_name` varchar(100) NOT NULL COMMENT 'document path name',
|
||||||
|
`doc_type` varchar(50) NOT NULL COMMENT 'doc type',
|
||||||
|
`document_id` int NOT NULL COMMENT 'document parent id',
|
||||||
|
`content` longtext NOT NULL COMMENT 'chunk content',
|
||||||
|
`meta_info` varchar(200) NOT NULL COMMENT 'metadata info',
|
||||||
|
`gmt_created` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'created time',
|
||||||
|
`gmt_modified` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_document_id` (`document_id`) COMMENT 'index:document_id'
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='knowledge document chunk detail';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `connect_config`
|
||||||
|
(
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id',
|
||||||
|
`db_type` varchar(255) NOT NULL COMMENT 'db type',
|
||||||
|
`db_name` varchar(255) NOT NULL COMMENT 'db name',
|
||||||
|
`db_path` varchar(255) DEFAULT NULL COMMENT 'file db path',
|
||||||
|
`db_host` varchar(255) DEFAULT NULL COMMENT 'db connect host(not file db)',
|
||||||
|
`db_port` varchar(255) DEFAULT NULL COMMENT 'db cnnect port(not file db)',
|
||||||
|
`db_user` varchar(255) DEFAULT NULL COMMENT 'db user',
|
||||||
|
`db_pwd` varchar(255) DEFAULT NULL COMMENT 'db password',
|
||||||
|
`comment` text COMMENT 'db comment',
|
||||||
|
`sys_code` varchar(128) DEFAULT NULL COMMENT 'System code',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_db` (`db_name`),
|
||||||
|
KEY `idx_q_db_type` (`db_type`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT 'Connection confi';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `chat_history`
|
||||||
|
(
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id',
|
||||||
|
`conv_uid` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Conversation record unique id',
|
||||||
|
`chat_mode` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Conversation scene mode',
|
||||||
|
`summary` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Conversation record summary',
|
||||||
|
`user_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'interlocutor',
|
||||||
|
`messages` text COLLATE utf8mb4_unicode_ci COMMENT 'Conversation details',
|
||||||
|
`message_ids` text COLLATE utf8mb4_unicode_ci COMMENT 'Message id list, split by comma',
|
||||||
|
`sys_code` varchar(128) DEFAULT NULL COMMENT 'System code',
|
||||||
|
`gmt_created` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'created time',
|
||||||
|
`gmt_modified` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time',
|
||||||
|
UNIQUE KEY `conv_uid` (`conv_uid`),
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT 'Chat history';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `chat_history_message`
|
||||||
|
(
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id',
|
||||||
|
`conv_uid` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Conversation record unique id',
|
||||||
|
`index` int NOT NULL COMMENT 'Message index',
|
||||||
|
`round_index` int NOT NULL COMMENT 'Round of conversation',
|
||||||
|
`message_detail` text COLLATE utf8mb4_unicode_ci COMMENT 'Message details, json format',
|
||||||
|
`gmt_created` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'created time',
|
||||||
|
`gmt_modified` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time',
|
||||||
|
UNIQUE KEY `message_uid_index` (`conv_uid`, `index`),
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT 'Chat history message';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `chat_feed_back`
|
||||||
|
(
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||||
|
`conv_uid` varchar(128) DEFAULT NULL COMMENT 'Conversation ID',
|
||||||
|
`conv_index` int(4) DEFAULT NULL COMMENT 'Round of conversation',
|
||||||
|
`score` int(1) DEFAULT NULL COMMENT 'Score of user',
|
||||||
|
`ques_type` varchar(32) DEFAULT NULL COMMENT 'User question category',
|
||||||
|
`question` longtext DEFAULT NULL COMMENT 'User question',
|
||||||
|
`knowledge_space` varchar(128) DEFAULT NULL COMMENT 'Knowledge space name',
|
||||||
|
`messages` longtext DEFAULT NULL COMMENT 'The details of user feedback',
|
||||||
|
`user_name` varchar(128) DEFAULT NULL COMMENT 'User name',
|
||||||
|
`gmt_created` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'created time',
|
||||||
|
`gmt_modified` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_conv` (`conv_uid`,`conv_index`),
|
||||||
|
KEY `idx_conv` (`conv_uid`,`conv_index`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='User feedback table';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `my_plugin`
|
||||||
|
(
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id',
|
||||||
|
`tenant` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'user tenant',
|
||||||
|
`user_code` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'user code',
|
||||||
|
`user_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'user name',
|
||||||
|
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'plugin name',
|
||||||
|
`file_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'plugin package file name',
|
||||||
|
`type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin type',
|
||||||
|
`version` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin version',
|
||||||
|
`use_count` int DEFAULT NULL COMMENT 'plugin total use count',
|
||||||
|
`succ_count` int DEFAULT NULL COMMENT 'plugin total success count',
|
||||||
|
`sys_code` varchar(128) DEFAULT NULL COMMENT 'System code',
|
||||||
|
`gmt_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'plugin install time',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `name` (`name`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='User plugin table';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `plugin_hub`
|
||||||
|
(
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id',
|
||||||
|
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'plugin name',
|
||||||
|
`description` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'plugin description',
|
||||||
|
`author` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin author',
|
||||||
|
`email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin author email',
|
||||||
|
`type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin type',
|
||||||
|
`version` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin version',
|
||||||
|
`storage_channel` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin storage channel',
|
||||||
|
`storage_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin download url',
|
||||||
|
`download_param` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'plugin download param',
|
||||||
|
`gmt_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'plugin upload time',
|
||||||
|
`installed` int DEFAULT NULL COMMENT 'plugin already installed count',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `name` (`name`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Plugin Hub table';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `prompt_manage`
|
||||||
|
(
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`chat_scene` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Chat scene',
|
||||||
|
`sub_chat_scene` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Sub chat scene',
|
||||||
|
`prompt_type` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Prompt type: common or private',
|
||||||
|
`prompt_name` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'prompt name',
|
||||||
|
`content` longtext COLLATE utf8mb4_unicode_ci COMMENT 'Prompt content',
|
||||||
|
`input_variables` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Prompt input variables(split by comma))',
|
||||||
|
`model` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Prompt model name(we can use different models for different prompt)',
|
||||||
|
`prompt_language` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Prompt language(eg:en, zh-cn)',
|
||||||
|
`prompt_format` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT 'f-string' COMMENT 'Prompt format(eg: f-string, jinja2)',
|
||||||
|
`prompt_desc` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Prompt description',
|
||||||
|
`user_name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'User name',
|
||||||
|
`sys_code` varchar(128) DEFAULT NULL COMMENT 'System code',
|
||||||
|
`gmt_created` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'created time',
|
||||||
|
`gmt_modified` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `prompt_name_uiq` (`prompt_name`, `sys_code`, `prompt_language`, `model`),
|
||||||
|
KEY `gmt_created_idx` (`gmt_created`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Prompt management table';
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `gpts_conversations` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id',
|
||||||
|
`conv_id` varchar(255) NOT NULL COMMENT 'The unique id of the conversation record',
|
||||||
|
`user_goal` text NOT NULL COMMENT 'User''s goals content',
|
||||||
|
`gpts_name` varchar(255) NOT NULL COMMENT 'The gpts name',
|
||||||
|
`state` varchar(255) DEFAULT NULL COMMENT 'The gpts state',
|
||||||
|
`max_auto_reply_round` int(11) NOT NULL COMMENT 'max auto reply round',
|
||||||
|
`auto_reply_count` int(11) NOT NULL COMMENT 'auto reply count',
|
||||||
|
`user_code` varchar(255) DEFAULT NULL COMMENT 'user code',
|
||||||
|
`sys_code` varchar(255) DEFAULT NULL COMMENT 'system app ',
|
||||||
|
`created_at` datetime DEFAULT NULL COMMENT 'create time',
|
||||||
|
`updated_at` datetime DEFAULT NULL COMMENT 'last update time',
|
||||||
|
`team_mode` varchar(255) NULL COMMENT 'agent team work mode',
|
||||||
|
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_gpts_conversations` (`conv_id`),
|
||||||
|
KEY `idx_gpts_name` (`gpts_name`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT="gpt conversations";
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `gpts_instance` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id',
|
||||||
|
`gpts_name` varchar(255) NOT NULL COMMENT 'Current AI assistant name',
|
||||||
|
`gpts_describe` varchar(2255) NOT NULL COMMENT 'Current AI assistant describe',
|
||||||
|
`resource_db` text COMMENT 'List of structured database names contained in the current gpts',
|
||||||
|
`resource_internet` text COMMENT 'Is it possible to retrieve information from the internet',
|
||||||
|
`resource_knowledge` text COMMENT 'List of unstructured database names contained in the current gpts',
|
||||||
|
`gpts_agents` varchar(1000) DEFAULT NULL COMMENT 'List of agents names contained in the current gpts',
|
||||||
|
`gpts_models` varchar(1000) DEFAULT NULL COMMENT 'List of llm model names contained in the current gpts',
|
||||||
|
`language` varchar(100) DEFAULT NULL COMMENT 'gpts language',
|
||||||
|
`user_code` varchar(255) NOT NULL COMMENT 'user code',
|
||||||
|
`sys_code` varchar(255) DEFAULT NULL COMMENT 'system app code',
|
||||||
|
`created_at` datetime DEFAULT NULL COMMENT 'create time',
|
||||||
|
`updated_at` datetime DEFAULT NULL COMMENT 'last update time',
|
||||||
|
`team_mode` varchar(255) NOT NULL COMMENT 'Team work mode',
|
||||||
|
`is_sustainable` tinyint(1) NOT NULL COMMENT 'Applications for sustainable dialogue',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_gpts` (`gpts_name`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT="gpts instance";
|
||||||
|
|
||||||
|
CREATE TABLE `gpts_messages` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id',
|
||||||
|
`conv_id` varchar(255) NOT NULL COMMENT 'The unique id of the conversation record',
|
||||||
|
`sender` varchar(255) NOT NULL COMMENT 'Who speaking in the current conversation turn',
|
||||||
|
`receiver` varchar(255) NOT NULL COMMENT 'Who receive message in the current conversation turn',
|
||||||
|
`model_name` varchar(255) DEFAULT NULL COMMENT 'message generate model',
|
||||||
|
`rounds` int(11) NOT NULL COMMENT 'dialogue turns',
|
||||||
|
`content` text COMMENT 'Content of the speech',
|
||||||
|
`current_goal` text COMMENT 'The target corresponding to the current message',
|
||||||
|
`context` text COMMENT 'Current conversation context',
|
||||||
|
`review_info` text COMMENT 'Current conversation review info',
|
||||||
|
`action_report` text COMMENT 'Current conversation action report',
|
||||||
|
`role` varchar(255) DEFAULT NULL COMMENT 'The role of the current message content',
|
||||||
|
`created_at` datetime DEFAULT NULL COMMENT 'create time',
|
||||||
|
`updated_at` datetime DEFAULT NULL COMMENT 'last update time',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_q_messages` (`conv_id`,`rounds`,`sender`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT="gpts message";
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE `gpts_plans` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id',
|
||||||
|
`conv_id` varchar(255) NOT NULL COMMENT 'The unique id of the conversation record',
|
||||||
|
`sub_task_num` int(11) NOT NULL COMMENT 'Subtask number',
|
||||||
|
`sub_task_title` varchar(255) NOT NULL COMMENT 'subtask title',
|
||||||
|
`sub_task_content` text NOT NULL COMMENT 'subtask content',
|
||||||
|
`sub_task_agent` varchar(255) DEFAULT NULL COMMENT 'Available agents corresponding to subtasks',
|
||||||
|
`resource_name` varchar(255) DEFAULT NULL COMMENT 'resource name',
|
||||||
|
`rely` varchar(255) DEFAULT NULL COMMENT 'Subtask dependencies,like: 1,2,3',
|
||||||
|
`agent_model` varchar(255) DEFAULT NULL COMMENT 'LLM model used by subtask processing agents',
|
||||||
|
`retry_times` int(11) DEFAULT NULL COMMENT 'number of retries',
|
||||||
|
`max_retry_times` int(11) DEFAULT NULL COMMENT 'Maximum number of retries',
|
||||||
|
`state` varchar(255) DEFAULT NULL COMMENT 'subtask status',
|
||||||
|
`result` longtext COMMENT 'subtask result',
|
||||||
|
`created_at` datetime DEFAULT NULL COMMENT 'create time',
|
||||||
|
`updated_at` datetime DEFAULT NULL COMMENT 'last update time',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_sub_task` (`conv_id`,`sub_task_num`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT="gpt plan";
|
||||||
|
|
||||||
|
-- dbgpt.dbgpt_serve_flow definition
|
||||||
|
CREATE TABLE `dbgpt_serve_flow` (
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'Auto increment id',
|
||||||
|
`uid` varchar(128) NOT NULL COMMENT 'Unique id',
|
||||||
|
`dag_id` varchar(128) DEFAULT NULL COMMENT 'DAG id',
|
||||||
|
`name` varchar(128) DEFAULT NULL COMMENT 'Flow name',
|
||||||
|
`flow_data` text COMMENT 'Flow data, JSON format',
|
||||||
|
`user_name` varchar(128) DEFAULT NULL COMMENT 'User name',
|
||||||
|
`sys_code` varchar(128) DEFAULT NULL COMMENT 'System code',
|
||||||
|
`gmt_created` datetime DEFAULT NULL COMMENT 'Record creation time',
|
||||||
|
`gmt_modified` datetime DEFAULT NULL COMMENT 'Record update time',
|
||||||
|
`flow_category` varchar(64) DEFAULT NULL COMMENT 'Flow category',
|
||||||
|
`description` varchar(512) DEFAULT NULL COMMENT 'Flow description',
|
||||||
|
`state` varchar(32) DEFAULT NULL COMMENT 'Flow state',
|
||||||
|
`error_message` varchar(512) NULL comment 'Error message',
|
||||||
|
`source` varchar(64) DEFAULT NULL COMMENT 'Flow source',
|
||||||
|
`source_url` varchar(512) DEFAULT NULL COMMENT 'Flow source url',
|
||||||
|
`version` varchar(32) DEFAULT NULL COMMENT 'Flow version',
|
||||||
|
`label` varchar(128) DEFAULT NULL COMMENT 'Flow label',
|
||||||
|
`editable` int DEFAULT NULL COMMENT 'Editable, 0: editable, 1: not editable',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_uid` (`uid`),
|
||||||
|
KEY `ix_dbgpt_serve_flow_sys_code` (`sys_code`),
|
||||||
|
KEY `ix_dbgpt_serve_flow_uid` (`uid`),
|
||||||
|
KEY `ix_dbgpt_serve_flow_dag_id` (`dag_id`),
|
||||||
|
KEY `ix_dbgpt_serve_flow_user_name` (`user_name`),
|
||||||
|
KEY `ix_dbgpt_serve_flow_name` (`name`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- dbgpt.gpts_app definition
|
||||||
|
CREATE TABLE `gpts_app` (
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id',
|
||||||
|
`app_code` varchar(255) NOT NULL COMMENT 'Current AI assistant code',
|
||||||
|
`app_name` varchar(255) NOT NULL COMMENT 'Current AI assistant name',
|
||||||
|
`app_describe` varchar(2255) NOT NULL COMMENT 'Current AI assistant describe',
|
||||||
|
`language` varchar(100) NOT NULL COMMENT 'gpts language',
|
||||||
|
`team_mode` varchar(255) NOT NULL COMMENT 'Team work mode',
|
||||||
|
`team_context` text COMMENT 'The execution logic and team member content that teams with different working modes rely on',
|
||||||
|
`user_code` varchar(255) DEFAULT NULL COMMENT 'user code',
|
||||||
|
`sys_code` varchar(255) DEFAULT NULL COMMENT 'system app code',
|
||||||
|
`created_at` datetime DEFAULT NULL COMMENT 'create time',
|
||||||
|
`updated_at` datetime DEFAULT NULL COMMENT 'last update time',
|
||||||
|
`icon` varchar(1024) DEFAULT NULL COMMENT 'app icon, url',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_gpts_app` (`app_name`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
CREATE TABLE `gpts_app_collection` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id',
|
||||||
|
`app_code` varchar(255) NOT NULL COMMENT 'Current AI assistant code',
|
||||||
|
`user_code` int(11) NOT NULL COMMENT 'user code',
|
||||||
|
`sys_code` varchar(255) NOT NULL COMMENT 'system app code',
|
||||||
|
`created_at` datetime DEFAULT NULL COMMENT 'create time',
|
||||||
|
`updated_at` datetime DEFAULT NULL COMMENT 'last update time',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_app_code` (`app_code`),
|
||||||
|
KEY `idx_user_code` (`user_code`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT="gpt collections";
|
||||||
|
|
||||||
|
-- dbgpt.gpts_app_detail definition
|
||||||
|
CREATE TABLE `gpts_app_detail` (
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT COMMENT 'autoincrement id',
|
||||||
|
`app_code` varchar(255) NOT NULL COMMENT 'Current AI assistant code',
|
||||||
|
`app_name` varchar(255) NOT NULL COMMENT 'Current AI assistant name',
|
||||||
|
`agent_name` varchar(255) NOT NULL COMMENT ' Agent name',
|
||||||
|
`node_id` varchar(255) NOT NULL COMMENT 'Current AI assistant Agent Node id',
|
||||||
|
`resources` text COMMENT 'Agent bind resource',
|
||||||
|
`prompt_template` text COMMENT 'Agent bind template',
|
||||||
|
`llm_strategy` varchar(25) DEFAULT NULL COMMENT 'Agent use llm strategy',
|
||||||
|
`llm_strategy_value` text COMMENT 'Agent use llm strategy value',
|
||||||
|
`created_at` datetime DEFAULT NULL COMMENT 'create time',
|
||||||
|
`updated_at` datetime DEFAULT NULL COMMENT 'last update time',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_gpts_app_agent_node` (`app_name`,`agent_name`,`node_id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
CREATE
|
||||||
|
DATABASE IF NOT EXISTS EXAMPLE_1;
|
||||||
|
use EXAMPLE_1;
|
||||||
|
CREATE TABLE IF NOT EXISTS `users`
|
||||||
|
(
|
||||||
|
`id` int NOT NULL AUTO_INCREMENT,
|
||||||
|
`username` varchar(50) NOT NULL COMMENT '用户名',
|
||||||
|
`password` varchar(50) NOT NULL COMMENT '密码',
|
||||||
|
`email` varchar(50) NOT NULL COMMENT '邮箱',
|
||||||
|
`phone` varchar(20) DEFAULT NULL COMMENT '电话',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_username` (`username`) COMMENT '索引:按用户名查询'
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='聊天用户表';
|
||||||
|
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_1', 'password_1', 'user_1@example.com', '12345678901');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_2', 'password_2', 'user_2@example.com', '12345678902');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_3', 'password_3', 'user_3@example.com', '12345678903');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_4', 'password_4', 'user_4@example.com', '12345678904');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_5', 'password_5', 'user_5@example.com', '12345678905');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_6', 'password_6', 'user_6@example.com', '12345678906');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_7', 'password_7', 'user_7@example.com', '12345678907');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_8', 'password_8', 'user_8@example.com', '12345678908');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_9', 'password_9', 'user_9@example.com', '12345678909');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_10', 'password_10', 'user_10@example.com', '12345678900');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_11', 'password_11', 'user_11@example.com', '12345678901');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_12', 'password_12', 'user_12@example.com', '12345678902');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_13', 'password_13', 'user_13@example.com', '12345678903');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_14', 'password_14', 'user_14@example.com', '12345678904');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_15', 'password_15', 'user_15@example.com', '12345678905');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_16', 'password_16', 'user_16@example.com', '12345678906');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_17', 'password_17', 'user_17@example.com', '12345678907');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_18', 'password_18', 'user_18@example.com', '12345678908');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_19', 'password_19', 'user_19@example.com', '12345678909');
|
||||||
|
INSERT INTO users (username, password, email, phone)
|
||||||
|
VALUES ('user_20', 'password_20', 'user_20@example.com', '12345678900');
|
@ -125,7 +125,7 @@ class ToolAction(Action[ToolInput]):
|
|||||||
"args": param.args,
|
"args": param.args,
|
||||||
"status": status,
|
"status": status,
|
||||||
"logo": None,
|
"logo": None,
|
||||||
"result": tool_result,
|
"result": str(tool_result),
|
||||||
"err_msg": err_msg,
|
"err_msg": err_msg,
|
||||||
}
|
}
|
||||||
if not self.render_protocol:
|
if not self.render_protocol:
|
||||||
|
@ -99,6 +99,7 @@ class ResourceManager(BaseComponent):
|
|||||||
resource_instance: Optional[Union[Resource, ToolResourceType]] = None,
|
resource_instance: Optional[Union[Resource, ToolResourceType]] = None,
|
||||||
resource_type: Optional[ResourceType] = None,
|
resource_type: Optional[ResourceType] = None,
|
||||||
resource_type_alias: Optional[str] = None,
|
resource_type_alias: Optional[str] = None,
|
||||||
|
ignore_duplicate: bool = False,
|
||||||
):
|
):
|
||||||
"""Register a resource."""
|
"""Register a resource."""
|
||||||
if resource_instance and _is_function_tool(resource_instance):
|
if resource_instance and _is_function_tool(resource_instance):
|
||||||
@ -117,14 +118,21 @@ class ResourceManager(BaseComponent):
|
|||||||
resource_type=resource_type,
|
resource_type=resource_type,
|
||||||
resource_type_alias=resource_type_alias,
|
resource_type_alias=resource_type_alias,
|
||||||
)
|
)
|
||||||
|
if resource.key in self._resources:
|
||||||
|
if ignore_duplicate:
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
raise ValueError(f"Resource {resource.key} already exists.")
|
||||||
self._resources[resource.key] = resource
|
self._resources[resource.key] = resource
|
||||||
self._type_to_resources[resource.type_unique_key].append(resource)
|
self._type_to_resources[resource.type_unique_key].append(resource)
|
||||||
|
|
||||||
def get_supported_resources(
|
def get_supported_resources(
|
||||||
self, version: Optional[str] = None
|
self, version: Optional[str] = None
|
||||||
) -> Dict[str, List[ParameterDescription]]:
|
) -> Dict[str, Union[List[ParameterDescription], List[str]]]:
|
||||||
"""Return the resources."""
|
"""Return the resources."""
|
||||||
results = {}
|
results: Dict[str, Union[List[ParameterDescription], List[str]]] = defaultdict(
|
||||||
|
list
|
||||||
|
)
|
||||||
for key, resource in self._resources.items():
|
for key, resource in self._resources.items():
|
||||||
parameter_class = resource.get_parameter_class()
|
parameter_class = resource.get_parameter_class()
|
||||||
resource_type = resource.type_unique_key
|
resource_type = resource.type_unique_key
|
||||||
@ -138,12 +146,14 @@ class ResourceManager(BaseComponent):
|
|||||||
and isinstance(configs[0], ParameterDescription)
|
and isinstance(configs[0], ParameterDescription)
|
||||||
):
|
):
|
||||||
# v1, not compatible with class
|
# v1, not compatible with class
|
||||||
configs = []
|
set_configs = set(results[resource_type])
|
||||||
if not resource.is_class:
|
if not resource.is_class:
|
||||||
for r in self._type_to_resources[resource_type]:
|
for r in self._type_to_resources[resource_type]:
|
||||||
if not r.is_class:
|
if not r.is_class:
|
||||||
configs.append(r.resource_instance.name) # type: ignore
|
set_configs.add(r.resource_instance.name) # type: ignore
|
||||||
|
configs = list(set_configs)
|
||||||
results[resource_type] = configs
|
results[resource_type] = configs
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
def build_resource_by_type(
|
def build_resource_by_type(
|
||||||
|
@ -18,8 +18,8 @@ DEFAULT_REPO_MAP = {
|
|||||||
"fangyinc/dbgpts": "https://github.com/fangyinc/dbgpts.git",
|
"fangyinc/dbgpts": "https://github.com/fangyinc/dbgpts.git",
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFAULT_PACKAGES = ["agents", "apps", "operators", "workflow"]
|
DEFAULT_PACKAGES = ["agents", "apps", "operators", "workflow", "resources"]
|
||||||
DEFAULT_PACKAGE_TYPES = ["agent", "app", "operator", "flow"]
|
DEFAULT_PACKAGE_TYPES = ["agent", "app", "operator", "flow", "resource"]
|
||||||
INSTALL_METADATA_FILE = "install_metadata.toml"
|
INSTALL_METADATA_FILE = "install_metadata.toml"
|
||||||
DBGPTS_METADATA_FILE = "dbgpts.toml"
|
DBGPTS_METADATA_FILE = "dbgpts.toml"
|
||||||
|
|
||||||
@ -28,6 +28,7 @@ TYPE_TO_PACKAGE = {
|
|||||||
"app": "apps",
|
"app": "apps",
|
||||||
"operator": "operators",
|
"operator": "operators",
|
||||||
"flow": "workflow",
|
"flow": "workflow",
|
||||||
|
"resource": "resources",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ import logging
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Dict, List, Optional, Type, TypeVar, cast
|
from typing import Any, Callable, Dict, List, Optional, Tuple, Type, TypeVar, cast
|
||||||
|
|
||||||
import schedule
|
import schedule
|
||||||
import tomlkit
|
import tomlkit
|
||||||
@ -73,8 +73,11 @@ class BasePackage(BaseModel):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def load_module_class(
|
def load_module_class(
|
||||||
cls, values: Dict[str, Any], expected_cls: Type[T]
|
cls,
|
||||||
) -> List[Type[T]]:
|
values: Dict[str, Any],
|
||||||
|
expected_cls: Type[T],
|
||||||
|
predicates: Optional[List[Callable[..., bool]]] = None,
|
||||||
|
) -> Tuple[List[Type[T]], List[Any]]:
|
||||||
import importlib.resources as pkg_resources
|
import importlib.resources as pkg_resources
|
||||||
|
|
||||||
from dbgpt.core.awel.dag.loader import _load_modules_from_file
|
from dbgpt.core.awel.dag.loader import _load_modules_from_file
|
||||||
@ -90,12 +93,15 @@ class BasePackage(BaseModel):
|
|||||||
with pkg_resources.path(name, "__init__.py") as path:
|
with pkg_resources.path(name, "__init__.py") as path:
|
||||||
mods = _load_modules_from_file(str(path), name, show_log=False)
|
mods = _load_modules_from_file(str(path), name, show_log=False)
|
||||||
all_cls = [_get_classes_from_module(m) for m in mods]
|
all_cls = [_get_classes_from_module(m) for m in mods]
|
||||||
|
all_predicate_results = []
|
||||||
|
for m in mods:
|
||||||
|
all_predicate_results.extend(_get_from_module(m, predicates))
|
||||||
module_cls = []
|
module_cls = []
|
||||||
for list_cls in all_cls:
|
for list_cls in all_cls:
|
||||||
for c in list_cls:
|
for c in list_cls:
|
||||||
if issubclass(c, expected_cls):
|
if issubclass(c, expected_cls):
|
||||||
module_cls.append(c)
|
module_cls.append(c)
|
||||||
return module_cls
|
return module_cls, all_predicate_results
|
||||||
|
|
||||||
|
|
||||||
class FlowPackage(BasePackage):
|
class FlowPackage(BasePackage):
|
||||||
@ -138,7 +144,7 @@ class OperatorPackage(BasePackage):
|
|||||||
def build_from(cls, values: Dict[str, Any], ext_dict: Dict[str, Any]):
|
def build_from(cls, values: Dict[str, Any], ext_dict: Dict[str, Any]):
|
||||||
from dbgpt.core.awel import BaseOperator
|
from dbgpt.core.awel import BaseOperator
|
||||||
|
|
||||||
values["operators"] = cls.load_module_class(values, BaseOperator)
|
values["operators"], _ = cls.load_module_class(values, BaseOperator)
|
||||||
return cls(**values)
|
return cls(**values)
|
||||||
|
|
||||||
|
|
||||||
@ -153,7 +159,47 @@ class AgentPackage(BasePackage):
|
|||||||
def build_from(cls, values: Dict[str, Any], ext_dict: Dict[str, Any]):
|
def build_from(cls, values: Dict[str, Any], ext_dict: Dict[str, Any]):
|
||||||
from dbgpt.agent import ConversableAgent
|
from dbgpt.agent import ConversableAgent
|
||||||
|
|
||||||
values["agents"] = cls.load_module_class(values, ConversableAgent)
|
values["agents"], _ = cls.load_module_class(values, ConversableAgent)
|
||||||
|
return cls(**values)
|
||||||
|
|
||||||
|
|
||||||
|
class ResourcePackage(BasePackage):
|
||||||
|
package_type: str = "resource"
|
||||||
|
|
||||||
|
resources: List[type] = Field(
|
||||||
|
default_factory=list, description="The resources of the package"
|
||||||
|
)
|
||||||
|
resource_instances: List[Any] = Field(
|
||||||
|
default_factory=list, description="The resource instances of the package"
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def build_from(cls, values: Dict[str, Any], ext_dict: Dict[str, Any]):
|
||||||
|
from dbgpt.agent.resource import Resource
|
||||||
|
from dbgpt.agent.resource.tool.pack import _is_function_tool
|
||||||
|
|
||||||
|
def _predicate(obj):
|
||||||
|
if not obj:
|
||||||
|
return False
|
||||||
|
elif _is_function_tool(obj):
|
||||||
|
return True
|
||||||
|
elif isinstance(obj, Resource):
|
||||||
|
return True
|
||||||
|
elif isinstance(obj, type) and issubclass(obj, Resource):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
_, predicted_cls = cls.load_module_class(values, Resource, [_predicate])
|
||||||
|
resource_instances = []
|
||||||
|
resources = []
|
||||||
|
for o in predicted_cls:
|
||||||
|
if _is_function_tool(o) or isinstance(o, Resource):
|
||||||
|
resource_instances.append(o)
|
||||||
|
elif isinstance(o, type) and issubclass(o, Resource):
|
||||||
|
resources.append(o)
|
||||||
|
values["resource_instances"] = resource_instances
|
||||||
|
values["resources"] = resources
|
||||||
return cls(**values)
|
return cls(**values)
|
||||||
|
|
||||||
|
|
||||||
@ -173,6 +219,17 @@ def _get_classes_from_module(module):
|
|||||||
return classes
|
return classes
|
||||||
|
|
||||||
|
|
||||||
|
def _get_from_module(module, predicates: Optional[List[str]] = None):
|
||||||
|
if not predicates:
|
||||||
|
return []
|
||||||
|
results = []
|
||||||
|
for predicate in predicates:
|
||||||
|
for name, obj in inspect.getmembers(module, predicate):
|
||||||
|
if obj.__module__ == module.__name__:
|
||||||
|
results.append(obj)
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
def _parse_package_metadata(package: InstalledPackage) -> BasePackage:
|
def _parse_package_metadata(package: InstalledPackage) -> BasePackage:
|
||||||
with open(
|
with open(
|
||||||
Path(package.root) / DBGPTS_METADATA_FILE, mode="r+", encoding="utf-8"
|
Path(package.root) / DBGPTS_METADATA_FILE, mode="r+", encoding="utf-8"
|
||||||
@ -190,6 +247,9 @@ def _parse_package_metadata(package: InstalledPackage) -> BasePackage:
|
|||||||
elif key == "agent":
|
elif key == "agent":
|
||||||
pkg_dict = {k: v for k, v in value.items()}
|
pkg_dict = {k: v for k, v in value.items()}
|
||||||
pkg_dict["package_type"] = "agent"
|
pkg_dict["package_type"] = "agent"
|
||||||
|
elif key == "resource":
|
||||||
|
pkg_dict = {k: v for k, v in value.items()}
|
||||||
|
pkg_dict["package_type"] = "resource"
|
||||||
else:
|
else:
|
||||||
ext_metadata[key] = value
|
ext_metadata[key] = value
|
||||||
pkg_dict["root"] = package.root
|
pkg_dict["root"] = package.root
|
||||||
@ -201,6 +261,8 @@ def _parse_package_metadata(package: InstalledPackage) -> BasePackage:
|
|||||||
return OperatorPackage.build_from(pkg_dict, ext_metadata)
|
return OperatorPackage.build_from(pkg_dict, ext_metadata)
|
||||||
elif pkg_dict["package_type"] == "agent":
|
elif pkg_dict["package_type"] == "agent":
|
||||||
return AgentPackage.build_from(pkg_dict, ext_metadata)
|
return AgentPackage.build_from(pkg_dict, ext_metadata)
|
||||||
|
elif pkg_dict["package_type"] == "resource":
|
||||||
|
return ResourcePackage.build_from(pkg_dict, ext_metadata)
|
||||||
else:
|
else:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
f"Unsupported package package_type: {pkg_dict['package_type']}"
|
f"Unsupported package package_type: {pkg_dict['package_type']}"
|
||||||
@ -316,3 +378,20 @@ class DBGPTsLoader(BaseComponent):
|
|||||||
agent_manager.register_agent(agent_cls, ignore_duplicate=True)
|
agent_manager.register_agent(agent_cls, ignore_duplicate=True)
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
logger.warning(f"Register agent {agent_cls} error: {e}")
|
logger.warning(f"Register agent {agent_cls} error: {e}")
|
||||||
|
elif package.package_type == "resource":
|
||||||
|
from dbgpt.agent.resource import Resource
|
||||||
|
from dbgpt.agent.resource.manage import get_resource_manager
|
||||||
|
|
||||||
|
pkg = cast(ResourcePackage, package)
|
||||||
|
rm = get_resource_manager(self._system_app)
|
||||||
|
for inst in pkg.resource_instances:
|
||||||
|
try:
|
||||||
|
rm.register_resource(resource_instance=inst, ignore_duplicate=True)
|
||||||
|
except ValueError as e:
|
||||||
|
logger.warning(f"Register resource {inst} error: {e}")
|
||||||
|
for res in pkg.resources:
|
||||||
|
try:
|
||||||
|
if issubclass(res, Resource):
|
||||||
|
rm.register_resource(res, ignore_duplicate=True)
|
||||||
|
except ValueError as e:
|
||||||
|
logger.warning(f"Register resource {res} error: {e}")
|
||||||
|
@ -59,6 +59,15 @@ def create_template(
|
|||||||
definition_type,
|
definition_type,
|
||||||
working_directory,
|
working_directory,
|
||||||
)
|
)
|
||||||
|
elif dbgpts_type == "resource":
|
||||||
|
_create_resource_template(
|
||||||
|
name,
|
||||||
|
mod_name,
|
||||||
|
dbgpts_type,
|
||||||
|
base_metadata,
|
||||||
|
definition_type,
|
||||||
|
working_directory,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Invalid dbgpts type: {dbgpts_type}")
|
raise ValueError(f"Invalid dbgpts type: {dbgpts_type}")
|
||||||
|
|
||||||
@ -145,6 +154,31 @@ def _create_agent_template(
|
|||||||
_write_manifest_file(working_directory, name, mod_name)
|
_write_manifest_file(working_directory, name, mod_name)
|
||||||
|
|
||||||
|
|
||||||
|
def _create_resource_template(
|
||||||
|
name: str,
|
||||||
|
mod_name: str,
|
||||||
|
dbgpts_type: str,
|
||||||
|
base_metadata: dict,
|
||||||
|
definition_type: str,
|
||||||
|
working_directory: str,
|
||||||
|
):
|
||||||
|
json_dict = {
|
||||||
|
"resource": base_metadata,
|
||||||
|
"python_config": {},
|
||||||
|
"json_config": {},
|
||||||
|
}
|
||||||
|
if definition_type != "python":
|
||||||
|
raise click.ClickException(
|
||||||
|
f"Unsupported definition type: {definition_type} for dbgpts type: "
|
||||||
|
f"{dbgpts_type}"
|
||||||
|
)
|
||||||
|
|
||||||
|
_create_poetry_project(working_directory, name)
|
||||||
|
_write_dbgpts_toml(working_directory, name, json_dict)
|
||||||
|
_write_resource_init_file(working_directory, name, mod_name)
|
||||||
|
_write_manifest_file(working_directory, name, mod_name)
|
||||||
|
|
||||||
|
|
||||||
def _create_poetry_project(working_directory: str, name: str):
|
def _create_poetry_project(working_directory: str, name: str):
|
||||||
"""Create a new poetry project"""
|
"""Create a new poetry project"""
|
||||||
|
|
||||||
@ -365,3 +399,25 @@ if __name__ == "__main__":
|
|||||||
"""
|
"""
|
||||||
with open(init_file, "w") as f:
|
with open(init_file, "w") as f:
|
||||||
f.write(f'"""{name} agent package."""\n{content}')
|
f.write(f'"""{name} agent package."""\n{content}')
|
||||||
|
|
||||||
|
|
||||||
|
def _write_resource_init_file(working_directory: str, name: str, mod_name: str):
|
||||||
|
"""Write the resource __init__.py file"""
|
||||||
|
|
||||||
|
init_file = Path(working_directory) / name / mod_name / "__init__.py"
|
||||||
|
content = """\"\"\"A custom resource module that provides a simple tool to send GET requests.\"\"\"
|
||||||
|
|
||||||
|
from dbgpt.agent.resource import tool
|
||||||
|
|
||||||
|
|
||||||
|
@tool
|
||||||
|
def simple_send_requests_get(url: str):
|
||||||
|
\"\"\"Send a GET request to the specified URL and return the text content.\"\"\"
|
||||||
|
import requests
|
||||||
|
|
||||||
|
response = requests.get(url)
|
||||||
|
return response.text
|
||||||
|
|
||||||
|
"""
|
||||||
|
with open(init_file, "w") as f:
|
||||||
|
f.write(content)
|
||||||
|
Loading…
Reference in New Issue
Block a user