fix:使用在线embedding模型时 报错 There is no current event loop in thread 'Any… (#2393)
* fix:使用在线embedding模型时 报错 There is no current event loop in thread 'AnyIO worker thread' * 动态配置在线embbding模型 --------- Co-authored-by: fangkeke <3339698829@qq.com>
This commit is contained in:
parent
bba4754994
commit
c1a32d9f1a
|
|
@ -96,6 +96,7 @@ ONLINE_LLM_MODEL = {
|
||||||
"version": "qwen-turbo", # 可选包括 "qwen-turbo", "qwen-plus"
|
"version": "qwen-turbo", # 可选包括 "qwen-turbo", "qwen-plus"
|
||||||
"api_key": "", # 请在阿里云控制台模型服务灵积API-KEY管理页面创建
|
"api_key": "", # 请在阿里云控制台模型服务灵积API-KEY管理页面创建
|
||||||
"provider": "QwenWorker",
|
"provider": "QwenWorker",
|
||||||
|
"embed_model": "text-embedding-v1" # embedding 模型名称
|
||||||
},
|
},
|
||||||
|
|
||||||
# 百川 API,申请方式请参考 https://www.baichuan-ai.com/home#api-enter
|
# 百川 API,申请方式请参考 https://www.baichuan-ai.com/home#api-enter
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ from server.utils import BaseResponse, get_model_worker_config, list_embed_model
|
||||||
from fastapi import Body
|
from fastapi import Body
|
||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
|
|
||||||
|
|
||||||
online_embed_models = list_online_embed_models()
|
online_embed_models = list_online_embed_models()
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -28,9 +27,10 @@ def embed_texts(
|
||||||
if embed_model in list_online_embed_models(): # 使用在线API
|
if embed_model in list_online_embed_models(): # 使用在线API
|
||||||
config = get_model_worker_config(embed_model)
|
config = get_model_worker_config(embed_model)
|
||||||
worker_class = config.get("worker_class")
|
worker_class = config.get("worker_class")
|
||||||
|
embed_model = config.get("embed_model")
|
||||||
worker = worker_class()
|
worker = worker_class()
|
||||||
if worker_class.can_embedding():
|
if worker_class.can_embedding():
|
||||||
params = ApiEmbeddingsParams(texts=texts, to_query=to_query)
|
params = ApiEmbeddingsParams(texts=texts, to_query=to_query, embed_model=embed_model)
|
||||||
resp = worker.do_embeddings(params)
|
resp = worker.do_embeddings(params)
|
||||||
return BaseResponse(**resp)
|
return BaseResponse(**resp)
|
||||||
|
|
||||||
|
|
@ -39,9 +39,11 @@ def embed_texts(
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
return BaseResponse(code=500, msg=f"文本向量化过程中出现错误:{e}")
|
return BaseResponse(code=500, msg=f"文本向量化过程中出现错误:{e}")
|
||||||
|
|
||||||
|
|
||||||
def embed_texts_endpoint(
|
def embed_texts_endpoint(
|
||||||
texts: List[str] = Body(..., description="要嵌入的文本列表", examples=[["hello", "world"]]),
|
texts: List[str] = Body(..., description="要嵌入的文本列表", examples=[["hello", "world"]]),
|
||||||
embed_model: str = Body(EMBEDDING_MODEL, description=f"使用的嵌入模型,除了本地部署的Embedding模型,也支持在线API({online_embed_models})提供的嵌入服务。"),
|
embed_model: str = Body(EMBEDDING_MODEL,
|
||||||
|
description=f"使用的嵌入模型,除了本地部署的Embedding模型,也支持在线API({online_embed_models})提供的嵌入服务。"),
|
||||||
to_query: bool = Body(False, description="向量是否用于查询。有些模型如Minimax对存储/查询的向量进行了区分优化。"),
|
to_query: bool = Body(False, description="向量是否用于查询。有些模型如Minimax对存储/查询的向量进行了区分优化。"),
|
||||||
) -> BaseResponse:
|
) -> BaseResponse:
|
||||||
'''
|
'''
|
||||||
|
|
|
||||||
|
|
@ -113,6 +113,9 @@ class ApiModelWorker(BaseModelWorker):
|
||||||
sys.stdout = sys.__stdout__
|
sys.stdout = sys.__stdout__
|
||||||
sys.stderr = sys.__stderr__
|
sys.stderr = sys.__stderr__
|
||||||
|
|
||||||
|
new_loop = asyncio.new_event_loop()
|
||||||
|
asyncio.set_event_loop(new_loop)
|
||||||
|
|
||||||
self.context_len = context_len
|
self.context_len = context_len
|
||||||
self.semaphore = asyncio.Semaphore(self.limit_worker_concurrency)
|
self.semaphore = asyncio.Semaphore(self.limit_worker_concurrency)
|
||||||
self.version = None
|
self.version = None
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue