bugfix:Ty 08 dev new (#513)

fix chatexcel file load error bug!
This commit is contained in:
明天 2023-09-01 10:44:20 +08:00 committed by GitHub
commit 682b6d0b04
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 211 additions and 101 deletions

View File

@ -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)

View File

@ -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:

View File

@ -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(

View File

@ -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()

View File

@ -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:

View File

@ -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)

View File

@ -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}

View File

@ -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

View File

@ -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')

View File

@ -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)

View File

@ -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,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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>

View File

@ -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,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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}