mirror of
https://github.com/RYDE-WORK/Langchain-Chatchat.git
synced 2026-02-07 15:38:27 +08:00
删除掉一些没用的注释,已经不需要todo了
This commit is contained in:
parent
1adff316e5
commit
56d32a9908
@ -132,12 +132,6 @@ FSCHAT_MODEL_WORKERS = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
# fastchat multi model worker server
|
|
||||||
FSCHAT_MULTI_MODEL_WORKERS = {
|
|
||||||
# TODO:
|
|
||||||
}
|
|
||||||
|
|
||||||
# fastchat controller server
|
|
||||||
FSCHAT_CONTROLLER = {
|
FSCHAT_CONTROLLER = {
|
||||||
"host": DEFAULT_BIND_HOST,
|
"host": DEFAULT_BIND_HOST,
|
||||||
"port": 20001,
|
"port": 20001,
|
||||||
|
|||||||
@ -16,11 +16,8 @@ class RapidOCRPDFLoader(UnstructuredFileLoader):
|
|||||||
|
|
||||||
b_unit = tqdm.tqdm(total=doc.page_count, desc="RapidOCRPDFLoader context page index: 0")
|
b_unit = tqdm.tqdm(total=doc.page_count, desc="RapidOCRPDFLoader context page index: 0")
|
||||||
for i, page in enumerate(doc):
|
for i, page in enumerate(doc):
|
||||||
# 更新描述
|
|
||||||
b_unit.set_description("RapidOCRPDFLoader context page index: {}".format(i))
|
b_unit.set_description("RapidOCRPDFLoader context page index: {}".format(i))
|
||||||
# 立即显示进度条更新结果
|
|
||||||
b_unit.refresh()
|
b_unit.refresh()
|
||||||
# TODO: 依据文本与图片顺序调整处理方式
|
|
||||||
text = page.get_text("")
|
text = page.get_text("")
|
||||||
resp += text + "\n"
|
resp += text + "\n"
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,6 @@ def embed_texts(
|
|||||||
) -> BaseResponse:
|
) -> BaseResponse:
|
||||||
'''
|
'''
|
||||||
对文本进行向量化。返回数据格式:BaseResponse(data=List[List[float]])
|
对文本进行向量化。返回数据格式:BaseResponse(data=List[List[float]])
|
||||||
TODO: 也许需要加入缓存机制,减少 token 消耗
|
|
||||||
'''
|
'''
|
||||||
try:
|
try:
|
||||||
if embed_model in list_embed_models(): # 使用本地Embeddings模型
|
if embed_model in list_embed_models(): # 使用本地Embeddings模型
|
||||||
|
|||||||
@ -55,8 +55,6 @@ class _FaissPool(CachePool):
|
|||||||
embed_model: str = EMBEDDING_MODEL,
|
embed_model: str = EMBEDDING_MODEL,
|
||||||
embed_device: str = embedding_device(),
|
embed_device: str = embedding_device(),
|
||||||
) -> FAISS:
|
) -> FAISS:
|
||||||
# TODO: 整个Embeddings加载逻辑有些混乱,待清理
|
|
||||||
# create an empty vector store
|
|
||||||
embeddings = EmbeddingsFunAdapter(embed_model)
|
embeddings = EmbeddingsFunAdapter(embed_model)
|
||||||
doc = Document(page_content="init", metadata={})
|
doc = Document(page_content="init", metadata={})
|
||||||
vector_store = FAISS.from_documents([doc], embeddings, normalize_L2=True,distance_strategy="METRIC_INNER_PRODUCT")
|
vector_store = FAISS.from_documents([doc], embeddings, normalize_L2=True,distance_strategy="METRIC_INNER_PRODUCT")
|
||||||
|
|||||||
@ -95,7 +95,6 @@ def _save_files_in_thread(files: List[UploadFile],
|
|||||||
and not override
|
and not override
|
||||||
and os.path.getsize(file_path) == len(file_content)
|
and os.path.getsize(file_path) == len(file_content)
|
||||||
):
|
):
|
||||||
# TODO: filesize 不同后的处理
|
|
||||||
file_status = f"文件 {filename} 已存在。"
|
file_status = f"文件 {filename} 已存在。"
|
||||||
logger.warn(file_status)
|
logger.warn(file_status)
|
||||||
return dict(code=404, msg=file_status, data=data)
|
return dict(code=404, msg=file_status, data=data)
|
||||||
@ -116,7 +115,6 @@ def _save_files_in_thread(files: List[UploadFile],
|
|||||||
yield result
|
yield result
|
||||||
|
|
||||||
|
|
||||||
# TODO: 等langchain.document_loaders支持内存文件的时候再开通
|
|
||||||
# def files2docs(files: List[UploadFile] = File(..., description="上传文件,支持多文件"),
|
# def files2docs(files: List[UploadFile] = File(..., description="上传文件,支持多文件"),
|
||||||
# knowledge_base_name: str = Form(..., description="知识库名称", examples=["samples"]),
|
# knowledge_base_name: str = Form(..., description="知识库名称", examples=["samples"]),
|
||||||
# override: bool = Form(False, description="覆盖已有文件"),
|
# override: bool = Form(False, description="覆盖已有文件"),
|
||||||
|
|||||||
@ -191,7 +191,6 @@ class KBService(ABC):
|
|||||||
'''
|
'''
|
||||||
传入参数为: {doc_id: Document, ...}
|
传入参数为: {doc_id: Document, ...}
|
||||||
如果对应 doc_id 的值为 None,或其 page_content 为空,则删除该文档
|
如果对应 doc_id 的值为 None,或其 page_content 为空,则删除该文档
|
||||||
TODO:是否要支持新增 docs ?
|
|
||||||
'''
|
'''
|
||||||
self.del_doc_by_ids(list(docs.keys()))
|
self.del_doc_by_ids(list(docs.keys()))
|
||||||
docs = []
|
docs = []
|
||||||
|
|||||||
@ -70,7 +70,6 @@ class MilvusKBService(KBService):
|
|||||||
return score_threshold_process(score_threshold, top_k, docs)
|
return score_threshold_process(score_threshold, top_k, docs)
|
||||||
|
|
||||||
def do_add_doc(self, docs: List[Document], **kwargs) -> List[Dict]:
|
def do_add_doc(self, docs: List[Document], **kwargs) -> List[Dict]:
|
||||||
# TODO: workaround for bug #10492 in langchain
|
|
||||||
for doc in docs:
|
for doc in docs:
|
||||||
for k, v in doc.metadata.items():
|
for k, v in doc.metadata.items():
|
||||||
doc.metadata[k] = str(v)
|
doc.metadata[k] = str(v)
|
||||||
|
|||||||
@ -32,8 +32,6 @@ class PGKBService(KBService):
|
|||||||
results = [Document(page_content=row[0], metadata=row[1]) for row in
|
results = [Document(page_content=row[0], metadata=row[1]) for row in
|
||||||
session.execute(stmt, {'ids': ids}).fetchall()]
|
session.execute(stmt, {'ids': ids}).fetchall()]
|
||||||
return results
|
return results
|
||||||
|
|
||||||
# TODO:
|
|
||||||
def del_doc_by_ids(self, ids: List[str]) -> bool:
|
def del_doc_by_ids(self, ids: List[str]) -> bool:
|
||||||
return super().del_doc_by_ids(ids)
|
return super().del_doc_by_ids(ids)
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,6 @@ from server.db.repository.knowledge_metadata_repository import add_summary_to_db
|
|||||||
from langchain.docstore.document import Document
|
from langchain.docstore.document import Document
|
||||||
|
|
||||||
|
|
||||||
# TODO 暂不考虑文件更新,需要重新删除相关文档,再重新添加
|
|
||||||
class KBSummaryService(ABC):
|
class KBSummaryService(ABC):
|
||||||
kb_name: str
|
kb_name: str
|
||||||
embed_model: str
|
embed_model: str
|
||||||
|
|||||||
@ -112,12 +112,6 @@ class SummaryAdapter:
|
|||||||
docs: List[DocumentWithVSId] = []) -> List[Document]:
|
docs: List[DocumentWithVSId] = []) -> List[Document]:
|
||||||
|
|
||||||
logger.info("start summary")
|
logger.info("start summary")
|
||||||
# TODO 暂不处理文档中涉及语义重复、上下文缺失、document was longer than the context length 的问题
|
|
||||||
# merge_docs = self._drop_overlap(docs)
|
|
||||||
# # 将merge_docs中的句子合并成一个文档
|
|
||||||
# text = self._join_docs(merge_docs)
|
|
||||||
# 根据段落于句子的分隔符,将文档分成chunk,每个chunk长度小于token_max长度
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
这个过程分成两个部分:
|
这个过程分成两个部分:
|
||||||
1. 对每个文档进行处理,得到每个文档的摘要
|
1. 对每个文档进行处理,得到每个文档的摘要
|
||||||
|
|||||||
@ -174,7 +174,6 @@ def get_loader(loader_name: str, file_path: str, loader_kwargs: Dict = None):
|
|||||||
if encode_detect is None:
|
if encode_detect is None:
|
||||||
encode_detect = {"encoding": "utf-8"}
|
encode_detect = {"encoding": "utf-8"}
|
||||||
loader_kwargs["encoding"] = encode_detect["encoding"]
|
loader_kwargs["encoding"] = encode_detect["encoding"]
|
||||||
## TODO:支持更多的自定义CSV读取逻辑
|
|
||||||
|
|
||||||
elif loader_name == "JSONLoader":
|
elif loader_name == "JSONLoader":
|
||||||
loader_kwargs.setdefault("jq_schema", ".")
|
loader_kwargs.setdefault("jq_schema", ".")
|
||||||
|
|||||||
@ -67,12 +67,10 @@ class AzureWorker(ApiModelWorker):
|
|||||||
self.logger.error(f"请求 Azure API 时发生错误:{resp}")
|
self.logger.error(f"请求 Azure API 时发生错误:{resp}")
|
||||||
|
|
||||||
def get_embeddings(self, params):
|
def get_embeddings(self, params):
|
||||||
# TODO: 支持embeddings
|
|
||||||
print("embedding")
|
print("embedding")
|
||||||
print(params)
|
print(params)
|
||||||
|
|
||||||
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
||||||
# TODO: 确认模板是否需要修改
|
|
||||||
return conv.Conversation(
|
return conv.Conversation(
|
||||||
name=self.model_names[0],
|
name=self.model_names[0],
|
||||||
system_message="You are a helpful, respectful and honest assistant.",
|
system_message="You are a helpful, respectful and honest assistant.",
|
||||||
|
|||||||
@ -88,12 +88,10 @@ class BaiChuanWorker(ApiModelWorker):
|
|||||||
yield data
|
yield data
|
||||||
|
|
||||||
def get_embeddings(self, params):
|
def get_embeddings(self, params):
|
||||||
# TODO: 支持embeddings
|
|
||||||
print("embedding")
|
print("embedding")
|
||||||
print(params)
|
print(params)
|
||||||
|
|
||||||
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
||||||
# TODO: 确认模板是否需要修改
|
|
||||||
return conv.Conversation(
|
return conv.Conversation(
|
||||||
name=self.model_names[0],
|
name=self.model_names[0],
|
||||||
system_message="",
|
system_message="",
|
||||||
|
|||||||
@ -125,8 +125,6 @@ class ApiModelWorker(BaseModelWorker):
|
|||||||
|
|
||||||
|
|
||||||
def count_token(self, params):
|
def count_token(self, params):
|
||||||
# TODO:需要完善
|
|
||||||
# print("count token")
|
|
||||||
prompt = params["prompt"]
|
prompt = params["prompt"]
|
||||||
return {"count": len(str(prompt)), "error_code": 0}
|
return {"count": len(str(prompt)), "error_code": 0}
|
||||||
|
|
||||||
|
|||||||
@ -12,16 +12,16 @@ class FangZhouWorker(ApiModelWorker):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
model_names: List[str] = ["fangzhou-api"],
|
model_names: List[str] = ["fangzhou-api"],
|
||||||
controller_addr: str = None,
|
controller_addr: str = None,
|
||||||
worker_addr: str = None,
|
worker_addr: str = None,
|
||||||
version: Literal["chatglm-6b-model"] = "chatglm-6b-model",
|
version: Literal["chatglm-6b-model"] = "chatglm-6b-model",
|
||||||
**kwargs,
|
**kwargs,
|
||||||
):
|
):
|
||||||
kwargs.update(model_names=model_names, controller_addr=controller_addr, worker_addr=worker_addr)
|
kwargs.update(model_names=model_names, controller_addr=controller_addr, worker_addr=worker_addr)
|
||||||
kwargs.setdefault("context_len", 16384) # TODO: 不同的模型有不同的大小
|
kwargs.setdefault("context_len", 16384)
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
self.version = version
|
self.version = version
|
||||||
|
|
||||||
@ -53,15 +53,15 @@ class FangZhouWorker(ApiModelWorker):
|
|||||||
if error := resp.error:
|
if error := resp.error:
|
||||||
if error.code_n > 0:
|
if error.code_n > 0:
|
||||||
data = {
|
data = {
|
||||||
"error_code": error.code_n,
|
"error_code": error.code_n,
|
||||||
"text": error.message,
|
"text": error.message,
|
||||||
"error": {
|
"error": {
|
||||||
"message": error.message,
|
"message": error.message,
|
||||||
"type": "invalid_request_error",
|
"type": "invalid_request_error",
|
||||||
"param": None,
|
"param": None,
|
||||||
"code": None,
|
"code": None,
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
self.logger.error(f"请求方舟 API 时发生错误:{data}")
|
self.logger.error(f"请求方舟 API 时发生错误:{data}")
|
||||||
yield data
|
yield data
|
||||||
elif chunk := resp.choice.message.content:
|
elif chunk := resp.choice.message.content:
|
||||||
@ -77,7 +77,6 @@ class FangZhouWorker(ApiModelWorker):
|
|||||||
break
|
break
|
||||||
|
|
||||||
def get_embeddings(self, params):
|
def get_embeddings(self, params):
|
||||||
# TODO: 支持embeddings
|
|
||||||
print("embedding")
|
print("embedding")
|
||||||
print(params)
|
print(params)
|
||||||
|
|
||||||
|
|||||||
@ -95,7 +95,6 @@ class GeminiWorker(ApiModelWorker):
|
|||||||
print("Invalid JSON string:", json_string)
|
print("Invalid JSON string:", json_string)
|
||||||
|
|
||||||
def get_embeddings(self, params):
|
def get_embeddings(self, params):
|
||||||
# TODO: 支持embeddings
|
|
||||||
print("embedding")
|
print("embedding")
|
||||||
print(params)
|
print(params)
|
||||||
|
|
||||||
|
|||||||
@ -37,7 +37,6 @@ class MiniMaxWorker(ApiModelWorker):
|
|||||||
|
|
||||||
def do_chat(self, params: ApiChatParams) -> Dict:
|
def do_chat(self, params: ApiChatParams) -> Dict:
|
||||||
# 按照官网推荐,直接调用abab 5.5模型
|
# 按照官网推荐,直接调用abab 5.5模型
|
||||||
# TODO: 支持指定回复要求,支持指定用户名称、AI名称
|
|
||||||
params.load_config(self.model_names[0])
|
params.load_config(self.model_names[0])
|
||||||
|
|
||||||
url = 'https://api.minimax.chat/v1/text/chatcompletion{pro}?GroupId={group_id}'
|
url = 'https://api.minimax.chat/v1/text/chatcompletion{pro}?GroupId={group_id}'
|
||||||
@ -55,7 +54,7 @@ class MiniMaxWorker(ApiModelWorker):
|
|||||||
"temperature": params.temperature,
|
"temperature": params.temperature,
|
||||||
"top_p": params.top_p,
|
"top_p": params.top_p,
|
||||||
"tokens_to_generate": params.max_tokens or 1024,
|
"tokens_to_generate": params.max_tokens or 1024,
|
||||||
# TODO: 以下参数为minimax特有,传入空值会出错。
|
# 以下参数为minimax特有,传入空值会出错。
|
||||||
# "prompt": params.system_message or self.conv.system_message,
|
# "prompt": params.system_message or self.conv.system_message,
|
||||||
# "bot_setting": [],
|
# "bot_setting": [],
|
||||||
# "role_meta": params.role_meta,
|
# "role_meta": params.role_meta,
|
||||||
@ -143,12 +142,10 @@ class MiniMaxWorker(ApiModelWorker):
|
|||||||
return {"code": 200, "data": result}
|
return {"code": 200, "data": result}
|
||||||
|
|
||||||
def get_embeddings(self, params):
|
def get_embeddings(self, params):
|
||||||
# TODO: 支持embeddings
|
|
||||||
print("embedding")
|
print("embedding")
|
||||||
print(params)
|
print(params)
|
||||||
|
|
||||||
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
||||||
# TODO: 确认模板是否需要修改
|
|
||||||
return conv.Conversation(
|
return conv.Conversation(
|
||||||
name=self.model_names[0],
|
name=self.model_names[0],
|
||||||
system_message="你是MiniMax自主研发的大型语言模型,回答问题简洁有条理。",
|
system_message="你是MiniMax自主研发的大型语言模型,回答问题简洁有条理。",
|
||||||
|
|||||||
@ -187,14 +187,11 @@ class QianFanWorker(ApiModelWorker):
|
|||||||
i += batch_size
|
i += batch_size
|
||||||
return {"code": 200, "data": result}
|
return {"code": 200, "data": result}
|
||||||
|
|
||||||
# TODO: qianfan支持续写模型
|
|
||||||
def get_embeddings(self, params):
|
def get_embeddings(self, params):
|
||||||
# TODO: 支持embeddings
|
|
||||||
print("embedding")
|
print("embedding")
|
||||||
print(params)
|
print(params)
|
||||||
|
|
||||||
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
||||||
# TODO: 确认模板是否需要修改
|
|
||||||
return conv.Conversation(
|
return conv.Conversation(
|
||||||
name=self.model_names[0],
|
name=self.model_names[0],
|
||||||
system_message="你是一个聪明的助手,请根据用户的提示来完成任务",
|
system_message="你是一个聪明的助手,请根据用户的提示来完成任务",
|
||||||
|
|||||||
@ -100,12 +100,10 @@ class QwenWorker(ApiModelWorker):
|
|||||||
return {"code": 200, "data": result}
|
return {"code": 200, "data": result}
|
||||||
|
|
||||||
def get_embeddings(self, params):
|
def get_embeddings(self, params):
|
||||||
# TODO: 支持embeddings
|
|
||||||
print("embedding")
|
print("embedding")
|
||||||
print(params)
|
print(params)
|
||||||
|
|
||||||
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
||||||
# TODO: 确认模板是否需要修改
|
|
||||||
return conv.Conversation(
|
return conv.Conversation(
|
||||||
name=self.model_names[0],
|
name=self.model_names[0],
|
||||||
system_message="你是一个聪明、对人类有帮助的人工智能,你可以对人类提出的问题给出有用、详细、礼貌的回答。",
|
system_message="你是一个聪明、对人类有帮助的人工智能,你可以对人类提出的问题给出有用、详细、礼貌的回答。",
|
||||||
|
|||||||
@ -70,12 +70,10 @@ class TianGongWorker(ApiModelWorker):
|
|||||||
yield data
|
yield data
|
||||||
|
|
||||||
def get_embeddings(self, params):
|
def get_embeddings(self, params):
|
||||||
# TODO: 支持embeddings
|
|
||||||
print("embedding")
|
print("embedding")
|
||||||
print(params)
|
print(params)
|
||||||
|
|
||||||
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
||||||
# TODO: 确认模板是否需要修改
|
|
||||||
return conv.Conversation(
|
return conv.Conversation(
|
||||||
name=self.model_names[0],
|
name=self.model_names[0],
|
||||||
system_message="",
|
system_message="",
|
||||||
|
|||||||
@ -42,7 +42,6 @@ class XingHuoWorker(ApiModelWorker):
|
|||||||
self.version = version
|
self.version = version
|
||||||
|
|
||||||
def do_chat(self, params: ApiChatParams) -> Dict:
|
def do_chat(self, params: ApiChatParams) -> Dict:
|
||||||
# TODO: 当前每次对话都要重新连接websocket,确认是否可以保持连接
|
|
||||||
params.load_config(self.model_names[0])
|
params.load_config(self.model_names[0])
|
||||||
|
|
||||||
version_mapping = {
|
version_mapping = {
|
||||||
@ -73,12 +72,10 @@ class XingHuoWorker(ApiModelWorker):
|
|||||||
yield {"error_code": 0, "text": text}
|
yield {"error_code": 0, "text": text}
|
||||||
|
|
||||||
def get_embeddings(self, params):
|
def get_embeddings(self, params):
|
||||||
# TODO: 支持embeddings
|
|
||||||
print("embedding")
|
print("embedding")
|
||||||
print(params)
|
print(params)
|
||||||
|
|
||||||
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
def make_conv_template(self, conv_template: str = None, model_path: str = None) -> Conversation:
|
||||||
# TODO: 确认模板是否需要修改
|
|
||||||
return conv.Conversation(
|
return conv.Conversation(
|
||||||
name=self.model_names[0],
|
name=self.model_names[0],
|
||||||
system_message="你是一个聪明的助手,请根据用户的提示来完成任务",
|
system_message="你是一个聪明的助手,请根据用户的提示来完成任务",
|
||||||
|
|||||||
@ -36,7 +36,6 @@ async def wrap_done(fn: Awaitable, event: asyncio.Event):
|
|||||||
await fn
|
await fn
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.exception(e)
|
logging.exception(e)
|
||||||
# TODO: handle exception
|
|
||||||
msg = f"Caught exception: {e}"
|
msg = f"Caught exception: {e}"
|
||||||
logger.error(f'{e.__class__.__name__}: {msg}',
|
logger.error(f'{e.__class__.__name__}: {msg}',
|
||||||
exc_info=e if log_verbose else None)
|
exc_info=e if log_verbose else None)
|
||||||
@ -404,7 +403,7 @@ def fschat_controller_address() -> str:
|
|||||||
|
|
||||||
|
|
||||||
def fschat_model_worker_address(model_name: str = LLM_MODELS[0]) -> str:
|
def fschat_model_worker_address(model_name: str = LLM_MODELS[0]) -> str:
|
||||||
if model := get_model_worker_config(model_name): # TODO: depends fastchat
|
if model := get_model_worker_config(model_name):
|
||||||
host = model["host"]
|
host = model["host"]
|
||||||
if host == "0.0.0.0":
|
if host == "0.0.0.0":
|
||||||
host = "127.0.0.1"
|
host = "127.0.0.1"
|
||||||
@ -449,7 +448,7 @@ def get_prompt_template(type: str, name: str) -> Optional[str]:
|
|||||||
|
|
||||||
from configs import prompt_config
|
from configs import prompt_config
|
||||||
import importlib
|
import importlib
|
||||||
importlib.reload(prompt_config) # TODO: 检查configs/prompt_config.py文件有修改再重新加载
|
importlib.reload(prompt_config)
|
||||||
return prompt_config.PROMPT_TEMPLATES[type].get(name)
|
return prompt_config.PROMPT_TEMPLATES[type].get(name)
|
||||||
|
|
||||||
|
|
||||||
@ -550,7 +549,7 @@ def run_in_thread_pool(
|
|||||||
thread = pool.submit(func, **kwargs)
|
thread = pool.submit(func, **kwargs)
|
||||||
tasks.append(thread)
|
tasks.append(thread)
|
||||||
|
|
||||||
for obj in as_completed(tasks): # TODO: Ctrl+c无法停止
|
for obj in as_completed(tasks):
|
||||||
yield obj.result()
|
yield obj.result()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -418,7 +418,7 @@ def run_openai_api(log_level: str = "INFO", started_event: mp.Event = None):
|
|||||||
set_httpx_config()
|
set_httpx_config()
|
||||||
|
|
||||||
controller_addr = fschat_controller_address()
|
controller_addr = fschat_controller_address()
|
||||||
app = create_openai_api_app(controller_addr, log_level=log_level) # TODO: not support keys yet.
|
app = create_openai_api_app(controller_addr, log_level=log_level)
|
||||||
_set_app_event(app, started_event)
|
_set_app_event(app, started_event)
|
||||||
|
|
||||||
host = FSCHAT_OPENAI_API["host"]
|
host = FSCHAT_OPENAI_API["host"]
|
||||||
|
|||||||
@ -126,7 +126,6 @@ def dialogue_page(api: ApiRequest, is_lite: bool = False):
|
|||||||
chat_box.use_chat_name(conversation_name)
|
chat_box.use_chat_name(conversation_name)
|
||||||
conversation_id = st.session_state["conversation_ids"][conversation_name]
|
conversation_id = st.session_state["conversation_ids"][conversation_name]
|
||||||
|
|
||||||
# TODO: 对话模型与会话绑定
|
|
||||||
def on_mode_change():
|
def on_mode_change():
|
||||||
mode = st.session_state.dialogue_mode
|
mode = st.session_state.dialogue_mode
|
||||||
text = f"已切换到 {mode} 模式。"
|
text = f"已切换到 {mode} 模式。"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user