mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-08-19 08:47:32 +00:00
commit
682b6d0b04
@ -210,18 +210,22 @@ def response_bar_chart(speak: str, df: DataFrame) -> str:
|
||||
data=df, x=x, y=sub_y_column, hue=hue, palette="Set2", ax=ax
|
||||
)
|
||||
else:
|
||||
if len(num_colmns) >= 3:
|
||||
can_use_columns = num_colmns[:3]
|
||||
if len(num_colmns) > 5:
|
||||
can_use_columns = num_colmns[:5]
|
||||
else:
|
||||
can_use_columns = num_colmns
|
||||
sns.barplot(
|
||||
data=df, x=x, y=y, hue=can_use_columns[0], palette="Set2", ax=ax
|
||||
)
|
||||
can_use_columns.append(y)
|
||||
|
||||
for sub_y_column in can_use_columns[1:]:
|
||||
sns.barplot(
|
||||
data=df, x=x, y=sub_y_column, hue=hue, palette="Set2", ax=ax
|
||||
)
|
||||
df_melted = pd.melt(
|
||||
df,
|
||||
id_vars=x,
|
||||
value_vars=can_use_columns,
|
||||
var_name="line",
|
||||
value_name="Value",
|
||||
)
|
||||
sns.barplot(
|
||||
data=df_melted, x=x, y="Value", hue="line", palette="Set2", ax=ax
|
||||
)
|
||||
else:
|
||||
sns.barplot(data=df, x=x, y=y, hue=hue, palette="Set2", ax=ax)
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import threading
|
||||
import asyncio
|
||||
|
||||
from pilot.configs.config import Config
|
||||
from pilot.connections.manages.connect_storage_duckdb import DuckdbConnectConfig
|
||||
@ -138,6 +139,30 @@ class ConnectManager:
|
||||
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):
|
||||
return self.storage.get_db_list()
|
||||
|
||||
@ -159,6 +184,10 @@ class ConnectManager:
|
||||
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):
|
||||
print(f"add_db:{db_info.__dict__}")
|
||||
try:
|
||||
|
@ -1,5 +1,5 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from urllib.parse import quote
|
||||
import warnings
|
||||
import sqlparse
|
||||
import regex as re
|
||||
@ -95,9 +95,9 @@ class RDBMSDatabase(BaseConnect):
|
||||
db_url: str = (
|
||||
cls.driver
|
||||
+ "://"
|
||||
+ user
|
||||
+ quote(user)
|
||||
+ ":"
|
||||
+ pwd
|
||||
+ quote(pwd)
|
||||
+ "@"
|
||||
+ host
|
||||
+ ":"
|
||||
@ -494,9 +494,12 @@ class RDBMSDatabase(BaseConnect):
|
||||
|
||||
def get_users(self):
|
||||
"""Get user info."""
|
||||
cursor = self.session.execute(text(f"SELECT user, host FROM mysql.user"))
|
||||
users = cursor.fetchall()
|
||||
return [(user[0], user[1]) for user in users]
|
||||
try:
|
||||
cursor = self.session.execute(text(f"SELECT user, host FROM mysql.user"))
|
||||
users = cursor.fetchall()
|
||||
return [(user[0], user[1]) for user in users]
|
||||
except Exception as e:
|
||||
return []
|
||||
|
||||
def get_table_comments(self, db_name):
|
||||
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.scene.message import OnceConversation
|
||||
from pilot.configs.model_config import LLM_MODEL_CONFIG, KNOWLEDGE_UPLOAD_ROOT_PATH
|
||||
from pilot.summary.db_summary_client import DBSummaryClient
|
||||
|
||||
router = APIRouter()
|
||||
CFG = Config()
|
||||
@ -108,6 +109,27 @@ async def db_connect_delete(db_name: str = None):
|
||||
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])
|
||||
async def db_support_types():
|
||||
support_types = CFG.LOCAL_DB_MANAGE.get_all_completed_types()
|
||||
|
@ -178,7 +178,7 @@ class BaseChat(ABC):
|
||||
|
||||
async def nostream_call(self):
|
||||
payload = self.__call_base()
|
||||
logger.info(f"Requert: \n{payload}")
|
||||
logger.info(f"Request: \n{payload}")
|
||||
ai_response_text = ""
|
||||
try:
|
||||
from pilot.model.worker.manager import worker_manager
|
||||
@ -236,7 +236,10 @@ class BaseChat(ABC):
|
||||
"_blocking_nostream_call is only temporarily used in webserver and will be deleted soon, please use nostream_call to replace it for higher performance"
|
||||
)
|
||||
loop = get_or_create_event_loop()
|
||||
return loop.run_until_complete(self.nostream_call())
|
||||
try:
|
||||
return loop.run_until_complete(self.nostream_call())
|
||||
finally:
|
||||
loop.close()
|
||||
|
||||
def call(self):
|
||||
if self.prompt_template.stream_out:
|
||||
|
@ -1,6 +1,6 @@
|
||||
import json
|
||||
import os
|
||||
|
||||
import asyncio
|
||||
|
||||
from typing import List, Any, Dict
|
||||
from pilot.scene.base_message import (
|
||||
@ -104,4 +104,7 @@ class ChatExcel(BaseChat):
|
||||
"speak": prompt_response.thoughts,
|
||||
"df": self.excel_reader.get_df_by_sql_ex(prompt_response.sql),
|
||||
}
|
||||
return CFG.command_disply.call(prompt_response.display, **param)
|
||||
if CFG.command_disply.get_command(prompt_response.display):
|
||||
return CFG.command_disply.call(prompt_response.display, **param)
|
||||
else:
|
||||
return CFG.command_disply.call("response_table", **param)
|
||||
|
@ -16,7 +16,7 @@ Please use the data structure information of the above historical dialogue, make
|
||||
According to the user goal: {user_input},give the correct duckdb SQL for data analysis.
|
||||
Use the table name: {table_name}
|
||||
|
||||
According to the analysis SQL obtained by the user's goal, select the best one from the following display forms, if it cannot be determined, use Text as the display.
|
||||
According to the analysis SQL obtained by the user's goal, select the best one from the following display forms, if it cannot be determined, use Text as the display,Just need to return the type name into the result.
|
||||
Display type:
|
||||
{disply_type}
|
||||
|
||||
@ -31,7 +31,7 @@ _DEFAULT_TEMPLATE_ZH = """
|
||||
请确保不要使用不在数据结构中的列名。
|
||||
SQL中需要使用的表名是: {table_name}
|
||||
|
||||
根据用户目标得到的分析SQL,请从以下显示类型中选择最合适的一种用来展示结果数据,如果无法确定,则使用'Text'作为显示。
|
||||
根据用户目标得到的分析SQL,请从以下显示类型中选择最合适的一种用来展示结果数据,如果无法确定,则使用'Text'作为显示, 只需要将类型名称返回到结果中。
|
||||
显示类型如下:
|
||||
{disply_type}
|
||||
|
||||
|
@ -27,33 +27,39 @@ class LearningExcelOutputParser(BaseOutputParser):
|
||||
def parse_prompt_response(self, model_out_text):
|
||||
clean_str = super().parse_prompt_response(model_out_text)
|
||||
print("clean prompt response:", clean_str)
|
||||
response = json.loads(clean_str)
|
||||
for key in sorted(response):
|
||||
if key.strip() == "DataAnalysis":
|
||||
desciption = response[key]
|
||||
if key.strip() == "ColumnAnalysis":
|
||||
clounms = response[key]
|
||||
if key.strip() == "AnalysisProgram":
|
||||
plans = response[key]
|
||||
return ExcelResponse(desciption=desciption, clounms=clounms, plans=plans)
|
||||
try:
|
||||
response = json.loads(clean_str)
|
||||
for key in sorted(response):
|
||||
if key.strip() == "DataAnalysis":
|
||||
desciption = response[key]
|
||||
if key.strip() == "ColumnAnalysis":
|
||||
clounms = response[key]
|
||||
if key.strip() == "AnalysisProgram":
|
||||
plans = response[key]
|
||||
return ExcelResponse(desciption=desciption, clounms=clounms, plans=plans)
|
||||
except Exception as e:
|
||||
return model_out_text
|
||||
|
||||
def parse_view_response(self, speak, data) -> str:
|
||||
### tool out data to table view
|
||||
html_title = f"### **数据简介**\n{data.desciption} "
|
||||
html_colunms = f"### **数据结构**\n"
|
||||
column_index = 0
|
||||
for item in data.clounms:
|
||||
column_index += 1
|
||||
keys = item.keys()
|
||||
for key in keys:
|
||||
html_colunms = (
|
||||
html_colunms + f"- **{column_index}.[{key}]** _{item[key]}_\n"
|
||||
)
|
||||
if data:
|
||||
### tool out data to table view
|
||||
html_title = f"### **数据简介**\n{data.desciption} "
|
||||
html_colunms = f"### **数据结构**\n"
|
||||
column_index = 0
|
||||
for item in data.clounms:
|
||||
column_index += 1
|
||||
keys = item.keys()
|
||||
for key in keys:
|
||||
html_colunms = (
|
||||
html_colunms + f"- **{column_index}.[{key}]** _{item[key]}_\n"
|
||||
)
|
||||
|
||||
html_plans = f"### **分析计划**\n"
|
||||
index = 0
|
||||
for item in data.plans:
|
||||
index += 1
|
||||
html_plans = html_plans + f"{item} \n"
|
||||
html = f"""{html_title}\n{html_colunms}\n{html_plans}"""
|
||||
return html
|
||||
html_plans = f"### **分析计划**\n"
|
||||
index = 0
|
||||
for item in data.plans:
|
||||
index += 1
|
||||
html_plans = html_plans + f"{item} \n"
|
||||
html = f"""{html_title}\n{html_colunms}\n{html_plans}"""
|
||||
return html
|
||||
else:
|
||||
return speak
|
||||
|
@ -157,7 +157,7 @@ if __name__ == "__main__":
|
||||
# # colunms, datas = excel_reader.run( """ SELECT Year, SUM(Sales) AS Total_Sales FROM example GROUP BY Year ORDER BY Year; """)
|
||||
# df = excel_reader.get_df_by_sql_ex(""" SELECT Segment, Country, SUM(Sales) AS Total_Sales, SUM(Profit) AS Total_Profit FROM example GROUP BY Segment, Country """)
|
||||
df = excel_reader.get_df_by_sql_ex(
|
||||
""" SELECT `明细`, `费用小计`, `支出小计` FROM yhj-zx limit 10"""
|
||||
""" SELECT 大项, AVG(实际) AS 平均实际支出, AVG(已支出) AS 平均已支出 FROM yhj-zx GROUP BY 大项"""
|
||||
)
|
||||
|
||||
for column_name in df.columns.tolist():
|
||||
@ -203,44 +203,55 @@ if __name__ == "__main__":
|
||||
# sns.barplot(df, x=x, y="Total_Profit", hue='Country', ax=ax)
|
||||
|
||||
# sns.catplot(data=df, x=x, y=y, hue='Country', kind='bar')
|
||||
x, y, non_num_columns, num_colmns = data_pre_classification(df)
|
||||
print(x, y, str(non_num_columns), str(num_colmns))
|
||||
# x, y, non_num_columns, num_colmns = data_pre_classification(df)
|
||||
# print(x, y, str(non_num_columns), str(num_colmns))
|
||||
## 复杂折线图实现
|
||||
if len(num_colmns) > 0:
|
||||
num_colmns.append(y)
|
||||
df_melted = pd.melt(
|
||||
df, id_vars=x, value_vars=num_colmns, var_name="line", value_name="Value"
|
||||
)
|
||||
sns.lineplot(data=df_melted, x=x, y="Value", hue="line", ax=ax, palette="Set2")
|
||||
else:
|
||||
sns.lineplot(data=df, x=x, y=y, ax=ax, palette="Set2")
|
||||
|
||||
# hue = None
|
||||
# ## 复杂柱状图实现
|
||||
# x,y, non_num_columns, num_colmns =data_pre_classification(df)
|
||||
# if len(non_num_columns) >= 1:
|
||||
# hue = non_num_columns[0]
|
||||
|
||||
# if len(num_colmns)>=1:
|
||||
# if hue:
|
||||
# if len(num_colmns) >= 2:
|
||||
# can_use_columns = num_colmns[:2]
|
||||
# else:
|
||||
# can_use_columns = num_colmns
|
||||
# sns.barplot(data=df, x=x, y=y, hue=hue, palette="Set2", ax=ax)
|
||||
# for sub_y_column in can_use_columns:
|
||||
# sns.barplot(data=df, x=x, y=sub_y_column, hue=hue, palette="Set2", ax=ax)
|
||||
# else:
|
||||
# if len(num_colmns) >= 3:
|
||||
# can_use_columns = num_colmns[:3]
|
||||
# else:
|
||||
# can_use_columns = num_colmns
|
||||
# sns.barplot(data=df, x=x, y=y, hue=can_use_columns[0], palette="Set2", ax=ax)
|
||||
#
|
||||
# for sub_y_column in can_use_columns[1:]:
|
||||
# sns.barplot(data=df, x=x, y=sub_y_column, hue=hue, palette="Set2", ax=ax)
|
||||
# if len(num_colmns) > 0:
|
||||
# num_colmns.append(y)
|
||||
# df_melted = pd.melt(
|
||||
# df, id_vars=x, value_vars=num_colmns, var_name="line", value_name="Value"
|
||||
# )
|
||||
# sns.lineplot(data=df_melted, x=x, y="Value", hue="line", ax=ax, palette="Set2")
|
||||
# else:
|
||||
# sns.barplot(data=df, x=x, y=y, hue=hue, palette="Set2", ax=ax)
|
||||
# sns.lineplot(data=df, x=x, y=y, ax=ax, palette="Set2")
|
||||
|
||||
hue = None
|
||||
## 复杂柱状图实现
|
||||
x, y, non_num_columns, num_colmns = data_pre_classification(df)
|
||||
|
||||
if len(non_num_columns) >= 1:
|
||||
hue = non_num_columns[0]
|
||||
|
||||
if len(num_colmns) >= 1:
|
||||
if hue:
|
||||
if len(num_colmns) >= 2:
|
||||
can_use_columns = num_colmns[:2]
|
||||
else:
|
||||
can_use_columns = num_colmns
|
||||
sns.barplot(data=df, x=x, y=y, hue=hue, palette="Set2", ax=ax)
|
||||
for sub_y_column in can_use_columns:
|
||||
sns.barplot(
|
||||
data=df, x=x, y=sub_y_column, hue=hue, palette="Set2", ax=ax
|
||||
)
|
||||
else:
|
||||
if len(num_colmns) > 5:
|
||||
can_use_columns = num_colmns[:5]
|
||||
else:
|
||||
can_use_columns = num_colmns
|
||||
can_use_columns.append(y)
|
||||
|
||||
df_melted = pd.melt(
|
||||
df,
|
||||
id_vars=x,
|
||||
value_vars=can_use_columns,
|
||||
var_name="line",
|
||||
value_name="Value",
|
||||
)
|
||||
sns.barplot(
|
||||
data=df_melted, x=x, y="Value", hue="line", palette="Set2", ax=ax
|
||||
)
|
||||
else:
|
||||
sns.barplot(data=df, x=x, y=y, hue=hue, palette="Set2", ax=ax)
|
||||
|
||||
# # 转换 DataFrame 格式
|
||||
# df_melted = pd.melt(df, id_vars=x, value_vars=['Total_Sales', 'Total_Profit'], var_name='line', value_name='y')
|
||||
|
@ -0,0 +1,29 @@
|
||||
import re
|
||||
import sqlparse
|
||||
|
||||
|
||||
def add_quotes(sql, column_names=[]):
|
||||
parsed = sqlparse.parse(sql)
|
||||
for stmt in parsed:
|
||||
for token in stmt.tokens:
|
||||
deep_quotes(token, column_names)
|
||||
return str(parsed[0])
|
||||
|
||||
|
||||
def deep_quotes(token, column_names=[]):
|
||||
if hasattr(token, "tokens"):
|
||||
for token_child in token.tokens:
|
||||
deep_quotes(token_child, column_names)
|
||||
else:
|
||||
if token.ttype == sqlparse.tokens.Name:
|
||||
if len(column_names) > 0:
|
||||
if token.value in column_names:
|
||||
token.value = f'"{token.value}"'
|
||||
else:
|
||||
token.value = f'"{token.value}"'
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sql = "SELECT SUM(预算) AS 总预算 FROM yhj-zx"
|
||||
new_sql = add_quotes(sql, ["预算"])
|
||||
print(new_sql)
|
@ -1 +1 @@
|
||||
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-01b3999c74014454.js" defer=""></script><script src="/_next/static/chunks/framework-43665103d101a22d.js" defer=""></script><script src="/_next/static/chunks/main-c1cf69f8673f1d30.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1f2755172264764d.js" defer=""></script><script src="/_next/static/chunks/pages/_error-f5357f382422dd96.js" defer=""></script><script src="/_next/static/HHDsBd1B4aAH55tFrMBIv/_buildManifest.js" defer=""></script><script src="/_next/static/HHDsBd1B4aAH55tFrMBIv/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"HHDsBd1B4aAH55tFrMBIv","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
||||
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-01b3999c74014454.js" defer=""></script><script src="/_next/static/chunks/framework-43665103d101a22d.js" defer=""></script><script src="/_next/static/chunks/main-c1cf69f8673f1d30.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1f2755172264764d.js" defer=""></script><script src="/_next/static/chunks/pages/_error-f5357f382422dd96.js" defer=""></script><script src="/_next/static/g4yxzotH2uCI1z7uk8kQC/_buildManifest.js" defer=""></script><script src="/_next/static/g4yxzotH2uCI1z7uk8kQC/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"g4yxzotH2uCI1z7uk8kQC","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
@ -1 +1 @@
|
||||
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-01b3999c74014454.js" defer=""></script><script src="/_next/static/chunks/framework-43665103d101a22d.js" defer=""></script><script src="/_next/static/chunks/main-c1cf69f8673f1d30.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1f2755172264764d.js" defer=""></script><script src="/_next/static/chunks/pages/_error-f5357f382422dd96.js" defer=""></script><script src="/_next/static/HHDsBd1B4aAH55tFrMBIv/_buildManifest.js" defer=""></script><script src="/_next/static/HHDsBd1B4aAH55tFrMBIv/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"HHDsBd1B4aAH55tFrMBIv","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
||||
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-01b3999c74014454.js" defer=""></script><script src="/_next/static/chunks/framework-43665103d101a22d.js" defer=""></script><script src="/_next/static/chunks/main-c1cf69f8673f1d30.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1f2755172264764d.js" defer=""></script><script src="/_next/static/chunks/pages/_error-f5357f382422dd96.js" defer=""></script><script src="/_next/static/g4yxzotH2uCI1z7uk8kQC/_buildManifest.js" defer=""></script><script src="/_next/static/g4yxzotH2uCI1z7uk8kQC/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"g4yxzotH2uCI1z7uk8kQC","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,10 +1,10 @@
|
||||
1:HL["/_next/static/css/76124ca107b00a15.css",{"as":"style"}]
|
||||
0:["HHDsBd1B4aAH55tFrMBIv",[[["",{"children":["chat",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/76124ca107b00a15.css","precedence":"next"}]],["$L3",null]]]]]
|
||||
0:["g4yxzotH2uCI1z7uk8kQC",[[["",{"children":["chat",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/76124ca107b00a15.css","precedence":"next"}]],["$L3",null]]]]]
|
||||
4:HL["/_next/static/css/4047a8310a399ceb.css",{"as":"style"}]
|
||||
5:I{"id":"55515","chunks":["180:static/chunks/0e02fca3-615d0d51fa074d92.js","355:static/chunks/355-f67a136d901a8c5f.js","932:static/chunks/932-401b6290e4f07233.js","358:static/chunks/358-a690ea06b8189dc6.js","191:static/chunks/191-977bd4e61595fb21.js","230:static/chunks/230-62e75b5eb2fd3838.js","715:static/chunks/715-50c67108307c55aa.js","196:static/chunks/196-876de32c0e3c3c98.js","394:static/chunks/394-0ffa189aa535d3eb.js","635:static/chunks/635-485e0e15fe1137c1.js","116:static/chunks/116-4b57b4ff0a58288d.js","741:static/chunks/741-9654a56afdea9ccd.js","119:static/chunks/119-fa8ae2133f5d13d9.js","185:static/chunks/app/layout-8f881e40fdff6264.js"],"name":"","async":false}
|
||||
6:I{"id":"13211","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
7:I{"id":"5767","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
8:I{"id":"37396","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
9:I{"id":"50229","chunks":["180:static/chunks/0e02fca3-615d0d51fa074d92.js","757:static/chunks/f60284a2-6891068c9ea7ce77.js","282:static/chunks/7e4358a0-7f236e540ced7dbb.js","355:static/chunks/355-f67a136d901a8c5f.js","932:static/chunks/932-401b6290e4f07233.js","358:static/chunks/358-a690ea06b8189dc6.js","649:static/chunks/649-85000b933734ec92.js","191:static/chunks/191-977bd4e61595fb21.js","230:static/chunks/230-62e75b5eb2fd3838.js","715:static/chunks/715-50c67108307c55aa.js","569:static/chunks/569-2c5ba6e4012e0ef6.js","196:static/chunks/196-876de32c0e3c3c98.js","86:static/chunks/86-07eeba2a9867dc2c.js","919:static/chunks/919-712e9f0bec0b7521.js","579:static/chunks/579-109b8ef1060dc09f.js","537:static/chunks/537-323ddb61f3df4dff.js","767:static/chunks/767-b93280f4b5b5e975.js","341:static/chunks/341-7283db898ec4f602.js","116:static/chunks/116-4b57b4ff0a58288d.js","959:static/chunks/959-28f2e1d44ad53ceb.js","554:static/chunks/554-82424166ff4e65a9.js","929:static/chunks/app/chat/page-dc56c69ea8f72017.js"],"name":"","async":false}
|
||||
9:I{"id":"50229","chunks":["180:static/chunks/0e02fca3-615d0d51fa074d92.js","757:static/chunks/f60284a2-6891068c9ea7ce77.js","282:static/chunks/7e4358a0-7f236e540ced7dbb.js","355:static/chunks/355-f67a136d901a8c5f.js","932:static/chunks/932-401b6290e4f07233.js","358:static/chunks/358-a690ea06b8189dc6.js","649:static/chunks/649-85000b933734ec92.js","191:static/chunks/191-977bd4e61595fb21.js","230:static/chunks/230-62e75b5eb2fd3838.js","715:static/chunks/715-50c67108307c55aa.js","569:static/chunks/569-2c5ba6e4012e0ef6.js","196:static/chunks/196-876de32c0e3c3c98.js","86:static/chunks/86-07eeba2a9867dc2c.js","919:static/chunks/919-712e9f0bec0b7521.js","579:static/chunks/579-109b8ef1060dc09f.js","537:static/chunks/537-323ddb61f3df4dff.js","767:static/chunks/767-b93280f4b5b5e975.js","341:static/chunks/341-7283db898ec4f602.js","116:static/chunks/116-4b57b4ff0a58288d.js","959:static/chunks/959-28f2e1d44ad53ceb.js","554:static/chunks/554-82424166ff4e65a9.js","929:static/chunks/app/chat/page-81e618fbf297a8f1.js"],"name":"","async":false}
|
||||
2:[["$","$L5",null,{"children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","chat","children"],"error":"$undefined","errorStyles":"$undefined","loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":[["$","$L8",null,{"propsForComponent":{"params":{}},"Component":"$9"}],null],"segment":"__PAGE__"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/4047a8310a399ceb.css","precedence":"next"}]]}],"segment":"chat"},"styles":[]}],"params":{}}],null]
|
||||
3:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"any"}]]
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
1:HL["/_next/static/css/76124ca107b00a15.css",{"as":"style"}]
|
||||
0:["HHDsBd1B4aAH55tFrMBIv",[[["",{"children":["database",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/76124ca107b00a15.css","precedence":"next"}]],["$L3",null]]]]]
|
||||
0:["g4yxzotH2uCI1z7uk8kQC",[[["",{"children":["database",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/76124ca107b00a15.css","precedence":"next"}]],["$L3",null]]]]]
|
||||
4:I{"id":"55515","chunks":["180:static/chunks/0e02fca3-615d0d51fa074d92.js","355:static/chunks/355-f67a136d901a8c5f.js","932:static/chunks/932-401b6290e4f07233.js","358:static/chunks/358-a690ea06b8189dc6.js","191:static/chunks/191-977bd4e61595fb21.js","230:static/chunks/230-62e75b5eb2fd3838.js","715:static/chunks/715-50c67108307c55aa.js","196:static/chunks/196-876de32c0e3c3c98.js","394:static/chunks/394-0ffa189aa535d3eb.js","635:static/chunks/635-485e0e15fe1137c1.js","116:static/chunks/116-4b57b4ff0a58288d.js","741:static/chunks/741-9654a56afdea9ccd.js","119:static/chunks/119-fa8ae2133f5d13d9.js","185:static/chunks/app/layout-8f881e40fdff6264.js"],"name":"","async":false}
|
||||
5:I{"id":"13211","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
6:I{"id":"5767","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
1:HL["/_next/static/css/76124ca107b00a15.css",{"as":"style"}]
|
||||
0:["HHDsBd1B4aAH55tFrMBIv",[[["",{"children":["datastores",{"children":["documents",{"children":["chunklist",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/76124ca107b00a15.css","precedence":"next"}]],["$L3",null]]]]]
|
||||
0:["g4yxzotH2uCI1z7uk8kQC",[[["",{"children":["datastores",{"children":["documents",{"children":["chunklist",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/76124ca107b00a15.css","precedence":"next"}]],["$L3",null]]]]]
|
||||
4:I{"id":"55515","chunks":["180:static/chunks/0e02fca3-615d0d51fa074d92.js","355:static/chunks/355-f67a136d901a8c5f.js","932:static/chunks/932-401b6290e4f07233.js","358:static/chunks/358-a690ea06b8189dc6.js","191:static/chunks/191-977bd4e61595fb21.js","230:static/chunks/230-62e75b5eb2fd3838.js","715:static/chunks/715-50c67108307c55aa.js","196:static/chunks/196-876de32c0e3c3c98.js","394:static/chunks/394-0ffa189aa535d3eb.js","635:static/chunks/635-485e0e15fe1137c1.js","116:static/chunks/116-4b57b4ff0a58288d.js","741:static/chunks/741-9654a56afdea9ccd.js","119:static/chunks/119-fa8ae2133f5d13d9.js","185:static/chunks/app/layout-8f881e40fdff6264.js"],"name":"","async":false}
|
||||
5:I{"id":"13211","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
6:I{"id":"5767","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
1:HL["/_next/static/css/76124ca107b00a15.css",{"as":"style"}]
|
||||
0:["HHDsBd1B4aAH55tFrMBIv",[[["",{"children":["datastores",{"children":["documents",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/76124ca107b00a15.css","precedence":"next"}]],["$L3",null]]]]]
|
||||
0:["g4yxzotH2uCI1z7uk8kQC",[[["",{"children":["datastores",{"children":["documents",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/76124ca107b00a15.css","precedence":"next"}]],["$L3",null]]]]]
|
||||
4:I{"id":"55515","chunks":["180:static/chunks/0e02fca3-615d0d51fa074d92.js","355:static/chunks/355-f67a136d901a8c5f.js","932:static/chunks/932-401b6290e4f07233.js","358:static/chunks/358-a690ea06b8189dc6.js","191:static/chunks/191-977bd4e61595fb21.js","230:static/chunks/230-62e75b5eb2fd3838.js","715:static/chunks/715-50c67108307c55aa.js","196:static/chunks/196-876de32c0e3c3c98.js","394:static/chunks/394-0ffa189aa535d3eb.js","635:static/chunks/635-485e0e15fe1137c1.js","116:static/chunks/116-4b57b4ff0a58288d.js","741:static/chunks/741-9654a56afdea9ccd.js","119:static/chunks/119-fa8ae2133f5d13d9.js","185:static/chunks/app/layout-8f881e40fdff6264.js"],"name":"","async":false}
|
||||
5:I{"id":"13211","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
6:I{"id":"5767","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
1:HL["/_next/static/css/76124ca107b00a15.css",{"as":"style"}]
|
||||
0:["HHDsBd1B4aAH55tFrMBIv",[[["",{"children":["datastores",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/76124ca107b00a15.css","precedence":"next"}]],["$L3",null]]]]]
|
||||
0:["g4yxzotH2uCI1z7uk8kQC",[[["",{"children":["datastores",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/76124ca107b00a15.css","precedence":"next"}]],["$L3",null]]]]]
|
||||
4:I{"id":"55515","chunks":["180:static/chunks/0e02fca3-615d0d51fa074d92.js","355:static/chunks/355-f67a136d901a8c5f.js","932:static/chunks/932-401b6290e4f07233.js","358:static/chunks/358-a690ea06b8189dc6.js","191:static/chunks/191-977bd4e61595fb21.js","230:static/chunks/230-62e75b5eb2fd3838.js","715:static/chunks/715-50c67108307c55aa.js","196:static/chunks/196-876de32c0e3c3c98.js","394:static/chunks/394-0ffa189aa535d3eb.js","635:static/chunks/635-485e0e15fe1137c1.js","116:static/chunks/116-4b57b4ff0a58288d.js","741:static/chunks/741-9654a56afdea9ccd.js","119:static/chunks/119-fa8ae2133f5d13d9.js","185:static/chunks/app/layout-8f881e40fdff6264.js"],"name":"","async":false}
|
||||
5:I{"id":"13211","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
6:I{"id":"5767","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
1:HL["/_next/static/css/76124ca107b00a15.css",{"as":"style"}]
|
||||
0:["HHDsBd1B4aAH55tFrMBIv",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/76124ca107b00a15.css","precedence":"next"}]],["$L3",null]]]]]
|
||||
0:["g4yxzotH2uCI1z7uk8kQC",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],"$L2",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/76124ca107b00a15.css","precedence":"next"}]],["$L3",null]]]]]
|
||||
4:I{"id":"55515","chunks":["180:static/chunks/0e02fca3-615d0d51fa074d92.js","355:static/chunks/355-f67a136d901a8c5f.js","932:static/chunks/932-401b6290e4f07233.js","358:static/chunks/358-a690ea06b8189dc6.js","191:static/chunks/191-977bd4e61595fb21.js","230:static/chunks/230-62e75b5eb2fd3838.js","715:static/chunks/715-50c67108307c55aa.js","196:static/chunks/196-876de32c0e3c3c98.js","394:static/chunks/394-0ffa189aa535d3eb.js","635:static/chunks/635-485e0e15fe1137c1.js","116:static/chunks/116-4b57b4ff0a58288d.js","741:static/chunks/741-9654a56afdea9ccd.js","119:static/chunks/119-fa8ae2133f5d13d9.js","185:static/chunks/app/layout-8f881e40fdff6264.js"],"name":"","async":false}
|
||||
5:I{"id":"13211","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
6:I{"id":"5767","chunks":["272:static/chunks/webpack-01b3999c74014454.js","253:static/chunks/bce60fc1-18c9f145b45d8f36.js","769:static/chunks/769-76f7aafd375fdd6b.js"],"name":"","async":false}
|
||||
|
Loading…
Reference in New Issue
Block a user