mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-08-23 02:27:55 +00:00
feat(editor): ChatExcel
🔥ChatExcel Mode Operation Manual
This commit is contained in:
parent
ca0780b594
commit
248c1369b5
@ -1,4 +1,5 @@
|
|||||||
import threading
|
import threading
|
||||||
|
import asyncio
|
||||||
|
|
||||||
from pilot.configs.config import Config
|
from pilot.configs.config import Config
|
||||||
from pilot.connections.manages.connect_storage_duckdb import DuckdbConnectConfig
|
from pilot.connections.manages.connect_storage_duckdb import DuckdbConnectConfig
|
||||||
@ -138,6 +139,27 @@ class ConnectManager:
|
|||||||
host=db_host, port=db_port, user=db_user, pwd=db_pwd, db_name=db_name
|
host=db_host, port=db_port, user=db_user, pwd=db_pwd, db_name=db_name
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_connect(self, db_info: DBConfig):
|
||||||
|
try:
|
||||||
|
db_type = DBType.of_db_type(db_info.db_type)
|
||||||
|
connect_instance = self.get_cls_by_dbtype(db_type.value())
|
||||||
|
if db_type.is_file_db():
|
||||||
|
db_path = db_info.db_path
|
||||||
|
return connect_instance.from_file_path(db_path)
|
||||||
|
else:
|
||||||
|
db_name = db_info.db_name
|
||||||
|
db_host = db_info.db_host
|
||||||
|
db_port = db_info.db_port
|
||||||
|
db_user = db_info.db_user
|
||||||
|
db_pwd = db_info.db_pwd
|
||||||
|
return connect_instance.from_uri_db(
|
||||||
|
host=db_host, port=db_port, user=db_user, pwd=db_pwd, db_name=db_name
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
print(f'{db_info.db_name} Test connect Failure!{str(e)}')
|
||||||
|
raise ValueError(f'{db_info.db_name} Test connect Failure!{str(e)}')
|
||||||
|
|
||||||
|
|
||||||
def get_db_list(self):
|
def get_db_list(self):
|
||||||
return self.storage.get_db_list()
|
return self.storage.get_db_list()
|
||||||
|
|
||||||
@ -159,6 +181,10 @@ class ConnectManager:
|
|||||||
db_info.comment,
|
db_info.comment,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def async_db_summary_embedding(self, db_name, db_type):
|
||||||
|
# 在这里执行需要异步运行的代码
|
||||||
|
self.db_summary_client.db_summary_embedding(db_name, db_type)
|
||||||
|
|
||||||
def add_db(self, db_info: DBConfig):
|
def add_db(self, db_info: DBConfig):
|
||||||
print(f"add_db:{db_info.__dict__}")
|
print(f"add_db:{db_info.__dict__}")
|
||||||
try:
|
try:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
from urllib.parse import quote
|
||||||
import warnings
|
import warnings
|
||||||
import sqlparse
|
import sqlparse
|
||||||
import regex as re
|
import regex as re
|
||||||
@ -95,9 +95,9 @@ class RDBMSDatabase(BaseConnect):
|
|||||||
db_url: str = (
|
db_url: str = (
|
||||||
cls.driver
|
cls.driver
|
||||||
+ "://"
|
+ "://"
|
||||||
+ user
|
+ quote(user)
|
||||||
+ ":"
|
+ ":"
|
||||||
+ pwd
|
+ quote(pwd)
|
||||||
+ "@"
|
+ "@"
|
||||||
+ host
|
+ host
|
||||||
+ ":"
|
+ ":"
|
||||||
@ -493,9 +493,13 @@ class RDBMSDatabase(BaseConnect):
|
|||||||
|
|
||||||
def get_users(self):
|
def get_users(self):
|
||||||
"""Get user info."""
|
"""Get user info."""
|
||||||
|
try:
|
||||||
cursor = self.session.execute(text(f"SELECT user, host FROM mysql.user"))
|
cursor = self.session.execute(text(f"SELECT user, host FROM mysql.user"))
|
||||||
users = cursor.fetchall()
|
users = cursor.fetchall()
|
||||||
return [(user[0], user[1]) for user in users]
|
return [(user[0], user[1]) for user in users]
|
||||||
|
except Exception as e:
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
def get_table_comments(self, db_name):
|
def get_table_comments(self, db_name):
|
||||||
cursor = self.session.execute(
|
cursor = self.session.execute(
|
||||||
|
@ -38,6 +38,7 @@ from pilot.common.schema import DBType
|
|||||||
from pilot.memory.chat_history.duckdb_history import DuckdbHistoryMemory
|
from pilot.memory.chat_history.duckdb_history import DuckdbHistoryMemory
|
||||||
from pilot.scene.message import OnceConversation
|
from pilot.scene.message import OnceConversation
|
||||||
from pilot.configs.model_config import LLM_MODEL_CONFIG, KNOWLEDGE_UPLOAD_ROOT_PATH
|
from pilot.configs.model_config import LLM_MODEL_CONFIG, KNOWLEDGE_UPLOAD_ROOT_PATH
|
||||||
|
from pilot.summary.db_summary_client import DBSummaryClient
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
CFG = Config()
|
CFG = Config()
|
||||||
@ -108,9 +109,29 @@ async def db_connect_delete(db_name: str = None):
|
|||||||
return Result.succ(CFG.LOCAL_DB_MANAGE.delete_db(db_name))
|
return Result.succ(CFG.LOCAL_DB_MANAGE.delete_db(db_name))
|
||||||
|
|
||||||
|
|
||||||
|
async def async_db_summary_embedding(db_name, db_type):
|
||||||
|
# 在这里执行需要异步运行的代码
|
||||||
|
db_summary_client = DBSummaryClient()
|
||||||
|
db_summary_client.db_summary_embedding(db_name, db_type)
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/v1/chat/db/test/connect", response_model=Result[bool])
|
||||||
|
async def test_connect(db_config: DBConfig = Body()):
|
||||||
|
try:
|
||||||
|
CFG.LOCAL_DB_MANAGE.test_connect(db_config)
|
||||||
|
return Result.succ(True)
|
||||||
|
except Exception as e:
|
||||||
|
return Result.faild(code="E1001", msg=str(e))
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/v1/chat/db/summary", response_model=Result[bool])
|
||||||
|
async def db_summary(db_name: str, db_type: str):
|
||||||
|
async_db_summary_embedding(db_name, db_type)
|
||||||
|
return Result.succ(True)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/v1/chat/db/support/type", response_model=Result[DbTypeInfo])
|
@router.get("/v1/chat/db/support/type", response_model=Result[DbTypeInfo])
|
||||||
async def db_support_types():
|
async def db_support_types():
|
||||||
|
|
||||||
support_types = CFG.LOCAL_DB_MANAGE.get_all_completed_types()
|
support_types = CFG.LOCAL_DB_MANAGE.get_all_completed_types()
|
||||||
db_type_infos = []
|
db_type_infos = []
|
||||||
for type in support_types:
|
for type in support_types:
|
||||||
@ -229,6 +250,7 @@ async def dialogue_delete(con_uid: str):
|
|||||||
history_mem.delete()
|
history_mem.delete()
|
||||||
return Result.succ(None)
|
return Result.succ(None)
|
||||||
|
|
||||||
|
|
||||||
def get_hist_messages(conv_uid: str):
|
def get_hist_messages(conv_uid: str):
|
||||||
message_vos: List[MessageVo] = []
|
message_vos: List[MessageVo] = []
|
||||||
history_mem = DuckdbHistoryMemory(conv_uid)
|
history_mem = DuckdbHistoryMemory(conv_uid)
|
||||||
|
Loading…
Reference in New Issue
Block a user