From 06419a8ac4be73be8d1bed13448be6859edcccfc Mon Sep 17 00:00:00 2001
From: szlele <595128841@qq.com>
Date: Thu, 12 Jun 2025 10:44:47 +0800
Subject: [PATCH 1/6] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=E7=9B=AE=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
llamacpp-embedding-rerank-server/README.md | 27 ++++++++++++++
.../docker-compose.yaml | 36 +++++++++++++++++++
.../.gitignore | 0
.../app/embedding_api.py | 0
.../app/embedding_onnx_provider.py | 0
.../app/log_config.py | 0
.../app/main.py | 0
.../app/model_service.py | 0
.../app/rerank_api.py | 0
.../app/rerank_onnx_provider.py | 0
.../requirements.txt | 0
.../run.sh | 2 +-
.../test/embedding_client.py | 0
.../test/http_client.py | 0
.../test/model_test.py | 0
.../test/rerank_client.py | 0
16 files changed, 64 insertions(+), 1 deletion(-)
create mode 100644 llamacpp-embedding-rerank-server/README.md
create mode 100644 llamacpp-embedding-rerank-server/docker-compose.yaml
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/.gitignore (100%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/app/embedding_api.py (100%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/app/embedding_onnx_provider.py (100%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/app/log_config.py (100%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/app/main.py (100%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/app/model_service.py (100%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/app/rerank_api.py (100%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/app/rerank_onnx_provider.py (100%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/requirements.txt (100%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/run.sh (69%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/test/embedding_client.py (100%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/test/http_client.py (100%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/test/model_test.py (100%)
rename {server/embedding-rerank-server => onnxruntime-embedding-rerank-server}/test/rerank_client.py (100%)
diff --git a/llamacpp-embedding-rerank-server/README.md b/llamacpp-embedding-rerank-server/README.md
new file mode 100644
index 0000000..478f3e7
--- /dev/null
+++ b/llamacpp-embedding-rerank-server/README.md
@@ -0,0 +1,27 @@
+# llama.cpp 部署 Embedding和Rerank模型
+
+## 下载模型
+
+`Embedding`: bge-m3
+
+`Rerank`: bge-reranker-v2-m3
+
+```shell
+cd /home
+mkdir models
+uv venv
+uv tool install modescope
+
+modelscope download --model gpustack/bge-m3-GGUF bge-m3-Q8_0.gguf --local_dir ./bge-m3-GGUF
+
+modescope modelscope download --model gpustack/bge-reranker-v2-m3-GGUF bge-reranker-v2-m3-Q8_0.gguf --local_dir ./bge-reranker-v2-m3-GGUF
+
+```
+
+## 部署模型
+
+```shell
+docker compose up -d
+```
+
+Embedding和Rerank模型服务支持标准OpenAI接口规范
\ No newline at end of file
diff --git a/llamacpp-embedding-rerank-server/docker-compose.yaml b/llamacpp-embedding-rerank-server/docker-compose.yaml
new file mode 100644
index 0000000..9b1b807
--- /dev/null
+++ b/llamacpp-embedding-rerank-server/docker-compose.yaml
@@ -0,0 +1,36 @@
+services:
+ llamacpp-embedding-server:
+ image: ghcr.io/ggml-org/llama.cpp:server
+ container_name: llamacpp-embedding-server
+ command: --embedding --pooling mean --verbose-prompt
+ restart: always
+ ports:
+ - 8081:8080
+ volumes:
+ - /home/models/bge-m3-GGUF:/models
+ environment:
+ LLAMA_ARG_MODEL: /models/bge-m3-Q8_0.gguf
+ LLAMA_ARG_CTX_SIZE: 8192
+ LLAMA_ARG_N_PARALLEL: 8
+ LLAMA_ARG_PORT: 8080
+ LLAMA_ARG_UBATCH: 8192
+ LLAMA_ARG_N_GPU_LAYERS_DRAFT: 0
+
+ llamacpp-rerank-server:
+ image: ghcr.io/ggml-org/llama.cpp:server
+ container_name: llamacpp-rerank-server
+ command: --reranking --pooling rank
+ restart: always
+ ports:
+ - 8082:8080
+ volumes:
+ - /home/models/bge-reranker-v2-m3-GGUF:/models
+ environment:
+ LLAMA_ARG_MODEL: /models/bge-reranker-v2-m3-Q8_0.gguf
+ LLAMA_ARG_CTX_SIZE: 8192
+ LLAMA_ARG_N_PARALLEL: 8
+ LLAMA_ARG_PORT: 8080
+ LLAMA_ARG_BATCH: 8192
+ LLAMA_ARG_UBATCH: 8192
+ LLAMA_ARG_FLASH_ATTN: enable
+ LLAMA_ARG_N_GPU_LAYERS_DRAFT: 0
diff --git a/server/embedding-rerank-server/.gitignore b/onnxruntime-embedding-rerank-server/.gitignore
similarity index 100%
rename from server/embedding-rerank-server/.gitignore
rename to onnxruntime-embedding-rerank-server/.gitignore
diff --git a/server/embedding-rerank-server/app/embedding_api.py b/onnxruntime-embedding-rerank-server/app/embedding_api.py
similarity index 100%
rename from server/embedding-rerank-server/app/embedding_api.py
rename to onnxruntime-embedding-rerank-server/app/embedding_api.py
diff --git a/server/embedding-rerank-server/app/embedding_onnx_provider.py b/onnxruntime-embedding-rerank-server/app/embedding_onnx_provider.py
similarity index 100%
rename from server/embedding-rerank-server/app/embedding_onnx_provider.py
rename to onnxruntime-embedding-rerank-server/app/embedding_onnx_provider.py
diff --git a/server/embedding-rerank-server/app/log_config.py b/onnxruntime-embedding-rerank-server/app/log_config.py
similarity index 100%
rename from server/embedding-rerank-server/app/log_config.py
rename to onnxruntime-embedding-rerank-server/app/log_config.py
diff --git a/server/embedding-rerank-server/app/main.py b/onnxruntime-embedding-rerank-server/app/main.py
similarity index 100%
rename from server/embedding-rerank-server/app/main.py
rename to onnxruntime-embedding-rerank-server/app/main.py
diff --git a/server/embedding-rerank-server/app/model_service.py b/onnxruntime-embedding-rerank-server/app/model_service.py
similarity index 100%
rename from server/embedding-rerank-server/app/model_service.py
rename to onnxruntime-embedding-rerank-server/app/model_service.py
diff --git a/server/embedding-rerank-server/app/rerank_api.py b/onnxruntime-embedding-rerank-server/app/rerank_api.py
similarity index 100%
rename from server/embedding-rerank-server/app/rerank_api.py
rename to onnxruntime-embedding-rerank-server/app/rerank_api.py
diff --git a/server/embedding-rerank-server/app/rerank_onnx_provider.py b/onnxruntime-embedding-rerank-server/app/rerank_onnx_provider.py
similarity index 100%
rename from server/embedding-rerank-server/app/rerank_onnx_provider.py
rename to onnxruntime-embedding-rerank-server/app/rerank_onnx_provider.py
diff --git a/server/embedding-rerank-server/requirements.txt b/onnxruntime-embedding-rerank-server/requirements.txt
similarity index 100%
rename from server/embedding-rerank-server/requirements.txt
rename to onnxruntime-embedding-rerank-server/requirements.txt
diff --git a/server/embedding-rerank-server/run.sh b/onnxruntime-embedding-rerank-server/run.sh
similarity index 69%
rename from server/embedding-rerank-server/run.sh
rename to onnxruntime-embedding-rerank-server/run.sh
index d05160a..851a96c 100644
--- a/server/embedding-rerank-server/run.sh
+++ b/onnxruntime-embedding-rerank-server/run.sh
@@ -1,4 +1,4 @@
-nohup python -u app/main.py > logs/app.log 2>&1 &
+nohup python -u app/main.py > app.log 2>&1 &
PID1=$!
# 生成close.sh脚本,写入kill命令
diff --git a/server/embedding-rerank-server/test/embedding_client.py b/onnxruntime-embedding-rerank-server/test/embedding_client.py
similarity index 100%
rename from server/embedding-rerank-server/test/embedding_client.py
rename to onnxruntime-embedding-rerank-server/test/embedding_client.py
diff --git a/server/embedding-rerank-server/test/http_client.py b/onnxruntime-embedding-rerank-server/test/http_client.py
similarity index 100%
rename from server/embedding-rerank-server/test/http_client.py
rename to onnxruntime-embedding-rerank-server/test/http_client.py
diff --git a/server/embedding-rerank-server/test/model_test.py b/onnxruntime-embedding-rerank-server/test/model_test.py
similarity index 100%
rename from server/embedding-rerank-server/test/model_test.py
rename to onnxruntime-embedding-rerank-server/test/model_test.py
diff --git a/server/embedding-rerank-server/test/rerank_client.py b/onnxruntime-embedding-rerank-server/test/rerank_client.py
similarity index 100%
rename from server/embedding-rerank-server/test/rerank_client.py
rename to onnxruntime-embedding-rerank-server/test/rerank_client.py
From ff0407f362c80ed86b5c0947938f1d564606bc6a Mon Sep 17 00:00:00 2001
From: szlele <595128841@qq.com>
Date: Thu, 12 Jun 2025 11:04:23 +0800
Subject: [PATCH 2/6] rag-mcp-server
---
rag-mcp-server | 1 +
1 file changed, 1 insertion(+)
create mode 160000 rag-mcp-server
diff --git a/rag-mcp-server b/rag-mcp-server
new file mode 160000
index 0000000..4da900e
--- /dev/null
+++ b/rag-mcp-server
@@ -0,0 +1 @@
+Subproject commit 4da900e3a77b9382e3eb0e8f363830571ceae1e8
From 11b9f6677bea838ecf6d397a26e8c4bf01b73dbe Mon Sep 17 00:00:00 2001
From: szlele <595128841@qq.com>
Date: Thu, 12 Jun 2025 11:07:33 +0800
Subject: [PATCH 3/6] rag-mivus-mcp-server
---
rag-mcp-server | 1 -
rag-milvus-mcp-server/.env | 4 +
rag-milvus-mcp-server/.gitignore | 10 +
rag-milvus-mcp-server/.python-version | 1 +
rag-milvus-mcp-server/README.md | 0
.../docker-compose-milvus.yaml | 66 ++
rag-milvus-mcp-server/embedding.py | 22 +
rag-milvus-mcp-server/http_json_client.py | 31 +
rag-milvus-mcp-server/main.py | 18 +
rag-milvus-mcp-server/milvus.py | 107 +++
rag-milvus-mcp-server/pyproject.toml | 11 +
rag-milvus-mcp-server/rerank.py | 34 +
rag-milvus-mcp-server/server.py | 49 ++
rag-milvus-mcp-server/setting.py | 36 +
rag-milvus-mcp-server/test.py | 8 +
rag-milvus-mcp-server/uv.lock | 671 ++++++++++++++++++
16 files changed, 1068 insertions(+), 1 deletion(-)
delete mode 160000 rag-mcp-server
create mode 100644 rag-milvus-mcp-server/.env
create mode 100644 rag-milvus-mcp-server/.gitignore
create mode 100644 rag-milvus-mcp-server/.python-version
create mode 100644 rag-milvus-mcp-server/README.md
create mode 100644 rag-milvus-mcp-server/docker-compose-milvus.yaml
create mode 100644 rag-milvus-mcp-server/embedding.py
create mode 100644 rag-milvus-mcp-server/http_json_client.py
create mode 100644 rag-milvus-mcp-server/main.py
create mode 100644 rag-milvus-mcp-server/milvus.py
create mode 100644 rag-milvus-mcp-server/pyproject.toml
create mode 100644 rag-milvus-mcp-server/rerank.py
create mode 100644 rag-milvus-mcp-server/server.py
create mode 100644 rag-milvus-mcp-server/setting.py
create mode 100644 rag-milvus-mcp-server/test.py
create mode 100644 rag-milvus-mcp-server/uv.lock
diff --git a/rag-mcp-server b/rag-mcp-server
deleted file mode 160000
index 4da900e..0000000
--- a/rag-mcp-server
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 4da900e3a77b9382e3eb0e8f363830571ceae1e8
diff --git a/rag-milvus-mcp-server/.env b/rag-milvus-mcp-server/.env
new file mode 100644
index 0000000..25d9931
--- /dev/null
+++ b/rag-milvus-mcp-server/.env
@@ -0,0 +1,4 @@
+
+
+# Enable or disable security authorization
+MILVUS_AUTHORIZATION_ENABLED=true
\ No newline at end of file
diff --git a/rag-milvus-mcp-server/.gitignore b/rag-milvus-mcp-server/.gitignore
new file mode 100644
index 0000000..505a3b1
--- /dev/null
+++ b/rag-milvus-mcp-server/.gitignore
@@ -0,0 +1,10 @@
+# Python-generated files
+__pycache__/
+*.py[oc]
+build/
+dist/
+wheels/
+*.egg-info
+
+# Virtual environments
+.venv
diff --git a/rag-milvus-mcp-server/.python-version b/rag-milvus-mcp-server/.python-version
new file mode 100644
index 0000000..e4fba21
--- /dev/null
+++ b/rag-milvus-mcp-server/.python-version
@@ -0,0 +1 @@
+3.12
diff --git a/rag-milvus-mcp-server/README.md b/rag-milvus-mcp-server/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/rag-milvus-mcp-server/docker-compose-milvus.yaml b/rag-milvus-mcp-server/docker-compose-milvus.yaml
new file mode 100644
index 0000000..8896c06
--- /dev/null
+++ b/rag-milvus-mcp-server/docker-compose-milvus.yaml
@@ -0,0 +1,66 @@
+services:
+ # Milvus vector database services
+ milvus-etcd:
+ container_name: milvus-etcd
+ image: quay.io/coreos/etcd:v3.5.5
+ environment:
+ ETCD_AUTO_COMPACTION_MODE: ${ETCD_AUTO_COMPACTION_MODE:-revision}
+ ETCD_AUTO_COMPACTION_RETENTION: ${ETCD_AUTO_COMPACTION_RETENTION:-1000}
+ ETCD_QUOTA_BACKEND_BYTES: ${ETCD_QUOTA_BACKEND_BYTES:-4294967296}
+ ETCD_SNAPSHOT_COUNT: ${ETCD_SNAPSHOT_COUNT:-50000}
+ volumes:
+ - ./volumes/milvus/etcd:/etcd
+ command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
+ healthcheck:
+ test: [ 'CMD', 'etcdctl', 'endpoint', 'health' ]
+ interval: 30s
+ timeout: 20s
+ retries: 3
+ networks:
+ - milvus
+
+ milvus-minio:
+ container_name: milvus-minio
+ image: minio/minio:RELEASE.2023-03-20T20-16-18Z
+ environment:
+ MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin}
+ MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin}
+ volumes:
+ - ./volumes/milvus/minio:/minio_data
+ command: minio server /minio_data --console-address ":9001"
+ healthcheck:
+ test: [ 'CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live' ]
+ interval: 30s
+ timeout: 20s
+ retries: 3
+ networks:
+ - milvus
+
+ milvus-standalone:
+ container_name: milvus-standalone
+ image: milvusdb/milvus:v2.5.0-beta
+ command: [ 'milvus', 'run', 'standalone' ]
+ environment:
+ ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-milvus-etcd:2379}
+ MINIO_ADDRESS: ${MINIO_ADDRESS:-milvus-minio:9000}
+ common.security.authorizationEnabled: ${MILVUS_AUTHORIZATION_ENABLED:-true}
+ volumes:
+ - ./volumes/milvus/milvus:/var/lib/milvus
+ healthcheck:
+ test: [ 'CMD', 'curl', '-f', 'http://localhost:9091/healthz' ]
+ interval: 30s
+ start_period: 90s
+ timeout: 20s
+ retries: 3
+ depends_on:
+ - etcd
+ - minio
+ ports:
+ - 19530:19530
+ - 9091:9091
+ networks:
+ - milvus
+
+networks:
+ milvus:
+ driver: bridge
\ No newline at end of file
diff --git a/rag-milvus-mcp-server/embedding.py b/rag-milvus-mcp-server/embedding.py
new file mode 100644
index 0000000..bf90cf7
--- /dev/null
+++ b/rag-milvus-mcp-server/embedding.py
@@ -0,0 +1,22 @@
+from abc import ABC, abstractmethod
+from typing import Union,List
+from http_json_client import HTTPJSONClient
+
+class EmbeddingClient(ABC,HTTPJSONClient):
+
+ @abstractmethod
+ def text_embedding(self, text: Union[str,List[str]]) -> Union[List,List[List]]:
+ pass
+
+class OpenAIEmbeddingClient(EmbeddingClient):
+
+ def __init__(self,base_url: str):
+ super().__init__(base_url)
+ self.endpoint = "/v1/embeddings"
+
+ def text_embedding(self, text: Union[str,List[str]]) -> Union[List,List[List]]:
+ result = self.post(self.endpoint,data= {"input":text})
+ data = result['data']
+ if isinstance(text,List):
+ return [dd['embedding'] for dd in data]
+ return data[0]['embedding']
\ No newline at end of file
diff --git a/rag-milvus-mcp-server/http_json_client.py b/rag-milvus-mcp-server/http_json_client.py
new file mode 100644
index 0000000..387428a
--- /dev/null
+++ b/rag-milvus-mcp-server/http_json_client.py
@@ -0,0 +1,31 @@
+from typing import Dict,Any
+import requests
+
+
+class HTTPJSONClient:
+
+ def __init__(self,base_url: str):
+ self.base_url = base_url
+ self.session = requests.Session()
+ self.session.headers.update({
+ "Content-Type": "application/json",
+ "Accept": "application/json"
+ })
+
+ def post(self, endpoint: str, data: Dict[str, Any]) -> Dict[str, Any]:
+ base_url = self.base_url
+ if endpoint.startswith("/"):
+ endpoint = endpoint[1:]
+ if base_url.endswith("/"):
+ base_url = base_url[:-1]
+
+ url = f"{base_url}/{endpoint}"
+ try:
+ response = self.session.post(url, json=data)
+ return self._handle_response(response)
+ except requests.RequestException as e:
+ raise ValueError(f"Request failed: {str(e)}")
+
+ def _handle_response(self, response: requests.Response) -> Dict[str, Any]:
+ response.raise_for_status()
+ return response.json()
\ No newline at end of file
diff --git a/rag-milvus-mcp-server/main.py b/rag-milvus-mcp-server/main.py
new file mode 100644
index 0000000..c65a573
--- /dev/null
+++ b/rag-milvus-mcp-server/main.py
@@ -0,0 +1,18 @@
+import argparse
+from dotenv import load_dotenv
+from server import mcp
+
+def parse_arguments():
+ # 解析命令行参数
+ parser = argparse.ArgumentParser(description="Rag-Mcp-Server")
+ parser.add_argument("--transport", choices=["stdio", "sse"], default="sse")
+
+ return parser.parse_args()
+
+if __name__ == "__main__":
+ # 加载.env文件
+ load_dotenv()
+ # 解析命令行参数
+ args = parse_arguments()
+ mcp.run(transport=args.transport)
+
diff --git a/rag-milvus-mcp-server/milvus.py b/rag-milvus-mcp-server/milvus.py
new file mode 100644
index 0000000..7c862c2
--- /dev/null
+++ b/rag-milvus-mcp-server/milvus.py
@@ -0,0 +1,107 @@
+from pymilvus import DataType, MilvusClient
+from pydantic import BaseModel
+from pymilvus.milvus_client import IndexParams
+from pymilvus.orm.schema import CollectionSchema
+from typing import Any, Optional,Dict,List
+from setting import MilvusSettings,RagSettings
+from embedding import EmbeddingClient
+
+Metadata = Dict[str, Any]
+
+class Entry(BaseModel):
+
+ content: str
+ metadata: Optional[Metadata] = None
+
+class MilvusConnector:
+ def __init__(self,
+ milvus_settings: MilvusSettings,
+ embedding_client: EmbeddingClient,
+ rag_settings: Optional[RagSettings] = None):
+ # 创建MilvusClient
+ self.client = MilvusClient(uri=milvus_settings.uri,
+ user=milvus_settings.user,
+ password=milvus_settings.password,
+ token=milvus_settings.token,
+ db_name=milvus_settings.db_name)
+
+ self.embedding_client = embedding_client
+ self.collection_name = rag_settings.collection_name
+ if rag_settings and not self.has_collection(rag_settings.collection_name):
+ # 定义schema,默认已存在id,vector字段,这里只需要定义document字段
+ schema = CollectionSchema()
+ schema.add_field("document", DataType.VARCHAR)
+ schema.add_field("metadata", DataType.JSON, nullable=True)
+ # 定义index
+ index_params = IndexParams()
+ index_params.add_index("vector","AUTOINDEX","vector_index")
+ self.create_collection(collection=rag_settings.collection_name,
+ dim=rag_settings.vector_dim,
+ schema= schema,
+ index_params=index_params
+ )
+
+ async def has_collection(self,collection_name: str) -> list[str]:
+ """查询是否存在collection"""
+ try:
+ return self.client.has_collection(collection_name)
+ except Exception as e:
+ raise ValueError(f"Failed to list collections: {str(e)}")
+
+ async def create_collection(self, collection_name: str, dim: int = 128, schema: Optional[CollectionSchema] = None, index_params: Optional[IndexParams] = None,) -> bool:
+ """从指定的schema创建collection"""
+ try:
+ # 检查collection是否已存在
+ if self.has_collection(collection_name):
+ raise ValueError(f"Collection '{collection_name}' already exists")
+ # 创建collection
+ self.client.create_collection(
+ collection_name=collection_name,
+ dimension=dim,
+ auto_id=True,
+ schema=schema,
+ index_params = index_params,
+ consistency_level = "Strong",
+ )
+ return True
+ except Exception as e:
+ raise ValueError(f"Failed to create collection: {str(e)}")
+
+ async def insert_data(self, entry: Entry) -> dict[str, Any]:
+ """插入数据到collection中"""
+ try:
+ vector = self.embedding_client.text_embedding(entry.content)
+ data = {
+ "document": entry.content,
+ "metadata": entry.metadata,
+ "vector": vector
+ }
+ return self.client.insert(collection_name=self.collection_name, data=data)
+ except Exception as e:
+ raise ValueError(f"Insert failed: {str(e)}")
+
+ async def search_collection(self, query_text: str, top_n: int = 5, score:float = 0.3) -> list[dict]:
+ """指定collection进行文本搜索"""
+ search_params = {"metric_type": "COSINE", "params": {"nprobe": 10}}
+ vector_data = self.embedding_client.text_embedding(query_text)
+ try:
+ result:List[List[dict]] = self.client.search(
+ collection_name=self.collection_name,
+ data=vector_data,
+ anns_field="vector",
+ search_params=search_params,
+ limit=20,
+ output_fields=["document"],
+ )
+ except Exception as e:
+ raise ValueError(f"Vector search failed: {str(e)}")
+
+ @classmethod
+ async def from_settings(cls,milvus_settings: MilvusSettings,rag_settings: RagSettings):
+ return cls(
+
+ )
+
+class MilvusContext:
+ def __init__(self, connector: MilvusConnector):
+ self.connector = connector
\ No newline at end of file
diff --git a/rag-milvus-mcp-server/pyproject.toml b/rag-milvus-mcp-server/pyproject.toml
new file mode 100644
index 0000000..bc2fd35
--- /dev/null
+++ b/rag-milvus-mcp-server/pyproject.toml
@@ -0,0 +1,11 @@
+[project]
+name = "rag-mcp-server"
+version = "0.1.0"
+description = "MCP server for retrieving context from a milvus vector database"
+readme = "README.md"
+requires-python = ">=3.12"
+dependencies = [
+ "mcp[cli]>=1.9.3",
+ "pymilvus>=2.5.10",
+ "requests>=2.32.3",
+]
diff --git a/rag-milvus-mcp-server/rerank.py b/rag-milvus-mcp-server/rerank.py
new file mode 100644
index 0000000..63ecbd3
--- /dev/null
+++ b/rag-milvus-mcp-server/rerank.py
@@ -0,0 +1,34 @@
+from abc import ABC, abstractmethod
+from typing import Dict,Any,List
+from http_json_client import HTTPJSONClient
+
+class RerankClient(ABC,HTTPJSONClient):
+
+ @abstractmethod
+ def documents_rerank(self, query:str, documents: List[str], min_score:float) -> List[Dict[str, Any]]:
+ pass
+
+class OpenAIRerankClient(RerankClient):
+
+ def __init__(self,base_url: str):
+ super().__init__(base_url)
+ self.endpoint = "/v1/rerank"
+
+ def documents_rerank(self, query:str, documents: List[str]) -> List[Dict[str, Any]]:
+
+ result = self.post(self.endpoint,data= {"query": query, "documents": documents})
+ return result['results']
+
+"""
+{
+ 'model': 'gpt-3.5-turbo',
+ 'object': 'list',
+ 'usage': {'prompt_tokens': 246, 'total_tokens': 246},
+ 'results': [
+ {'index': 0, 'relevance_score': -3.395951271057129},
+ {'index': 1, 'relevance_score': -1.8673471212387085},
+ {'index': 2, 'relevance_score': 8.277612686157227},
+ {'index': 3, 'relevance_score': -11.033196449279785}
+ ]
+}
+"""
\ No newline at end of file
diff --git a/rag-milvus-mcp-server/server.py b/rag-milvus-mcp-server/server.py
new file mode 100644
index 0000000..b6868f3
--- /dev/null
+++ b/rag-milvus-mcp-server/server.py
@@ -0,0 +1,49 @@
+import json
+from typing import AsyncIterator, Optional, List
+from contextlib import asynccontextmanager
+from mcp.server.fastmcp import Context, FastMCP
+from milvus import MilvusContext,MilvusConnector,Metadata,Entry
+from setting import TOOL_STORE_DESCRIPTION,TOOL_SEARCH_DESCRIPTION
+
+@asynccontextmanager
+async def server_lifespan(server: FastMCP) -> AsyncIterator[MilvusContext]:
+ """Milvus 连接 生命周期管理"""
+ config = server.config
+
+ connector = MilvusConnector(
+ uri=config.get("milvus_uri", "http://localhost:19530"),
+ token=config.get("milvus_token"),
+ db_name=config.get("db_name", "default"),
+ )
+
+ try:
+ yield MilvusContext(connector)
+ finally:
+ pass
+
+mcp = FastMCP("Rag-Mcp-Server", lifespan=server_lifespan)
+
+@mcp.tool(name="milvus-store", description=TOOL_STORE_DESCRIPTION)
+async def store(ctx: Context, information: str, metadata: Optional[Metadata] = None,) -> str:
+ connector:MilvusConnector = ctx.request_context.lifespan_context.connector
+ entry = Entry(content=information, metadata=metadata)
+ connector.insert_data(entry)
+ return f"Remembered: {information}"
+
+
+@mcp.tool(name="milvus-search", description=TOOL_SEARCH_DESCRIPTION)
+async def search(ctx: Context, query: str, top_n: int = 5, score:float = 0.3) -> List[str]:
+ connector:MilvusConnector = ctx.request_context.lifespan_context.connector
+
+ entries = connector.search_collection(query, top_n, score)
+ if not entries and len(entries) > 0:
+ return [f"No information searched for the query '{query}'"]
+
+ content = [f"Results for the query '{query}':"]
+ for entry in entries:
+ # 生成一个xml格式的结果,让LLM模型更容易解析
+ entry_metadata = json.dumps(entry.metadata) if entry.metadata else ""
+ content.append(f"{entry.content}{entry_metadata}")
+ return content
+
+
diff --git a/rag-milvus-mcp-server/setting.py b/rag-milvus-mcp-server/setting.py
new file mode 100644
index 0000000..cea66fe
--- /dev/null
+++ b/rag-milvus-mcp-server/setting.py
@@ -0,0 +1,36 @@
+from pydantic import Field
+from pydantic_settings import BaseSettings
+from typing import Optional
+
+TOOL_STORE_DESCRIPTION = """
+将文档存储到Milvus以供后续检索。
+
+输入参数:
+1. 'information' 参数应包含自然语言的文档内容,文本长度小于8000。
+2. 'metadata' 参数是一个Python字典,键为字符串,可以存储与该文档相关的元数据。
+"""
+
+TOOL_SEARCH_DESCRIPTION = """
+从Milvus中使用自然语言形式的文本来搜索相似性文档。
+
+输入参数:
+1. 'query' 参数应该描述你正在寻找的内容,文本长度小于8000,该工具将返回最相关的文档。
+2. 'top_n' 参数:要返回相似度最高的前n个文档,字段类型是int,默认值:5。
+2. 'score' 参数:要返回相似度大于或等于score的文档,字段类型是float,默认值:0.3。
+"""
+
+class MilvusSettings(BaseSettings):
+ """
+ Configuration for Tablestore.
+ """
+
+ uri: Optional[str] = Field(default= 'http://localhost:19530',validation_alias="MILVUS_URI")
+ user: Optional[str] = Field(default= '',validation_alias="MILVUS_USER")
+ password: Optional[str] = Field(default= '',validation_alias="MILVUS_PASSWORD")
+ token: Optional[str] = Field(default= '',validation_alias="MILVUS_TOKEN")
+ db_name: Optional[str] = Field(default= 'default',validation_alias="MILVUS_DB_NAME")
+
+class RagSettings(BaseSettings):
+ collection_name: str = Field(default="rag_mcp_server", validation_alias="RAG_COLLECTION_NAME")
+ vector_dim: int = Field(default=768, validation_alias="RAG_VECTOR_DIMENSION")
+
\ No newline at end of file
diff --git a/rag-milvus-mcp-server/test.py b/rag-milvus-mcp-server/test.py
new file mode 100644
index 0000000..e23cfd9
--- /dev/null
+++ b/rag-milvus-mcp-server/test.py
@@ -0,0 +1,8 @@
+from embedding import EmbeddingClient,OpenAIEmbeddingClient
+
+client:EmbeddingClient = OpenAIEmbeddingClient("http://192.168.0.160:8081")
+
+if __name__ == "__main__":
+ text = ["Hello World","China"]
+ res = client.text_embedding(text)
+ print(res)
diff --git a/rag-milvus-mcp-server/uv.lock b/rag-milvus-mcp-server/uv.lock
new file mode 100644
index 0000000..1b139ab
--- /dev/null
+++ b/rag-milvus-mcp-server/uv.lock
@@ -0,0 +1,671 @@
+version = 1
+revision = 2
+requires-python = ">=3.12"
+
+[[package]]
+name = "annotated-types"
+version = "0.7.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53" },
+]
+
+[[package]]
+name = "anyio"
+version = "4.9.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "idna" },
+ { name = "sniffio" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" },
+]
+
+[[package]]
+name = "certifi"
+version = "2025.4.26"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3" },
+]
+
+[[package]]
+name = "charset-normalizer"
+version = "3.4.2"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0" },
+]
+
+[[package]]
+name = "click"
+version = "8.2.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "colorama", marker = "sys_platform == 'win32'" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" },
+]
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" },
+]
+
+[[package]]
+name = "grpcio"
+version = "1.67.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/20/53/d9282a66a5db45981499190b77790570617a604a38f3d103d0400974aeb5/grpcio-1.67.1.tar.gz", hash = "sha256:3dc2ed4cabea4dc14d5e708c2b426205956077cc5de419b4d4079315017e9732" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6e/25/6f95bd18d5f506364379eabc0d5874873cc7dbdaf0757df8d1e82bc07a88/grpcio-1.67.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:267d1745894200e4c604958da5f856da6293f063327cb049a51fe67348e4f953" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/10/3f/d79e32e5d0354be33a12db2267c66d3cfeff700dd5ccdd09fd44a3ff4fb6/grpcio-1.67.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:85f69fdc1d28ce7cff8de3f9c67db2b0ca9ba4449644488c1e0303c146135ddb" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/21/f2/36fbc14b3542e3a1c20fb98bd60c4732c55a44e374a4eb68f91f28f14aab/grpcio-1.67.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f26b0b547eb8d00e195274cdfc63ce64c8fc2d3e2d00b12bf468ece41a0423a0" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0d/af/bbc1305df60c4e65de8c12820a942b5e37f9cf684ef5e49a63fbb1476a73/grpcio-1.67.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4422581cdc628f77302270ff839a44f4c24fdc57887dc2a45b7e53d8fc2376af" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/92/cf/1d4c3e93efa93223e06a5c83ac27e32935f998bc368e276ef858b8883154/grpcio-1.67.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d7616d2ded471231c701489190379e0c311ee0a6c756f3c03e6a62b95a7146e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ae/ca/26195b66cb253ac4d5ef59846e354d335c9581dba891624011da0e95d67b/grpcio-1.67.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8a00efecde9d6fcc3ab00c13f816313c040a28450e5e25739c24f432fc6d3c75" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d1/94/16550ad6b3f13b96f0856ee5dfc2554efac28539ee84a51d7b14526da985/grpcio-1.67.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:699e964923b70f3101393710793289e42845791ea07565654ada0969522d0a38" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/33/0d/4c3b2587e8ad7f121b597329e6c2620374fccbc2e4e1aa3c73ccc670fde4/grpcio-1.67.1-cp312-cp312-win32.whl", hash = "sha256:4e7b904484a634a0fff132958dabdb10d63e0927398273917da3ee103e8d1f78" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/7d/36/0c03e2d80db69e2472cf81c6123aa7d14741de7cf790117291a703ae6ae1/grpcio-1.67.1-cp312-cp312-win_amd64.whl", hash = "sha256:5721e66a594a6c4204458004852719b38f3d5522082be9061d6510b455c90afc" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/12/d2/2f032b7a153c7723ea3dea08bffa4bcaca9e0e5bdf643ce565b76da87461/grpcio-1.67.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:aa0162e56fd10a5547fac8774c4899fc3e18c1aa4a4759d0ce2cd00d3696ea6b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d0/ae/ea2ff6bd2475a082eb97db1104a903cf5fc57c88c87c10b3c3f41a184fc0/grpcio-1.67.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:beee96c8c0b1a75d556fe57b92b58b4347c77a65781ee2ac749d550f2a365dc1" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/07/62/646be83d1a78edf8d69b56647327c9afc223e3140a744c59b25fbb279c3b/grpcio-1.67.1-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:a93deda571a1bf94ec1f6fcda2872dad3ae538700d94dc283c672a3b508ba3af" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d0/25/71513d0a1b2072ce80d7f5909a93596b7ed10348b2ea4fdcbad23f6017bf/grpcio-1.67.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e6f255980afef598a9e64a24efce87b625e3e3c80a45162d111a461a9f92955" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/76/9a/d21236297111052dcb5dc85cd77dc7bf25ba67a0f55ae028b2af19a704bc/grpcio-1.67.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e838cad2176ebd5d4a8bb03955138d6589ce9e2ce5d51c3ada34396dbd2dba8" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2d/fe/70b1da9037f5055be14f359026c238821b9bcf6ca38a8d760f59a589aacd/grpcio-1.67.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a6703916c43b1d468d0756c8077b12017a9fcb6a1ef13faf49e67d20d7ebda62" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/74/0d/7df509a2cd2a54814598caf2fb759f3e0b93764431ff410f2175a6efb9e4/grpcio-1.67.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:917e8d8994eed1d86b907ba2a61b9f0aef27a2155bca6cbb322430fc7135b7bb" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0a/08/bc3b0155600898fd10f16b79054e1cca6cb644fa3c250c0fe59385df5e6f/grpcio-1.67.1-cp313-cp313-win32.whl", hash = "sha256:e279330bef1744040db8fc432becc8a727b84f456ab62b744d3fdb83f327e121" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/5a/96/44759eca966720d0f3e1b105c43f8ad4590c97bf8eb3cd489656e9590baa/grpcio-1.67.1-cp313-cp313-win_amd64.whl", hash = "sha256:fa0c739ad8b1996bd24823950e3cb5152ae91fca1c09cc791190bf1627ffefba" },
+]
+
+[[package]]
+name = "h11"
+version = "0.16.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" },
+]
+
+[[package]]
+name = "httpcore"
+version = "1.0.9"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "certifi" },
+ { name = "h11" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55" },
+]
+
+[[package]]
+name = "httpx"
+version = "0.28.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "anyio" },
+ { name = "certifi" },
+ { name = "httpcore" },
+ { name = "idna" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" },
+]
+
+[[package]]
+name = "httpx-sse"
+version = "0.4.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/4c/60/8f4281fa9bbf3c8034fd54c0e7412e66edbab6bc74c4996bd616f8d0406e/httpx-sse-0.4.0.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f" },
+]
+
+[[package]]
+name = "idna"
+version = "3.10"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" },
+]
+
+[[package]]
+name = "markdown-it-py"
+version = "3.0.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "mdurl" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1" },
+]
+
+[[package]]
+name = "mcp"
+version = "1.9.3"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "anyio" },
+ { name = "httpx" },
+ { name = "httpx-sse" },
+ { name = "pydantic" },
+ { name = "pydantic-settings" },
+ { name = "python-multipart" },
+ { name = "sse-starlette" },
+ { name = "starlette" },
+ { name = "uvicorn", marker = "sys_platform != 'emscripten'" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f2/df/8fefc0c6c7a5c66914763e3ff3893f9a03435628f6625d5e3b0dc45d73db/mcp-1.9.3.tar.gz", hash = "sha256:587ba38448e81885e5d1b84055cfcc0ca56d35cd0c58f50941cab01109405388" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/79/45/823ad05504bea55cb0feb7470387f151252127ad5c72f8882e8fe6cf5c0e/mcp-1.9.3-py3-none-any.whl", hash = "sha256:69b0136d1ac9927402ed4cf221d4b8ff875e7132b0b06edd446448766f34f9b9" },
+]
+
+[package.optional-dependencies]
+cli = [
+ { name = "python-dotenv" },
+ { name = "typer" },
+]
+
+[[package]]
+name = "mdurl"
+version = "0.1.2"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8" },
+]
+
+[[package]]
+name = "milvus-lite"
+version = "2.4.12"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "tqdm" },
+]
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/64/3a/110e46db650ced604f97307e48e353726cfa6d26b1bf72acb81bbf07ecbd/milvus_lite-2.4.12-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:e8d4f7cdd5f731efd6faeee3715d280fd91a5f9b4d89312664d56401f65b1473" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a5/a7/11c21f2d6f3299ad07af8142b007e4297ff12d4bdc53e1e1ba48f661954b/milvus_lite-2.4.12-py3-none-macosx_11_0_arm64.whl", hash = "sha256:20087663e7b4385050b7ad08f1f03404426d4c87b1ff91d5a8723eee7fd49e88" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a8/cc/b6f465e984439adf24da0a8ff3035d5c9ece30b6ff19f9a53f73f9ef901a/milvus_lite-2.4.12-py3-none-manylinux2014_aarch64.whl", hash = "sha256:a0f3a5ddbfd19f4a6b842b2fd3445693c796cde272b701a1646a94c1ac45d3d7" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/44/43/b3f6e9defd1f3927b972beac7abe3d5b4a3bdb287e3bad69618e2e76cf0a/milvus_lite-2.4.12-py3-none-manylinux2014_x86_64.whl", hash = "sha256:334037ebbab60243b5d8b43d54ca2f835d81d48c3cda0c6a462605e588deb05d" },
+]
+
+[[package]]
+name = "numpy"
+version = "2.3.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f3/db/8e12381333aea300890829a0a36bfa738cac95475d88982d538725143fd9/numpy-2.3.0.tar.gz", hash = "sha256:581f87f9e9e9db2cba2141400e160e9dd644ee248788d6f90636eeb8fd9260a6" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/89/59/9df493df81ac6f76e9f05cdbe013cdb0c9a37b434f6e594f5bd25e278908/numpy-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:389b85335838155a9076e9ad7f8fdba0827496ec2d2dc32ce69ce7898bde03ba" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2f/86/4ff04335901d6cf3a6bb9c748b0097546ae5af35e455ae9b962ebff4ecd7/numpy-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9498f60cd6bb8238d8eaf468a3d5bb031d34cd12556af53510f05fcf581c1b7e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/71/8d/a942cd4f959de7f08a79ab0c7e6cecb7431d5403dce78959a726f0f57aa1/numpy-2.3.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:622a65d40d8eb427d8e722fd410ac3ad4958002f109230bc714fa551044ebae2" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/86/5d/45850982efc7b2c839c5626fb67fbbc520d5b0d7c1ba1ae3651f2f74c296/numpy-2.3.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:b9446d9d8505aadadb686d51d838f2b6688c9e85636a0c3abaeb55ed54756459" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/1a/c0/c871d4a83f93b00373d3eebe4b01525eee8ef10b623a335ec262b58f4dc1/numpy-2.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:50080245365d75137a2bf46151e975de63146ae6d79f7e6bd5c0e85c9931d06a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b7/f6/bc47f5fa666d5ff4145254f9e618d56e6a4ef9b874654ca74c19113bb538/numpy-2.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c24bb4113c66936eeaa0dc1e47c74770453d34f46ee07ae4efd853a2ed1ad10a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f5/b4/65f48009ca0c9b76df5f404fccdea5a985a1bb2e34e97f21a17d9ad1a4ba/numpy-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4d8d294287fdf685281e671886c6dcdf0291a7c19db3e5cb4178d07ccf6ecc67" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f1/62/5367855a2018578e9334ed08252ef67cc302e53edc869666f71641cad40b/numpy-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6295f81f093b7f5769d1728a6bd8bf7466de2adfa771ede944ce6711382b89dc" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d4/75/5baed8cd867eabee8aad1e74d7197d73971d6a3d40c821f1848b8fab8b84/numpy-2.3.0-cp312-cp312-win32.whl", hash = "sha256:e6648078bdd974ef5d15cecc31b0c410e2e24178a6e10bf511e0557eed0f2570" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/bc/49/d5781eaa1a15acb3b3a3f49dc9e2ff18d92d0ce5c2976f4ab5c0a7360250/numpy-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:0898c67a58cdaaf29994bc0e2c65230fd4de0ac40afaf1584ed0b02cd74c6fdd" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c2/1c/6d343e030815c7c97a1f9fbad00211b47717c7fe446834c224bd5311e6f1/numpy-2.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:bd8df082b6c4695753ad6193018c05aac465d634834dca47a3ae06d4bb22d9ea" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/73/fc/1d67f751fd4dbafc5780244fe699bc4084268bad44b7c5deb0492473127b/numpy-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5754ab5595bfa2c2387d241296e0381c21f44a4b90a776c3c1d39eede13a746a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e8/95/73ffdb69e5c3f19ec4530f8924c4386e7ba097efc94b9c0aff607178ad94/numpy-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d11fa02f77752d8099573d64e5fe33de3229b6632036ec08f7080f46b6649959" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/64/d5/06d4bb31bb65a1d9c419eb5676173a2f90fd8da3c59f816cc54c640ce265/numpy-2.3.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:aba48d17e87688a765ab1cd557882052f238e2f36545dfa8e29e6a91aef77afe" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/12/8b/6c2cef44f8ccdc231f6b56013dff1d71138c48124334aded36b1a1b30c5a/numpy-2.3.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4dc58865623023b63b10d52f18abaac3729346a7a46a778381e0e3af4b7f3beb" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/62/aa/fca4bf8de3396ddb59544df9b75ffe5b73096174de97a9492d426f5cd4aa/numpy-2.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:df470d376f54e052c76517393fa443758fefcdd634645bc9c1f84eafc67087f0" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/1c/12/734dce1087eed1875f2297f687e671cfe53a091b6f2f55f0c7241aad041b/numpy-2.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:87717eb24d4a8a64683b7a4e91ace04e2f5c7c77872f823f02a94feee186168f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/48/03/ffa41ade0e825cbcd5606a5669962419528212a16082763fc051a7247d76/numpy-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d8fa264d56882b59dcb5ea4d6ab6f31d0c58a57b41aec605848b6eb2ef4a43e8" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/07/58/869398a11863310aee0ff85a3e13b4c12f20d032b90c4b3ee93c3b728393/numpy-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e651756066a0eaf900916497e20e02fe1ae544187cb0fe88de981671ee7f6270" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2f/8a/5756935752ad278c17e8a061eb2127c9a3edf4ba2c31779548b336f23c8d/numpy-2.3.0-cp313-cp313-win32.whl", hash = "sha256:e43c3cce3b6ae5f94696669ff2a6eafd9a6b9332008bafa4117af70f4b88be6f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/08/60/61d60cf0dfc0bf15381eaef46366ebc0c1a787856d1db0c80b006092af84/numpy-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:81ae0bf2564cf475f94be4a27ef7bcf8af0c3e28da46770fc904da9abd5279b5" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/66/31/2f2f2d2b3e3c32d5753d01437240feaa32220b73258c9eef2e42a0832866/numpy-2.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:c8738baa52505fa6e82778580b23f945e3578412554d937093eac9205e845e6e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f1/89/c7828f23cc50f607ceb912774bb4cff225ccae7131c431398ad8400e2c98/numpy-2.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:39b27d8b38942a647f048b675f134dd5a567f95bfff481f9109ec308515c51d8" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/dd/46/79ecf47da34c4c50eedec7511e53d57ffdfd31c742c00be7dc1d5ffdb917/numpy-2.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0eba4a1ea88f9a6f30f56fdafdeb8da3774349eacddab9581a21234b8535d3d3" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/59/44/f6caf50713d6ff4480640bccb2a534ce1d8e6e0960c8f864947439f0ee95/numpy-2.3.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:b0f1f11d0a1da54927436505a5a7670b154eac27f5672afc389661013dfe3d4f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a6/43/e1fd1aca7c97e234dd05e66de4ab7a5be54548257efcdd1bc33637e72102/numpy-2.3.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:690d0a5b60a47e1f9dcec7b77750a4854c0d690e9058b7bef3106e3ae9117808" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/84/89/f76f93b06a03177c0faa7ca94d0856c4e5c4bcaf3c5f77640c9ed0303e1c/numpy-2.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8b51ead2b258284458e570942137155978583e407babc22e3d0ed7af33ce06f8" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/aa/f5/4858c3e9ff7a7d64561b20580cf7cc5d085794bd465a19604945d6501f6c/numpy-2.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:aaf81c7b82c73bd9b45e79cfb9476cb9c29e937494bfe9092c26aece812818ad" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/08/17/0e3b4182e691a10e9483bcc62b4bb8693dbf9ea5dc9ba0b77a60435074bb/numpy-2.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f420033a20b4f6a2a11f585f93c843ac40686a7c3fa514060a97d9de93e5e72b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/4e/d5/463279fda028d3c1efa74e7e8d507605ae87f33dbd0543cf4c4527c8b882/numpy-2.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d344ca32ab482bcf8735d8f95091ad081f97120546f3d250240868430ce52555" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0e/1e/7a9d98c886d4c39a2b4d3a7c026bffcf8fbcaf518782132d12a301cfc47a/numpy-2.3.0-cp313-cp313t-win32.whl", hash = "sha256:48a2e8eaf76364c32a1feaa60d6925eaf32ed7a040183b807e02674305beef61" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fe/ab/66fc909931d5eb230107d016861824f335ae2c0533f422e654e5ff556784/numpy-2.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ba17f93a94e503551f154de210e4d50c5e3ee20f7e7a1b5f6ce3f22d419b93bb" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ee/e8/2c8a1c9e34d6f6d600c83d5ce5b71646c32a13f34ca5c518cc060639841c/numpy-2.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:f14e016d9409680959691c109be98c436c6249eaf7f118b424679793607b5944" },
+]
+
+[[package]]
+name = "pandas"
+version = "2.3.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "numpy" },
+ { name = "python-dateutil" },
+ { name = "pytz" },
+ { name = "tzdata" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/72/51/48f713c4c728d7c55ef7444ba5ea027c26998d96d1a40953b346438602fc/pandas-2.3.0.tar.gz", hash = "sha256:34600ab34ebf1131a7613a260a61dbe8b62c188ec0ea4c296da7c9a06b004133" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/94/46/24192607058dd607dbfacdd060a2370f6afb19c2ccb617406469b9aeb8e7/pandas-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2eb4728a18dcd2908c7fccf74a982e241b467d178724545a48d0caf534b38ebf" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/9f/cc/ae8ea3b800757a70c9fdccc68b67dc0280a6e814efcf74e4211fd5dea1ca/pandas-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9d8c3187be7479ea5c3d30c32a5d73d62a621166675063b2edd21bc47614027" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d8/ba/a7883d7aab3d24c6540a2768f679e7414582cc389876d469b40ec749d78b/pandas-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ff730713d4c4f2f1c860e36c005c7cefc1c7c80c21c0688fd605aa43c9fcf09" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/01/a5/931fc3ad333d9d87b10107d948d757d67ebcfc33b1988d5faccc39c6845c/pandas-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba24af48643b12ffe49b27065d3babd52702d95ab70f50e1b34f71ca703e2c0d" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d7/bf/0213986830a92d44d55153c1d69b509431a972eb73f204242988c4e66e86/pandas-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:404d681c698e3c8a40a61d0cd9412cc7364ab9a9cc6e144ae2992e11a2e77a20" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a4/0e/21eb48a3a34a7d4bac982afc2c4eb5ab09f2d988bdf29d92ba9ae8e90a79/pandas-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6021910b086b3ca756755e86ddc64e0ddafd5e58e076c72cb1585162e5ad259b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/1f/d9/74017c4eec7a28892d8d6e31ae9de3baef71f5a5286e74e6b7aad7f8c837/pandas-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:094e271a15b579650ebf4c5155c05dcd2a14fd4fdd72cf4854b2f7ad31ea30be" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d3/57/5cb75a56a4842bbd0511c3d1c79186d8315b82dac802118322b2de1194fe/pandas-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c7e2fc25f89a49a11599ec1e76821322439d90820108309bf42130d2f36c983" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/05/01/0c8785610e465e4948a01a059562176e4c8088aa257e2e074db868f86d4e/pandas-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6da97aeb6a6d233fb6b17986234cc723b396b50a3c6804776351994f2a658fd" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e8/6a/47fd7517cd8abe72a58706aab2b99e9438360d36dcdb052cf917b7bf3bdc/pandas-2.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb32dc743b52467d488e7a7c8039b821da2826a9ba4f85b89ea95274f863280f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2a/b3/463bfe819ed60fb7e7ddffb4ae2ee04b887b3444feee6c19437b8f834837/pandas-2.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:213cd63c43263dbb522c1f8a7c9d072e25900f6975596f883f4bebd77295d4f3" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/04/0c/e0704ccdb0ac40aeb3434d1c641c43d05f75c92e67525df39575ace35468/pandas-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1d2b33e68d0ce64e26a4acc2e72d747292084f4e8db4c847c6f5f6cbe56ed6d8" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e9/df/815d6583967001153bb27f5cf075653d69d51ad887ebbf4cfe1173a1ac58/pandas-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:430a63bae10b5086995db1b02694996336e5a8ac9a96b4200572b413dfdfccb9" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/79/88/ca5973ed07b7f484c493e941dbff990861ca55291ff7ac67c815ce347395/pandas-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4930255e28ff5545e2ca404637bcc56f031893142773b3468dc021c6c32a1390" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/24/fb/0994c14d1f7909ce83f0b1fb27958135513c4f3f2528bde216180aa73bfc/pandas-2.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f925f1ef673b4bd0271b1809b72b3270384f2b7d9d14a189b12b7fc02574d575" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/9d/a2/9b903e5962134497ac4f8a96f862ee3081cb2506f69f8e4778ce3d9c9d82/pandas-2.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78ad363ddb873a631e92a3c063ade1ecfb34cae71e9a2be6ad100f875ac1042" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/81/3a/3806d041bce032f8de44380f866059437fb79e36d6b22c82c187e65f765b/pandas-2.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:951805d146922aed8357e4cc5671b8b0b9be1027f0619cea132a9f3f65f2f09c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/15/aa/3fc3181d12b95da71f5c2537c3e3b3af6ab3a8c392ab41ebb766e0929bc6/pandas-2.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a881bc1309f3fce34696d07b00f13335c41f5f5a8770a33b09ebe23261cfc67" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/37/e7/e12f2d9b0a2c4a2cc86e2aabff7ccfd24f03e597d770abfa2acd313ee46b/pandas-2.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e1991bbb96f4050b09b5f811253c4f3cf05ee89a589379aa36cd623f21a31d6f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/39/c2/646d2e93e0af70f4e5359d870a63584dacbc324b54d73e6b3267920ff117/pandas-2.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:bb3be958022198531eb7ec2008cfc78c5b1eed51af8600c6c5d9160d89d8d249" },
+]
+
+[[package]]
+name = "protobuf"
+version = "6.31.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/52/f3/b9655a711b32c19720253f6f06326faf90580834e2e83f840472d752bc8b/protobuf-6.31.1.tar.gz", hash = "sha256:d8cac4c982f0b957a4dc73a80e2ea24fab08e679c0de9deb835f4a12d69aca9a" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f3/6f/6ab8e4bf962fd5570d3deaa2d5c38f0a363f57b4501047b5ebeb83ab1125/protobuf-6.31.1-cp310-abi3-win32.whl", hash = "sha256:7fa17d5a29c2e04b7d90e5e32388b8bfd0e7107cd8e616feef7ed3fa6bdab5c9" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/44/3a/b15c4347dd4bf3a1b0ee882f384623e2063bb5cf9fa9d57990a4f7df2fb6/protobuf-6.31.1-cp310-abi3-win_amd64.whl", hash = "sha256:426f59d2964864a1a366254fa703b8632dcec0790d8862d30034d8245e1cd447" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6a/c9/b9689a2a250264a84e66c46d8862ba788ee7a641cdca39bccf64f59284b7/protobuf-6.31.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:6f1227473dc43d44ed644425268eb7c2e488ae245d51c6866d19fe158e207402" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/76/a1/7a5a94032c83375e4fe7e7f56e3976ea6ac90c5e85fac8576409e25c39c3/protobuf-6.31.1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:a40fc12b84c154884d7d4c4ebd675d5b3b5283e155f324049ae396b95ddebc39" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fa/b1/b59d405d64d31999244643d88c45c8241c58f17cc887e73bcb90602327f8/protobuf-6.31.1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:4ee898bf66f7a8b0bd21bce523814e6fbd8c6add948045ce958b73af7e8878c6" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f7/af/ab3c51ab7507a7325e98ffe691d9495ee3d3aa5f589afad65ec920d39821/protobuf-6.31.1-py3-none-any.whl", hash = "sha256:720a6c7e6b77288b85063569baae8536671b39f15cc22037ec7045658d80489e" },
+]
+
+[[package]]
+name = "pydantic"
+version = "2.11.5"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "annotated-types" },
+ { name = "pydantic-core" },
+ { name = "typing-extensions" },
+ { name = "typing-inspection" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7" },
+]
+
+[[package]]
+name = "pydantic-core"
+version = "2.33.2"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9" },
+]
+
+[[package]]
+name = "pydantic-settings"
+version = "2.9.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "pydantic" },
+ { name = "python-dotenv" },
+ { name = "typing-inspection" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef" },
+]
+
+[[package]]
+name = "pygments"
+version = "2.19.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c" },
+]
+
+[[package]]
+name = "pymilvus"
+version = "2.5.10"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "grpcio" },
+ { name = "milvus-lite", marker = "sys_platform != 'win32'" },
+ { name = "pandas" },
+ { name = "protobuf" },
+ { name = "python-dotenv" },
+ { name = "setuptools" },
+ { name = "ujson" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/da/e2/88f126a08d8eefba7341e3eb323406a227146094aab7137a2b91d882e98d/pymilvus-2.5.10.tar.gz", hash = "sha256:cc44ad776aeab781ee4c4a4d334b73e746066ab2fb6722c5311f02efa6fc54a2" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b0/4b/847704930ad8ddd0d0975e9a3a5e3fe704f642debe97454135c2b9ee7081/pymilvus-2.5.10-py3-none-any.whl", hash = "sha256:7da540f93068871cda3941602c55227aeaafb66f2f0d9c05e8f9db783716b100" },
+]
+
+[[package]]
+name = "python-dateutil"
+version = "2.9.0.post0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "six" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" },
+]
+
+[[package]]
+name = "python-dotenv"
+version = "1.1.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d" },
+]
+
+[[package]]
+name = "python-multipart"
+version = "0.0.20"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104" },
+]
+
+[[package]]
+name = "pytz"
+version = "2025.2"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" },
+]
+
+[[package]]
+name = "rag-mcp-server"
+version = "0.1.0"
+source = { virtual = "." }
+dependencies = [
+ { name = "mcp", extra = ["cli"] },
+ { name = "pymilvus" },
+ { name = "requests" },
+]
+
+[package.metadata]
+requires-dist = [
+ { name = "mcp", extras = ["cli"], specifier = ">=1.9.3" },
+ { name = "pymilvus", specifier = ">=2.5.10" },
+ { name = "requests", specifier = ">=2.32.3" },
+]
+
+[[package]]
+name = "requests"
+version = "2.32.3"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "certifi" },
+ { name = "charset-normalizer" },
+ { name = "idna" },
+ { name = "urllib3" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6" },
+]
+
+[[package]]
+name = "rich"
+version = "14.0.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "markdown-it-py" },
+ { name = "pygments" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0" },
+]
+
+[[package]]
+name = "setuptools"
+version = "80.9.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922" },
+]
+
+[[package]]
+name = "shellingham"
+version = "1.5.4"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686" },
+]
+
+[[package]]
+name = "six"
+version = "1.17.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" },
+]
+
+[[package]]
+name = "sniffio"
+version = "1.3.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2" },
+]
+
+[[package]]
+name = "sse-starlette"
+version = "2.3.6"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "anyio" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/8c/f4/989bc70cb8091eda43a9034ef969b25145291f3601703b82766e5172dfed/sse_starlette-2.3.6.tar.gz", hash = "sha256:0382336f7d4ec30160cf9ca0518962905e1b69b72d6c1c995131e0a703b436e3" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/81/05/78850ac6e79af5b9508f8841b0f26aa9fd329a1ba00bf65453c2d312bcc8/sse_starlette-2.3.6-py3-none-any.whl", hash = "sha256:d49a8285b182f6e2228e2609c350398b2ca2c36216c2675d875f81e93548f760" },
+]
+
+[[package]]
+name = "starlette"
+version = "0.47.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "anyio" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/8b/d0/0332bd8a25779a0e2082b0e179805ad39afad642938b371ae0882e7f880d/starlette-0.47.0.tar.gz", hash = "sha256:1f64887e94a447fed5f23309fb6890ef23349b7e478faa7b24a851cd4eb844af" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e3/81/c60b35fe9674f63b38a8feafc414fca0da378a9dbd5fa1e0b8d23fcc7a9b/starlette-0.47.0-py3-none-any.whl", hash = "sha256:9d052d4933683af40ffd47c7465433570b4949dc937e20ad1d73b34e72f10c37" },
+]
+
+[[package]]
+name = "tqdm"
+version = "4.67.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "colorama", marker = "sys_platform == 'win32'" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2" },
+]
+
+[[package]]
+name = "typer"
+version = "0.16.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "click" },
+ { name = "rich" },
+ { name = "shellingham" },
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855" },
+]
+
+[[package]]
+name = "typing-extensions"
+version = "4.14.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/d1/bc/51647cd02527e87d05cb083ccc402f93e441606ff1f01739a62c8ad09ba5/typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/69/e0/552843e0d356fbb5256d21449fa957fa4eff3bbc135a74a691ee70c7c5da/typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af" },
+]
+
+[[package]]
+name = "typing-inspection"
+version = "0.4.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51" },
+]
+
+[[package]]
+name = "tzdata"
+version = "2025.2"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8" },
+]
+
+[[package]]
+name = "ujson"
+version = "5.10.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0d/69/b3e3f924bb0e8820bb46671979770c5be6a7d51c77a66324cdb09f1acddb/ujson-5.10.0-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/32/8a/9b748eb543c6cabc54ebeaa1f28035b1bd09c0800235b08e85990734c41e/ujson-5.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/39/50/4b53ea234413b710a18b305f465b328e306ba9592e13a791a6a6b378869b/ujson-5.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b4/9d/8061934f960cdb6dd55f0b3ceeff207fcc48c64f58b43403777ad5623d9e/ujson-5.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f5/be/7bfa84b28519ddbb67efc8410765ca7da55e6b93aba84d97764cd5794dbc/ujson-5.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/48/eb/85d465abafb2c69d9699cfa5520e6e96561db787d36c677370e066c7e2e7/ujson-5.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/9f/76/2a63409fc05d34dd7d929357b7a45e3a2c96f22b4225cd74becd2ba6c4cb/ujson-5.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/45/ed/582c4daba0f3e1688d923b5cb914ada1f9defa702df38a1916c899f7c4d1/ujson-5.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d7/0c/9837fece153051e19c7bade9f88f9b409e026b9525927824cdf16293b43b/ujson-5.10.0-cp313-cp313-win32.whl", hash = "sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d7/72/6cb6728e2738c05bbe9bd522d6fc79f86b9a28402f38663e85a28fddd4a0/ujson-5.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539" },
+]
+
+[[package]]
+name = "urllib3"
+version = "2.4.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813" },
+]
+
+[[package]]
+name = "uvicorn"
+version = "0.34.3"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "click" },
+ { name = "h11" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/de/ad/713be230bcda622eaa35c28f0d328c3675c371238470abdea52417f17a8e/uvicorn-0.34.3.tar.gz", hash = "sha256:35919a9a979d7a59334b6b10e05d77c1d0d574c50e0fc98b8b1a0f165708b55a" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6d/0d/8adfeaa62945f90d19ddc461c55f4a50c258af7662d34b6a3d5d1f8646f6/uvicorn-0.34.3-py3-none-any.whl", hash = "sha256:16246631db62bdfbf069b0645177d6e8a77ba950cfedbfd093acef9444e4d885" },
+]
From c453551b869540b82b1d1dfa36b2054e98ef605c Mon Sep 17 00:00:00 2001
From: szlele <595128841@qq.com>
Date: Wed, 18 Jun 2025 10:55:45 +0800
Subject: [PATCH 4/6] =?UTF-8?q?llama.cpp=E6=A8=A1=E5=9E=8B=E9=83=A8?=
=?UTF-8?q?=E7=BD=B2=E6=9E=84=E5=BB=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
llamacpp-embedding-rerank-server/README.md | 113 ++++++++++++++++++++-
1 file changed, 110 insertions(+), 3 deletions(-)
diff --git a/llamacpp-embedding-rerank-server/README.md b/llamacpp-embedding-rerank-server/README.md
index 478f3e7..88dee9c 100644
--- a/llamacpp-embedding-rerank-server/README.md
+++ b/llamacpp-embedding-rerank-server/README.md
@@ -1,5 +1,72 @@
# llama.cpp 部署 Embedding和Rerank模型
+## ARM架构下编译llama.cpp
+
+1. 下载llama.cpp源码
+```shell
+cd /home
+git clone https://github.com/ggml-org/llama.cpp.git
+```
+
+2. 拉取``ubuntu:22.04``镜像
+
+```shell
+docker pull ubuntu:22.04
+docker run -itd -v /home/llama.cpp:/home/llama.cpp ubuntu:22.04 --name ubuntu_llamacpp
+
+docker exec -it ubuntu_llamacpp /bin/bash
+```
+
+3. 容器内编译
+
+```shell
+apt-get update
+apt-get install -y git cmake libcurl4-openssl-dev build-essential
+cmake -B build
+cmake --build build --config Release -j 8
+```
+
+4. 宿主机上构建llama.cpp镜像
+
+经过在上面容器内编译的步骤,``/home/llama.cpp``下新增``build``文件夹,里面就是基于``ubuntu:22.04``镜像环境编译的llama.cpp的库文件。下面就可根据这些文件再基于``ubuntu:22.04``构建``llama.cpp-arm64:server``镜像。
+
+```shell
+cd /home/llama.cpp
+mkdir -p docker/lib
+cp -r ../build/bin/*.so ./docker/lib/
+cp ../build/bin/llama-server ./docker/llama-server
+vi Dockerfile
+```
+
+``Dockerfile``内容
+
+```shell
+FROM ubuntu:22.04
+
+RUN apt-get update \
+ && apt-get install -y libgomp1 curl \
+ && apt autoremove -y \
+ && apt clean -y \
+ && rm -rf /tmp/* /var/tmp/* \
+ && find /var/cache/apt/archives /var/lib/apt/lists -not -name lock -type f -delete \
+ && find /var/cache -type f -delete
+
+COPY lib/ /app
+COPY llama-server /app
+
+ENV LLAMA_ARG_HOST=0.0.0.0
+
+WORKDIR /app
+
+ENTRYPOINT ["/app/llama-server"]
+```
+
+构建镜像
+
+```shell
+docker build -t llama.cpp-arm64:server .
+```
+
## 下载模型
`Embedding`: bge-m3
@@ -7,15 +74,55 @@
`Rerank`: bge-reranker-v2-m3
```shell
+pip config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple
+pip install modelscope
cd /home
mkdir models
-uv venv
-uv tool install modescope
+cd models
+modelscope download --model gpustack/bge-reranker-v2-m3-GGUF bge-reranker-v2-m3-Q8_0.gguf --local_dir ./bge-reranker-v2-m3-GGUF
modelscope download --model gpustack/bge-m3-GGUF bge-m3-Q8_0.gguf --local_dir ./bge-m3-GGUF
+```
-modescope modelscope download --model gpustack/bge-reranker-v2-m3-GGUF bge-reranker-v2-m3-Q8_0.gguf --local_dir ./bge-reranker-v2-m3-GGUF
+## 编制docker-compose文件
+
+```shell
+services:
+ llamacpp-embedding-server:
+ image: llama.cpp-arm64:server
+ container_name: llamacpp-embedding-server
+ command: --embedding --pooling mean --verbose-prompt
+ restart: always
+ ports:
+ - 8081:8080
+ volumes:
+ - /home/models/bge-m3-GGUF:/models
+ environment:
+ LLAMA_ARG_MODEL: /models/bge-m3-Q8_0.gguf
+ LLAMA_ARG_CTX_SIZE: 8192
+ LLAMA_ARG_N_PARALLEL: 8
+ LLAMA_ARG_PORT: 8080
+ LLAMA_ARG_UBATCH: 8192
+ LLAMA_ARG_N_GPU_LAYERS_DRAFT: 0
+ llamacpp-rerank-server:
+ image: llama.cpp-arm64:server
+ container_name: llamacpp-rerank-server
+ command: --reranking --pooling rank
+ restart: always
+ ports:
+ - 8082:8080
+ volumes:
+ - /home/models/bge-reranker-v2-m3-GGUF:/models
+ environment:
+ LLAMA_ARG_MODEL: /models/bge-reranker-v2-m3-Q8_0.gguf
+ LLAMA_ARG_CTX_SIZE: 8192
+ LLAMA_ARG_N_PARALLEL: 8
+ LLAMA_ARG_PORT: 8080
+ LLAMA_ARG_BATCH: 8192
+ LLAMA_ARG_UBATCH: 8192
+ LLAMA_ARG_FLASH_ATTN: enable
+ LLAMA_ARG_N_GPU_LAYERS_DRAFT: 0
```
## 部署模型
From 55b4719afd44f1252b5e8fcb81c88e386d8cdeb4 Mon Sep 17 00:00:00 2001
From: szlele <595128841@qq.com>
Date: Mon, 23 Jun 2025 09:19:12 +0800
Subject: [PATCH 5/6] =?UTF-8?q?=E9=80=82=E9=85=8D=E6=96=B0=E7=89=88?=
=?UTF-8?q?=E7=9A=84transformer?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../.python-version | 1 +
onnxruntime-embedding-rerank-server/README.md | 0
.../app/download_model.py | 19 +
.../app/embedding_api.py | 13 +-
.../app/embedding_onnx_provider.py | 5 +-
.../app/log_config.py | 52 --
.../app/main.py | 73 +-
.../app/rerank_api.py | 9 +-
.../app/rerank_onnx_provider.py | 6 +-
.../pyproject.toml | 14 +
.../requirements.txt | 4 -
onnxruntime-embedding-rerank-server/run.sh | 2 +-
onnxruntime-embedding-rerank-server/stop.sh | 2 +
onnxruntime-embedding-rerank-server/uv.lock | 660 ++++++++++++++++++
14 files changed, 742 insertions(+), 118 deletions(-)
create mode 100644 onnxruntime-embedding-rerank-server/.python-version
create mode 100644 onnxruntime-embedding-rerank-server/README.md
create mode 100644 onnxruntime-embedding-rerank-server/app/download_model.py
delete mode 100644 onnxruntime-embedding-rerank-server/app/log_config.py
create mode 100644 onnxruntime-embedding-rerank-server/pyproject.toml
delete mode 100644 onnxruntime-embedding-rerank-server/requirements.txt
create mode 100644 onnxruntime-embedding-rerank-server/stop.sh
create mode 100644 onnxruntime-embedding-rerank-server/uv.lock
diff --git a/onnxruntime-embedding-rerank-server/.python-version b/onnxruntime-embedding-rerank-server/.python-version
new file mode 100644
index 0000000..e4fba21
--- /dev/null
+++ b/onnxruntime-embedding-rerank-server/.python-version
@@ -0,0 +1 @@
+3.12
diff --git a/onnxruntime-embedding-rerank-server/README.md b/onnxruntime-embedding-rerank-server/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/onnxruntime-embedding-rerank-server/app/download_model.py b/onnxruntime-embedding-rerank-server/app/download_model.py
new file mode 100644
index 0000000..3a72245
--- /dev/null
+++ b/onnxruntime-embedding-rerank-server/app/download_model.py
@@ -0,0 +1,19 @@
+import os
+from modelscope import snapshot_download
+
+# 当前文件的绝对路径
+filepath = os.path.abspath(__file__)
+models_dir = os.path.join(os.path.dirname(os.path.dirname(filepath)), "models")
+os.makedirs(models_dir, exist_ok=True)
+
+def download_embedding_models():
+ embedding_dir = os.path.join(models_dir,"bce-embedding-base_v1")
+ if not os.path.exists(embedding_dir):
+ snapshot_download(model_id='netease-youdao/bce-embedding-base_v1',local_dir = embedding_dir)
+ return embedding_dir
+
+def download_rerank_models():
+ reranker_dir = os.path.join(models_dir,"bce-reranker-base_v1")
+ if not os.path.exists(reranker_dir):
+ snapshot_download(model_id='netease-youdao/bce-reranker-base_v1',local_dir = reranker_dir)
+ return reranker_dir
\ No newline at end of file
diff --git a/onnxruntime-embedding-rerank-server/app/embedding_api.py b/onnxruntime-embedding-rerank-server/app/embedding_api.py
index a0e54fd..0f29493 100644
--- a/onnxruntime-embedding-rerank-server/app/embedding_api.py
+++ b/onnxruntime-embedding-rerank-server/app/embedding_api.py
@@ -1,10 +1,13 @@
-from fastapi import APIRouter, Request, HTTPException
-from typing import List,Union,Optional
-from pydantic import BaseModel,Field
-from uuid import uuid4
-from log_config import logger
+from fastapi import APIRouter, Request
+from typing import List,Union
+from pydantic import BaseModel
from model_service import EmbeddingService
import time
+import logging
+
+
+logging.basicConfig(level=logging.INFO)
+logger = logging.getLogger(__name__)
embedding_router = APIRouter(tags=['Embedding'])
diff --git a/onnxruntime-embedding-rerank-server/app/embedding_onnx_provider.py b/onnxruntime-embedding-rerank-server/app/embedding_onnx_provider.py
index 73438d6..57aed74 100644
--- a/onnxruntime-embedding-rerank-server/app/embedding_onnx_provider.py
+++ b/onnxruntime-embedding-rerank-server/app/embedding_onnx_provider.py
@@ -1,8 +1,7 @@
from onnxruntime import InferenceSession
-from transformers import AutoTokenizer
+from transformers import XLMRobertaTokenizer
from concurrent.futures import ThreadPoolExecutor
from typing import List
-from log_config import logger
import numpy as np
import os
@@ -13,7 +12,7 @@ def __init__(self,embed_path:str,**kwargs):
if not os.path.isfile(embed_model_path):
raise ValueError(f"{embed_model_path} 文件不存在")
self.workers = kwargs.get('workers', 8)
- self._tokenizer = AutoTokenizer.from_pretrained(embed_path)
+ self._tokenizer = XLMRobertaTokenizer.from_pretrained(embed_path)
providers = ['CPUExecutionProvider']
self._session = InferenceSession(embed_model_path, providers=providers)
self.thread_pool = ThreadPoolExecutor(max_workers=self.workers)
diff --git a/onnxruntime-embedding-rerank-server/app/log_config.py b/onnxruntime-embedding-rerank-server/app/log_config.py
deleted file mode 100644
index e310faa..0000000
--- a/onnxruntime-embedding-rerank-server/app/log_config.py
+++ /dev/null
@@ -1,52 +0,0 @@
-import os
-import logging
-import logging.config
-from typing import Any
-
-LOG_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "logs")
-os.makedirs(LOG_PATH, exist_ok=True)
-
-LOGGING_CONFIG: dict[str, Any] = {
- "version": 1,
- "disable_existing_loggers": False,
- "formatters": {
- "default": {
- "()": "uvicorn.logging.DefaultFormatter",
- "fmt": "%(asctime)s %(levelprefix)s %(message)s",
- "use_colors": None,
- },
- "access": {
- "()": "uvicorn.logging.AccessFormatter",
- "fmt": '%(asctime)s %(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s',
- },
- },
- "handlers": {
- "default": {
- "formatter": "default",
- "class": "logging.StreamHandler",
- "stream": "ext://sys.stderr",
- },
- "access": {
- "formatter": "access",
- "class": "logging.StreamHandler",
- "stream": "ext://sys.stdout",
- },
- # "file": {
- # "formatter": "default",
- # "encoding": "utf-8",
- # "class": "logging.handlers.RotatingFileHandler",
- # "filename": os.path.join(LOG_PATH, "server_info.log"),
- # "maxBytes": 1024 * 1024 * 50,
- # "backupCount": 5,
- # },
- },
- "loggers": {
- "uvicorn": {"handlers": ["default"], "level": "INFO", "propagate": False},
- "uvicorn.error": {"level": "INFO"},
- "uvicorn.access": {"handlers": ["access"], "level": "INFO", "propagate": False},
- "app": {"handlers": ["default"], "level": "INFO", "propagate": False},
- },
-}
-
-logging.config.dictConfig(LOGGING_CONFIG)
-logger = logging.getLogger("app")
\ No newline at end of file
diff --git a/onnxruntime-embedding-rerank-server/app/main.py b/onnxruntime-embedding-rerank-server/app/main.py
index 59397cd..3962d94 100644
--- a/onnxruntime-embedding-rerank-server/app/main.py
+++ b/onnxruntime-embedding-rerank-server/app/main.py
@@ -3,60 +3,41 @@
from model_service import EmbeddingService,RerankService
from embedding_api import embedding_router
from rerank_api import rerank_router
-from modelscope import snapshot_download,model_file_download
-from log_config import logger,LOGGING_CONFIG
+from download_model import download_embedding_models,download_rerank_models
+import logging
import os
import uvicorn
-# 当前文件的绝对路径
-filepath = os.path.abspath(__file__)
+logging.basicConfig(level=logging.INFO)
+logger = logging.getLogger(__name__)
-def download_models():
- models_dir = os.path.join(os.path.dirname(os.path.dirname(filepath)), "models")
- os.makedirs(models_dir, exist_ok=True)
+EMBEDDING_MODEL_PATH = os.getenv("LOCAL_EMBEDDING_MODEL_PATH",download_embedding_models())
+RERANK_MODEL_PATH = os.getenv("LOCAL_RERANK_MODEL_PATH",download_rerank_models())
- # embedding model
- embedding_dir = os.path.join(models_dir,"bce_embedding_base")
- if not os.path.exists(embedding_dir):
- snapshot_download(model_id='netease-youdao/bce-embedding-base_v1',local_dir = embedding_dir)
- model_file_download(model_id='maidalun/bce-embedding-base_v1',file_path='tokenizer_config.json',local_dir=embedding_dir)
- model_file_download(model_id='maidalun/bce-embedding-base_v1',file_path='tokenizer.json',local_dir=embedding_dir)
-
- # reranker
- reranker_dir = os.path.join(models_dir,"bce_reranker_base")
- if not os.path.exists(reranker_dir):
- snapshot_download(model_id='netease-youdao/bce-reranker-base_v1',local_dir = reranker_dir)
- model_file_download(model_id='maidalun/bce-reranker-base_v1',file_path='tokenizer_config.json',local_dir=reranker_dir)
- model_file_download(model_id='maidalun/bce-reranker-base_v1',file_path='tokenizer.json',local_dir=reranker_dir)
- return embedding_dir,reranker_dir
+logger.info(f"EMBEDDING_MODEL_PATH:{EMBEDDING_MODEL_PATH}")
+logger.info(f"RERANK_MODEL_PATH:{RERANK_MODEL_PATH}")
-def create_app(embedding_dir,reranker_dir) -> FastAPI:
- @asynccontextmanager
- async def lifespan(app:FastAPI):
- """生命周期"""
- app.state.embed_engine = EmbeddingService(embedding_dir, 8)
- app.state.rerank_engine = RerankService(reranker_dir, 8)
- logger.info("应用初始化成功")
- yield
- logger.info("应用正常停止")
+@asynccontextmanager
+async def lifespan(app:FastAPI):
+ """生命周期"""
+ app.state.embed_engine = EmbeddingService(EMBEDDING_MODEL_PATH, 8)
+ app.state.rerank_engine = RerankService(RERANK_MODEL_PATH, 8)
+ logger.info("应用初始化成功")
+ yield
+ logger.info("应用正常停止")
- # 创建应用
- app = FastAPI(
- title="Embedding Inference Server",
- lifespan=lifespan,
- root_path="/v1",
- version="1.0",
- license_info={"name":"Apache License 2.0","identifier":"Apache"}
- )
+# 创建应用
+app = FastAPI(
+ title="Embedding and Reranker Inference Server",
+ lifespan=lifespan,
+ root_path="/v1",
+ version="1.0",
+ license_info={"name":"Apache License 2.0","identifier":"Apache"}
+ )
- app.include_router(embedding_router)
- app.include_router(rerank_router)
- return app
+app.include_router(embedding_router)
+app.include_router(rerank_router)
if __name__ == "__main__":
- # 下载模型
- embedding_dir,reranker_dir = download_models()
- # 创建应用
- app = create_app(embedding_dir,reranker_dir)
# 启动应用
- uvicorn.run(app, host="0.0.0.0", port=9997,log_config=LOGGING_CONFIG)
\ No newline at end of file
+ uvicorn.run(app, host="0.0.0.0", port=9997)
\ No newline at end of file
diff --git a/onnxruntime-embedding-rerank-server/app/rerank_api.py b/onnxruntime-embedding-rerank-server/app/rerank_api.py
index 95f2fb9..e68f70a 100644
--- a/onnxruntime-embedding-rerank-server/app/rerank_api.py
+++ b/onnxruntime-embedding-rerank-server/app/rerank_api.py
@@ -1,10 +1,13 @@
from fastapi import APIRouter, Request
from typing import List
-from pydantic import BaseModel,Field
+from pydantic import BaseModel
from uuid import uuid4
-from log_config import logger
from model_service import RerankService
import time
+import logging
+
+logging.basicConfig(level=logging.INFO)
+logger = logging.getLogger(__name__)
rerank_router = APIRouter(tags=['Rerank'])
@@ -40,7 +43,7 @@ def text_rerank(request: Request,rerank_request:RerankRequest) -> RerankResponse
results = engine.execute(query,documents,top_n,return_documents)
# usage = Usage(prompt_tokens=len(documents),total_tokens=total_tokens)
- logger.info("请求结果:\n%s\n耗时 %.4f ms",results,(time.perf_counter() - start_time) * 1000)
+ logger.info("请求耗时 %.4f ms,返回结果:\n%s",(time.perf_counter() - start_time) * 1000, results)
rerankResult = [
RerankResult(
index = result['id'],
diff --git a/onnxruntime-embedding-rerank-server/app/rerank_onnx_provider.py b/onnxruntime-embedding-rerank-server/app/rerank_onnx_provider.py
index 1f1c98c..235deae 100644
--- a/onnxruntime-embedding-rerank-server/app/rerank_onnx_provider.py
+++ b/onnxruntime-embedding-rerank-server/app/rerank_onnx_provider.py
@@ -1,8 +1,7 @@
import onnxruntime as ort
-from transformers import AutoTokenizer
+from transformers import XLMRobertaTokenizer
from typing import List
from copy import deepcopy
-from log_config import logger
from concurrent.futures import ThreadPoolExecutor
import numpy as np
import os
@@ -21,7 +20,7 @@ def __init__(self,rerank_path,**kwargs):
# 判断文件是否存在
if not os.path.isfile(rerank_model_path):
raise ValueError(f"{rerank_model_path} 文件不存在")
- self._tokenizer = AutoTokenizer.from_pretrained(rerank_path)
+ self._tokenizer = XLMRobertaTokenizer.from_pretrained(rerank_path)
self.sep_id = self._tokenizer.sep_token_id
self.overlap_tokens = kwargs.get('overlap_tokens', 80)
self.max_length = kwargs.get('max_length', 512)
@@ -30,7 +29,6 @@ def __init__(self,rerank_path,**kwargs):
self.session = ort.InferenceSession(rerank_model_path, providers=providers)
self.thread_pool = ThreadPoolExecutor(max_workers=self.workers)
-
def tokenize_preproc(self, query: str, passages: List[str]):
def _merge_inputs(chunk1_raw, chunk2):
diff --git a/onnxruntime-embedding-rerank-server/pyproject.toml b/onnxruntime-embedding-rerank-server/pyproject.toml
new file mode 100644
index 0000000..713e1a3
--- /dev/null
+++ b/onnxruntime-embedding-rerank-server/pyproject.toml
@@ -0,0 +1,14 @@
+[project]
+name = "onnxruntime-embedding-rerank-server"
+version = "0.1.0"
+description = "Add your description here"
+readme = "README.md"
+requires-python = ">=3.12"
+dependencies = [
+ "fastapi>=0.115.13",
+ "modelscope>=1.27.1",
+ "onnxruntime>=1.22.0",
+ "sentencepiece>=0.2.0",
+ "tiktoken>=0.9.0",
+ "transformers>=4.52.4",
+]
diff --git a/onnxruntime-embedding-rerank-server/requirements.txt b/onnxruntime-embedding-rerank-server/requirements.txt
deleted file mode 100644
index 7ae27e3..0000000
--- a/onnxruntime-embedding-rerank-server/requirements.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-fastapi[standard]
-onnxruntime
-transformers
-modelscope
\ No newline at end of file
diff --git a/onnxruntime-embedding-rerank-server/run.sh b/onnxruntime-embedding-rerank-server/run.sh
index 851a96c..edfb7d5 100644
--- a/onnxruntime-embedding-rerank-server/run.sh
+++ b/onnxruntime-embedding-rerank-server/run.sh
@@ -1,4 +1,4 @@
-nohup python -u app/main.py > app.log 2>&1 &
+nohup uv run app/main.py > app.log 2>&1 &
PID1=$!
# 生成close.sh脚本,写入kill命令
diff --git a/onnxruntime-embedding-rerank-server/stop.sh b/onnxruntime-embedding-rerank-server/stop.sh
new file mode 100644
index 0000000..4458fc9
--- /dev/null
+++ b/onnxruntime-embedding-rerank-server/stop.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+kill -9 28070
diff --git a/onnxruntime-embedding-rerank-server/uv.lock b/onnxruntime-embedding-rerank-server/uv.lock
new file mode 100644
index 0000000..c3b1a06
--- /dev/null
+++ b/onnxruntime-embedding-rerank-server/uv.lock
@@ -0,0 +1,660 @@
+version = 1
+revision = 2
+requires-python = ">=3.12"
+
+[[package]]
+name = "annotated-types"
+version = "0.7.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53" },
+]
+
+[[package]]
+name = "anyio"
+version = "4.9.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "idna" },
+ { name = "sniffio" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" },
+]
+
+[[package]]
+name = "certifi"
+version = "2025.6.15"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/73/f7/f14b46d4bcd21092d7d3ccef689615220d8a08fb25e564b65d20738e672e/certifi-2025.6.15.tar.gz", hash = "sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/84/ae/320161bd181fc06471eed047ecce67b693fd7515b16d495d8932db763426/certifi-2025.6.15-py3-none-any.whl", hash = "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057" },
+]
+
+[[package]]
+name = "charset-normalizer"
+version = "3.4.2"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0" },
+]
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" },
+]
+
+[[package]]
+name = "coloredlogs"
+version = "15.0.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "humanfriendly" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/cc/c7/eed8f27100517e8c0e6b923d5f0845d0cb99763da6fdee00478f91db7325/coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934" },
+]
+
+[[package]]
+name = "fastapi"
+version = "0.115.13"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "pydantic" },
+ { name = "starlette" },
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/20/64/ec0788201b5554e2a87c49af26b77a4d132f807a0fa9675257ac92c6aa0e/fastapi-0.115.13.tar.gz", hash = "sha256:55d1d25c2e1e0a0a50aceb1c8705cd932def273c102bff0b1c1da88b3c6eb307" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/59/4a/e17764385382062b0edbb35a26b7cf76d71e27e456546277a42ba6545c6e/fastapi-0.115.13-py3-none-any.whl", hash = "sha256:0a0cab59afa7bab22f5eb347f8c9864b681558c278395e94035a741fc10cd865" },
+]
+
+[[package]]
+name = "filelock"
+version = "3.18.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de" },
+]
+
+[[package]]
+name = "flatbuffers"
+version = "25.2.10"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/e4/30/eb5dce7994fc71a2f685d98ec33cc660c0a5887db5610137e60d8cbc4489/flatbuffers-25.2.10.tar.gz", hash = "sha256:97e451377a41262f8d9bd4295cc836133415cc03d8cb966410a4af92eb00d26e" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b8/25/155f9f080d5e4bc0082edfda032ea2bc2b8fab3f4d25d46c1e9dd22a1a89/flatbuffers-25.2.10-py2.py3-none-any.whl", hash = "sha256:ebba5f4d5ea615af3f7fd70fc310636fbb2bbd1f566ac0a23d98dd412de50051" },
+]
+
+[[package]]
+name = "fsspec"
+version = "2025.5.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/00/f7/27f15d41f0ed38e8fcc488584b57e902b331da7f7c6dcda53721b15838fc/fsspec-2025.5.1.tar.gz", hash = "sha256:2e55e47a540b91843b755e83ded97c6e897fa0942b11490113f09e9c443c2475" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/bb/61/78c7b3851add1481b048b5fdc29067397a1784e2910592bc81bb3f608635/fsspec-2025.5.1-py3-none-any.whl", hash = "sha256:24d3a2e663d5fc735ab256263c4075f374a174c3410c0b25e5bd1970bceaa462" },
+]
+
+[[package]]
+name = "hf-xet"
+version = "1.1.4"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/8d/11/b480bb7515db97d5b2b703927a59bbdd3f87e68d47dff5591aada467b4a9/hf_xet-1.1.4.tar.gz", hash = "sha256:875158df90cb13547752532ed73cad9dfaad3b29e203143838f67178418d08a4" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c4/62/3b41a7439930996530c64955874445012fd9044c82c60b34c5891c34fec6/hf_xet-1.1.4-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:6591ab9f61ea82d261107ed90237e2ece972f6a7577d96f5f071208bbf255d1c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/9b/9f/1744fb1d79e0ac147578b193ce29208ebb9f4636e8cdf505638f6f0a6874/hf_xet-1.1.4-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:071b0b4d4698990f746edd666c7cc42555833d22035d88db0df936677fb57d29" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d1/a8/49a81d4f81b0d21cc758b6fca3880a85ca0d209e8425c8b3a6ef694881ca/hf_xet-1.1.4-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5b610831e92e41182d4c028653978b844d332d492cdcba1b920d3aca4a0207e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/bf/8b/65fa08273789dafbc38d0f0bdd20df56b63ebc6566981bbaa255d9d84a33/hf_xet-1.1.4-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f6578bcd71393abfd60395279cc160ca808b61f5f9d535b922fcdcd3f77a708d" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/8b/4b/224340bb1d5c63b6e03e04095b4e42230848454bf4293c45cd7bdaa0c208/hf_xet-1.1.4-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fb2bbfa2aae0e4f0baca988e7ba8d8c1a39a25adf5317461eb7069ad00505b3e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/4a/b7/4be010014de6585401c32a04c46b09a4a842d66bd16ed549a401e973b74b/hf_xet-1.1.4-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:73346ba3e2e15ea8909a26b0862b458f15b003e6277935e3fba5bf273508d698" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c2/2d/cf148d532f741fbf93f380ff038a33c1309d1e24ea629dc39d11dca08c92/hf_xet-1.1.4-cp37-abi3-win_amd64.whl", hash = "sha256:52e8f8bc2029d8b911493f43cea131ac3fa1f0dc6a13c50b593c4516f02c6fc3" },
+]
+
+[[package]]
+name = "huggingface-hub"
+version = "0.33.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "filelock" },
+ { name = "fsspec" },
+ { name = "hf-xet", marker = "platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" },
+ { name = "packaging" },
+ { name = "pyyaml" },
+ { name = "requests" },
+ { name = "tqdm" },
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/91/8a/1362d565fefabaa4185cf3ae842a98dbc5b35146f5694f7080f043a6952f/huggingface_hub-0.33.0.tar.gz", hash = "sha256:aa31f70d29439d00ff7a33837c03f1f9dd83971ce4e29ad664d63ffb17d3bb97" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/33/fb/53587a89fbc00799e4179796f51b3ad713c5de6bb680b2becb6d37c94649/huggingface_hub-0.33.0-py3-none-any.whl", hash = "sha256:e8668875b40c68f9929150d99727d39e5ebb8a05a98e4191b908dc7ded9074b3" },
+]
+
+[[package]]
+name = "humanfriendly"
+version = "10.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "pyreadline3", marker = "sys_platform == 'win32'" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/cc/3f/2c29224acb2e2df4d2046e4c73ee2662023c58ff5b113c4c1adac0886c43/humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477" },
+]
+
+[[package]]
+name = "idna"
+version = "3.10"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" },
+]
+
+[[package]]
+name = "modelscope"
+version = "1.27.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "requests" },
+ { name = "setuptools" },
+ { name = "tqdm" },
+ { name = "urllib3" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/d0/e4/65e731300f2ed7dc02965bcbc0cfa74c38a27dabbefcdf7a2e2893bbf50c/modelscope-1.27.1.tar.gz", hash = "sha256:a74d2ef7f2decf8c0a59ef35b46f07452026074587e5bb5c736fbef2df13ec1c" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2f/14/027c49872c9f1087a1b9f604a81d5584324d84b1540a88b071e41eaca5b7/modelscope-1.27.1-py3-none-any.whl", hash = "sha256:2b67656e41fab77a9b278ccb6fceac541971f54a7d8b74700c1ffdcd290a3394" },
+]
+
+[[package]]
+name = "mpmath"
+version = "1.3.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c" },
+]
+
+[[package]]
+name = "numpy"
+version = "2.3.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f3/db/8e12381333aea300890829a0a36bfa738cac95475d88982d538725143fd9/numpy-2.3.0.tar.gz", hash = "sha256:581f87f9e9e9db2cba2141400e160e9dd644ee248788d6f90636eeb8fd9260a6" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/89/59/9df493df81ac6f76e9f05cdbe013cdb0c9a37b434f6e594f5bd25e278908/numpy-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:389b85335838155a9076e9ad7f8fdba0827496ec2d2dc32ce69ce7898bde03ba" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2f/86/4ff04335901d6cf3a6bb9c748b0097546ae5af35e455ae9b962ebff4ecd7/numpy-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9498f60cd6bb8238d8eaf468a3d5bb031d34cd12556af53510f05fcf581c1b7e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/71/8d/a942cd4f959de7f08a79ab0c7e6cecb7431d5403dce78959a726f0f57aa1/numpy-2.3.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:622a65d40d8eb427d8e722fd410ac3ad4958002f109230bc714fa551044ebae2" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/86/5d/45850982efc7b2c839c5626fb67fbbc520d5b0d7c1ba1ae3651f2f74c296/numpy-2.3.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:b9446d9d8505aadadb686d51d838f2b6688c9e85636a0c3abaeb55ed54756459" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/1a/c0/c871d4a83f93b00373d3eebe4b01525eee8ef10b623a335ec262b58f4dc1/numpy-2.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:50080245365d75137a2bf46151e975de63146ae6d79f7e6bd5c0e85c9931d06a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b7/f6/bc47f5fa666d5ff4145254f9e618d56e6a4ef9b874654ca74c19113bb538/numpy-2.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c24bb4113c66936eeaa0dc1e47c74770453d34f46ee07ae4efd853a2ed1ad10a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f5/b4/65f48009ca0c9b76df5f404fccdea5a985a1bb2e34e97f21a17d9ad1a4ba/numpy-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4d8d294287fdf685281e671886c6dcdf0291a7c19db3e5cb4178d07ccf6ecc67" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f1/62/5367855a2018578e9334ed08252ef67cc302e53edc869666f71641cad40b/numpy-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6295f81f093b7f5769d1728a6bd8bf7466de2adfa771ede944ce6711382b89dc" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d4/75/5baed8cd867eabee8aad1e74d7197d73971d6a3d40c821f1848b8fab8b84/numpy-2.3.0-cp312-cp312-win32.whl", hash = "sha256:e6648078bdd974ef5d15cecc31b0c410e2e24178a6e10bf511e0557eed0f2570" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/bc/49/d5781eaa1a15acb3b3a3f49dc9e2ff18d92d0ce5c2976f4ab5c0a7360250/numpy-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:0898c67a58cdaaf29994bc0e2c65230fd4de0ac40afaf1584ed0b02cd74c6fdd" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c2/1c/6d343e030815c7c97a1f9fbad00211b47717c7fe446834c224bd5311e6f1/numpy-2.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:bd8df082b6c4695753ad6193018c05aac465d634834dca47a3ae06d4bb22d9ea" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/73/fc/1d67f751fd4dbafc5780244fe699bc4084268bad44b7c5deb0492473127b/numpy-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5754ab5595bfa2c2387d241296e0381c21f44a4b90a776c3c1d39eede13a746a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e8/95/73ffdb69e5c3f19ec4530f8924c4386e7ba097efc94b9c0aff607178ad94/numpy-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d11fa02f77752d8099573d64e5fe33de3229b6632036ec08f7080f46b6649959" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/64/d5/06d4bb31bb65a1d9c419eb5676173a2f90fd8da3c59f816cc54c640ce265/numpy-2.3.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:aba48d17e87688a765ab1cd557882052f238e2f36545dfa8e29e6a91aef77afe" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/12/8b/6c2cef44f8ccdc231f6b56013dff1d71138c48124334aded36b1a1b30c5a/numpy-2.3.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4dc58865623023b63b10d52f18abaac3729346a7a46a778381e0e3af4b7f3beb" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/62/aa/fca4bf8de3396ddb59544df9b75ffe5b73096174de97a9492d426f5cd4aa/numpy-2.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:df470d376f54e052c76517393fa443758fefcdd634645bc9c1f84eafc67087f0" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/1c/12/734dce1087eed1875f2297f687e671cfe53a091b6f2f55f0c7241aad041b/numpy-2.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:87717eb24d4a8a64683b7a4e91ace04e2f5c7c77872f823f02a94feee186168f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/48/03/ffa41ade0e825cbcd5606a5669962419528212a16082763fc051a7247d76/numpy-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d8fa264d56882b59dcb5ea4d6ab6f31d0c58a57b41aec605848b6eb2ef4a43e8" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/07/58/869398a11863310aee0ff85a3e13b4c12f20d032b90c4b3ee93c3b728393/numpy-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e651756066a0eaf900916497e20e02fe1ae544187cb0fe88de981671ee7f6270" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2f/8a/5756935752ad278c17e8a061eb2127c9a3edf4ba2c31779548b336f23c8d/numpy-2.3.0-cp313-cp313-win32.whl", hash = "sha256:e43c3cce3b6ae5f94696669ff2a6eafd9a6b9332008bafa4117af70f4b88be6f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/08/60/61d60cf0dfc0bf15381eaef46366ebc0c1a787856d1db0c80b006092af84/numpy-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:81ae0bf2564cf475f94be4a27ef7bcf8af0c3e28da46770fc904da9abd5279b5" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/66/31/2f2f2d2b3e3c32d5753d01437240feaa32220b73258c9eef2e42a0832866/numpy-2.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:c8738baa52505fa6e82778580b23f945e3578412554d937093eac9205e845e6e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f1/89/c7828f23cc50f607ceb912774bb4cff225ccae7131c431398ad8400e2c98/numpy-2.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:39b27d8b38942a647f048b675f134dd5a567f95bfff481f9109ec308515c51d8" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/dd/46/79ecf47da34c4c50eedec7511e53d57ffdfd31c742c00be7dc1d5ffdb917/numpy-2.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0eba4a1ea88f9a6f30f56fdafdeb8da3774349eacddab9581a21234b8535d3d3" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/59/44/f6caf50713d6ff4480640bccb2a534ce1d8e6e0960c8f864947439f0ee95/numpy-2.3.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:b0f1f11d0a1da54927436505a5a7670b154eac27f5672afc389661013dfe3d4f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a6/43/e1fd1aca7c97e234dd05e66de4ab7a5be54548257efcdd1bc33637e72102/numpy-2.3.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:690d0a5b60a47e1f9dcec7b77750a4854c0d690e9058b7bef3106e3ae9117808" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/84/89/f76f93b06a03177c0faa7ca94d0856c4e5c4bcaf3c5f77640c9ed0303e1c/numpy-2.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8b51ead2b258284458e570942137155978583e407babc22e3d0ed7af33ce06f8" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/aa/f5/4858c3e9ff7a7d64561b20580cf7cc5d085794bd465a19604945d6501f6c/numpy-2.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:aaf81c7b82c73bd9b45e79cfb9476cb9c29e937494bfe9092c26aece812818ad" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/08/17/0e3b4182e691a10e9483bcc62b4bb8693dbf9ea5dc9ba0b77a60435074bb/numpy-2.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f420033a20b4f6a2a11f585f93c843ac40686a7c3fa514060a97d9de93e5e72b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/4e/d5/463279fda028d3c1efa74e7e8d507605ae87f33dbd0543cf4c4527c8b882/numpy-2.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d344ca32ab482bcf8735d8f95091ad081f97120546f3d250240868430ce52555" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0e/1e/7a9d98c886d4c39a2b4d3a7c026bffcf8fbcaf518782132d12a301cfc47a/numpy-2.3.0-cp313-cp313t-win32.whl", hash = "sha256:48a2e8eaf76364c32a1feaa60d6925eaf32ed7a040183b807e02674305beef61" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fe/ab/66fc909931d5eb230107d016861824f335ae2c0533f422e654e5ff556784/numpy-2.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ba17f93a94e503551f154de210e4d50c5e3ee20f7e7a1b5f6ce3f22d419b93bb" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ee/e8/2c8a1c9e34d6f6d600c83d5ce5b71646c32a13f34ca5c518cc060639841c/numpy-2.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:f14e016d9409680959691c109be98c436c6249eaf7f118b424679793607b5944" },
+]
+
+[[package]]
+name = "onnxruntime"
+version = "1.22.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "coloredlogs" },
+ { name = "flatbuffers" },
+ { name = "numpy" },
+ { name = "packaging" },
+ { name = "protobuf" },
+ { name = "sympy" },
+]
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/4d/de/9162872c6e502e9ac8c99a98a8738b2fab408123d11de55022ac4f92562a/onnxruntime-1.22.0-cp312-cp312-macosx_13_0_universal2.whl", hash = "sha256:f3c0380f53c1e72a41b3f4d6af2ccc01df2c17844072233442c3a7e74851ab97" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/03/79/36f910cd9fc96b444b0e728bba14607016079786adf032dae61f7c63b4aa/onnxruntime-1.22.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8601128eaef79b636152aea76ae6981b7c9fc81a618f584c15d78d42b310f1c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/8c/60/16d219b8868cc8e8e51a68519873bdb9f5f24af080b62e917a13fff9989b/onnxruntime-1.22.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6964a975731afc19dc3418fad8d4e08c48920144ff590149429a5ebe0d15fb3c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/36/b4/3f1c71ce1d3d21078a6a74c5483bfa2b07e41a8d2b8fb1e9993e6a26d8d3/onnxruntime-1.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:c0d534a43d1264d1273c2d4f00a5a588fa98d21117a3345b7104fa0bbcaadb9a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a9/65/5cb5018d5b0b7cba820d2c4a1d1b02d40df538d49138ba36a509457e4df6/onnxruntime-1.22.0-cp313-cp313-macosx_13_0_universal2.whl", hash = "sha256:fe7c051236aae16d8e2e9ffbfc1e115a0cc2450e873a9c4cb75c0cc96c1dae07" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e1/89/1dfe1b368831d1256b90b95cb8d11da8ab769febd5c8833ec85ec1f79d21/onnxruntime-1.22.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a6bbed10bc5e770c04d422893d3045b81acbbadc9fb759a2cd1ca00993da919" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/1e/70/342514ade3a33ad9dd505dcee96ff1f0e7be6d0e6e9c911fe0f1505abf42/onnxruntime-1.22.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9fe45ee3e756300fccfd8d61b91129a121d3d80e9d38e01f03ff1295badc32b8" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/3e/89/2f64e250945fa87140fb917ba377d6d0e9122e029c8512f389a9b7f953f4/onnxruntime-1.22.0-cp313-cp313-win_amd64.whl", hash = "sha256:5a31d84ef82b4b05d794a4ce8ba37b0d9deb768fd580e36e17b39e0b4840253b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/9f/48/d61d5f1ed098161edd88c56cbac49207d7b7b149e613d2cd7e33176c63b3/onnxruntime-1.22.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a2ac5bd9205d831541db4e508e586e764a74f14efdd3f89af7fd20e1bf4a1ed" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c3/16/873b955beda7bada5b0d798d3a601b2ff210e44ad5169f6d405b93892103/onnxruntime-1.22.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64845709f9e8a2809e8e009bc4c8f73b788cee9c6619b7d9930344eae4c9cd36" },
+]
+
+[[package]]
+name = "onnxruntime-embedding-rerank-server"
+version = "0.1.0"
+source = { virtual = "." }
+dependencies = [
+ { name = "fastapi" },
+ { name = "modelscope" },
+ { name = "onnxruntime" },
+ { name = "sentencepiece" },
+ { name = "tiktoken" },
+ { name = "transformers" },
+]
+
+[package.metadata]
+requires-dist = [
+ { name = "fastapi", specifier = ">=0.115.13" },
+ { name = "modelscope", specifier = ">=1.27.1" },
+ { name = "onnxruntime", specifier = ">=1.22.0" },
+ { name = "sentencepiece", specifier = ">=0.2.0" },
+ { name = "tiktoken", specifier = ">=0.9.0" },
+ { name = "transformers", specifier = ">=4.52.4" },
+]
+
+[[package]]
+name = "packaging"
+version = "25.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484" },
+]
+
+[[package]]
+name = "protobuf"
+version = "6.31.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/52/f3/b9655a711b32c19720253f6f06326faf90580834e2e83f840472d752bc8b/protobuf-6.31.1.tar.gz", hash = "sha256:d8cac4c982f0b957a4dc73a80e2ea24fab08e679c0de9deb835f4a12d69aca9a" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f3/6f/6ab8e4bf962fd5570d3deaa2d5c38f0a363f57b4501047b5ebeb83ab1125/protobuf-6.31.1-cp310-abi3-win32.whl", hash = "sha256:7fa17d5a29c2e04b7d90e5e32388b8bfd0e7107cd8e616feef7ed3fa6bdab5c9" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/44/3a/b15c4347dd4bf3a1b0ee882f384623e2063bb5cf9fa9d57990a4f7df2fb6/protobuf-6.31.1-cp310-abi3-win_amd64.whl", hash = "sha256:426f59d2964864a1a366254fa703b8632dcec0790d8862d30034d8245e1cd447" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6a/c9/b9689a2a250264a84e66c46d8862ba788ee7a641cdca39bccf64f59284b7/protobuf-6.31.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:6f1227473dc43d44ed644425268eb7c2e488ae245d51c6866d19fe158e207402" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/76/a1/7a5a94032c83375e4fe7e7f56e3976ea6ac90c5e85fac8576409e25c39c3/protobuf-6.31.1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:a40fc12b84c154884d7d4c4ebd675d5b3b5283e155f324049ae396b95ddebc39" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fa/b1/b59d405d64d31999244643d88c45c8241c58f17cc887e73bcb90602327f8/protobuf-6.31.1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:4ee898bf66f7a8b0bd21bce523814e6fbd8c6add948045ce958b73af7e8878c6" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f7/af/ab3c51ab7507a7325e98ffe691d9495ee3d3aa5f589afad65ec920d39821/protobuf-6.31.1-py3-none-any.whl", hash = "sha256:720a6c7e6b77288b85063569baae8536671b39f15cc22037ec7045658d80489e" },
+]
+
+[[package]]
+name = "pydantic"
+version = "2.11.7"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "annotated-types" },
+ { name = "pydantic-core" },
+ { name = "typing-extensions" },
+ { name = "typing-inspection" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b" },
+]
+
+[[package]]
+name = "pydantic-core"
+version = "2.33.2"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9" },
+]
+
+[[package]]
+name = "pyreadline3"
+version = "3.5.4"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/0f/49/4cea918a08f02817aabae639e3d0ac046fef9f9180518a3ad394e22da148/pyreadline3-3.5.4.tar.gz", hash = "sha256:8d57d53039a1c75adba8e50dd3d992b28143480816187ea5efbd5c78e6c885b7" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl", hash = "sha256:eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6" },
+]
+
+[[package]]
+name = "pyyaml"
+version = "6.0.2"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563" },
+]
+
+[[package]]
+name = "regex"
+version = "2024.11.6"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a" },
+]
+
+[[package]]
+name = "requests"
+version = "2.32.4"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "certifi" },
+ { name = "charset-normalizer" },
+ { name = "idna" },
+ { name = "urllib3" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c" },
+]
+
+[[package]]
+name = "safetensors"
+version = "0.5.3"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/71/7e/2d5d6ee7b40c0682315367ec7475693d110f512922d582fef1bd4a63adc3/safetensors-0.5.3.tar.gz", hash = "sha256:b6b0d6ecacec39a4fdd99cc19f4576f5219ce858e6fd8dbe7609df0b8dc56965" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/18/ae/88f6c49dbd0cc4da0e08610019a3c78a7d390879a919411a410a1876d03a/safetensors-0.5.3-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bd20eb133db8ed15b40110b7c00c6df51655a2998132193de2f75f72d99c7073" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b8/3b/11f1b4a2f5d2ab7da34ecc062b0bc301f2be024d110a6466726bec8c055c/safetensors-0.5.3-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:21d01c14ff6c415c485616b8b0bf961c46b3b343ca59110d38d744e577f9cce7" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/5d/9a/add3e6fef267658075c5a41573c26d42d80c935cdc992384dfae435feaef/safetensors-0.5.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11bce6164887cd491ca75c2326a113ba934be596e22b28b1742ce27b1d076467" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/df/5c/bf2cae92222513cc23b3ff85c4a1bb2811a2c3583ac0f8e8d502751de934/safetensors-0.5.3-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4a243be3590bc3301c821da7a18d87224ef35cbd3e5f5727e4e0728b8172411e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/58/11/7456afb740bd45782d0f4c8e8e1bb9e572f1bf82899fb6ace58af47b4282/safetensors-0.5.3-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8bd84b12b1670a6f8e50f01e28156422a2bc07fb16fc4e98bded13039d688a0d" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/57/3d/fe73a9d2ace487e7285f6e157afee2383bd1ddb911b7cb44a55cf812eae3/safetensors-0.5.3-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:391ac8cab7c829452175f871fcaf414aa1e292b5448bd02620f675a7f3e7abb9" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a6/f8/dae3421624fcc87a89d42e1898a798bc7ff72c61f38973a65d60df8f124c/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cead1fa41fc54b1e61089fa57452e8834f798cb1dc7a09ba3524f1eb08e0317a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ce/20/1fbe16f9b815f6c5a672f5b760951e20e17e43f67f231428f871909a37f6/safetensors-0.5.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1077f3e94182d72618357b04b5ced540ceb71c8a813d3319f1aba448e68a770d" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/5f/18/8e108846b506487aa4629fe4116b27db65c3dde922de2c8e0cc1133f3f29/safetensors-0.5.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:799021e78287bac619c7b3f3606730a22da4cda27759ddf55d37c8db7511c74b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/82/5a/c116111d8291af6c8c8a8b40628fe833b9db97d8141c2a82359d14d9e078/safetensors-0.5.3-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:df26da01aaac504334644e1b7642fa000bfec820e7cef83aeac4e355e03195ff" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/7d/ff/41fcc4d3b7de837963622e8610d998710705bbde9a8a17221d85e5d0baad/safetensors-0.5.3-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:32c3ef2d7af8b9f52ff685ed0bc43913cdcde135089ae322ee576de93eae5135" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/40/ad/2b113098e69c985a3d8fbda4b902778eae4a35b7d5188859b4a63d30c161/safetensors-0.5.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:37f1521be045e56fc2b54c606d4455573e717b2d887c579ee1dbba5f868ece04" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0a/0c/95aeb51d4246bd9a3242d3d8349c1112b4ee7611a4b40f0c5c93b05f001d/safetensors-0.5.3-cp38-abi3-win32.whl", hash = "sha256:cfc0ec0846dcf6763b0ed3d1846ff36008c6e7290683b61616c4b040f6a54ace" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/69/e2/b011c38e5394c4c18fb5500778a55ec43ad6106126e74723ffaee246f56e/safetensors-0.5.3-cp38-abi3-win_amd64.whl", hash = "sha256:836cbbc320b47e80acd40e44c8682db0e8ad7123209f69b093def21ec7cafd11" },
+]
+
+[[package]]
+name = "sentencepiece"
+version = "0.2.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/c9/d2/b9c7ca067c26d8ff085d252c89b5f69609ca93fb85a00ede95f4857865d4/sentencepiece-0.2.0.tar.gz", hash = "sha256:a52c19171daaf2e697dc6cbe67684e0fa341b1248966f6aebb541de654d15843" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/27/5a/141b227ed54293360a9ffbb7bf8252b4e5efc0400cdeac5809340e5d2b21/sentencepiece-0.2.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ea5f536e32ea8ec96086ee00d7a4a131ce583a1b18d130711707c10e69601cb2" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2e/08/a4c135ad6fc2ce26798d14ab72790d66e813efc9589fd30a5316a88ca8d5/sentencepiece-0.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0cb51f53b6aae3c36bafe41e86167c71af8370a039f542c43b0cce5ef24a68c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/49/0a/2fe387f825ac5aad5a0bfe221904882106cac58e1b693ba7818785a882b6/sentencepiece-0.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3212121805afc58d8b00ab4e7dd1f8f76c203ddb9dc94aa4079618a31cf5da0f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/cc/38/e4698ee2293fe4835dc033c49796a39b3eebd8752098f6bd0aa53a14af1f/sentencepiece-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a3149e3066c2a75e0d68a43eb632d7ae728c7925b517f4c05c40f6f7280ce08" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/12/24/fd7ef967c9dad2f6e6e5386d0cadaf65cda8b7be6e3861a9ab3121035139/sentencepiece-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:632f3594d3e7ac8b367bca204cb3fd05a01d5b21455acd097ea4c0e30e2f63d7" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/4f/d2/18246f43ca730bb81918f87b7e886531eda32d835811ad9f4657c54eee35/sentencepiece-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f295105c6bdbb05bd5e1b0cafbd78ff95036f5d3641e7949455a3f4e5e7c3109" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/8a/47/ca237b562f420044ab56ddb4c278672f7e8c866e183730a20e413b38a989/sentencepiece-0.2.0-cp312-cp312-win32.whl", hash = "sha256:fb89f811e5efd18bab141afc3fea3de141c3f69f3fe9e898f710ae7fe3aab251" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/c6/97/d159c32642306ee2b70732077632895438867b3b6df282354bd550cf2a67/sentencepiece-0.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:7a673a72aab81fef5ebe755c6e0cc60087d1f3a4700835d40537183c1703a45f" },
+]
+
+[[package]]
+name = "setuptools"
+version = "80.9.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922" },
+]
+
+[[package]]
+name = "sniffio"
+version = "1.3.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2" },
+]
+
+[[package]]
+name = "starlette"
+version = "0.46.2"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "anyio" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35" },
+]
+
+[[package]]
+name = "sympy"
+version = "1.14.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "mpmath" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5" },
+]
+
+[[package]]
+name = "tiktoken"
+version = "0.9.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "regex" },
+ { name = "requests" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/ea/cf/756fedf6981e82897f2d570dd25fa597eb3f4459068ae0572d7e888cfd6f/tiktoken-0.9.0.tar.gz", hash = "sha256:d02a5ca6a938e0490e1ff957bc48c8b078c88cb83977be1625b1fd8aac792c5d" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/cf/e5/21ff33ecfa2101c1bb0f9b6df750553bd873b7fb532ce2cb276ff40b197f/tiktoken-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e88f121c1c22b726649ce67c089b90ddda8b9662545a8aeb03cfef15967ddd03" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/8e/03/a95e7b4863ee9ceec1c55983e4cc9558bcfd8f4f80e19c4f8a99642f697d/tiktoken-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a6600660f2f72369acb13a57fb3e212434ed38b045fd8cc6cdd74947b4b5d210" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/40/10/1305bb02a561595088235a513ec73e50b32e74364fef4de519da69bc8010/tiktoken-0.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95e811743b5dfa74f4b227927ed86cbc57cad4df859cb3b643be797914e41794" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/1b/40/da42522018ca496432ffd02793c3a72a739ac04c3794a4914570c9bb2925/tiktoken-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99376e1370d59bcf6935c933cb9ba64adc29033b7e73f5f7569f3aad86552b22" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/5c/41/1e59dddaae270ba20187ceb8aa52c75b24ffc09f547233991d5fd822838b/tiktoken-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:badb947c32739fb6ddde173e14885fb3de4d32ab9d8c591cbd013c22b4c31dd2" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/5b/64/b16003419a1d7728d0d8c0d56a4c24325e7b10a21a9dd1fc0f7115c02f0a/tiktoken-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:5a62d7a25225bafed786a524c1b9f0910a1128f4232615bf3f8257a73aaa3b16" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/7a/11/09d936d37f49f4f494ffe660af44acd2d99eb2429d60a57c71318af214e0/tiktoken-0.9.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2b0e8e05a26eda1249e824156d537015480af7ae222ccb798e5234ae0285dbdb" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/80/0e/f38ba35713edb8d4197ae602e80837d574244ced7fb1b6070b31c29816e0/tiktoken-0.9.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:27d457f096f87685195eea0165a1807fae87b97b2161fe8c9b1df5bd74ca6f63" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fe/82/9197f77421e2a01373e27a79dd36efdd99e6b4115746ecc553318ecafbf0/tiktoken-0.9.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cf8ded49cddf825390e36dd1ad35cd49589e8161fdcb52aa25f0583e90a3e01" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f2/bb/4513da71cac187383541facd0291c4572b03ec23c561de5811781bbd988f/tiktoken-0.9.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc156cb314119a8bb9748257a2eaebd5cc0753b6cb491d26694ed42fc7cb3139" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fa/5c/74e4c137530dd8504e97e3a41729b1103a4ac29036cbfd3250b11fd29451/tiktoken-0.9.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cd69372e8c9dd761f0ab873112aba55a0e3e506332dd9f7522ca466e817b1b7a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/de/a8/8f499c179ec900783ffe133e9aab10044481679bb9aad78436d239eee716/tiktoken-0.9.0-cp313-cp313-win_amd64.whl", hash = "sha256:5ea0edb6f83dc56d794723286215918c1cde03712cbbafa0348b33448faf5b95" },
+]
+
+[[package]]
+name = "tokenizers"
+version = "0.21.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "huggingface-hub" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/92/76/5ac0c97f1117b91b7eb7323dcd61af80d72f790b4df71249a7850c195f30/tokenizers-0.21.1.tar.gz", hash = "sha256:a1bb04dc5b448985f86ecd4b05407f5a8d97cb2c0532199b2a302a604a0165ab" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a5/1f/328aee25f9115bf04262e8b4e5a2050b7b7cf44b59c74e982db7270c7f30/tokenizers-0.21.1-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:e78e413e9e668ad790a29456e677d9d3aa50a9ad311a40905d6861ba7692cf41" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ae/1a/4526797f3719b0287853f12c5ad563a9be09d446c44ac784cdd7c50f76ab/tokenizers-0.21.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:cd51cd0a91ecc801633829fcd1fda9cf8682ed3477c6243b9a095539de4aecf3" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/4d/7a/a209b29f971a9fdc1da86f917fe4524564924db50d13f0724feed37b2a4d/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28da6b72d4fb14ee200a1bd386ff74ade8992d7f725f2bde2c495a9a98cf4d9f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/3c/1e/b788b50ffc6191e0b1fc2b0d49df8cff16fe415302e5ceb89f619d12c5bc/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:34d8cfde551c9916cb92014e040806122295a6800914bab5865deb85623931cf" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/36/aa/3626dfa09a0ecc5b57a8c58eeaeb7dd7ca9a37ad9dd681edab5acd55764c/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aaa852d23e125b73d283c98f007e06d4595732104b65402f46e8ef24b588d9f8" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a4/4d/8fbc203838b3d26269f944a89459d94c858f5b3f9a9b6ee9728cdcf69161/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a21a15d5c8e603331b8a59548bbe113564136dc0f5ad8306dd5033459a226da0" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d8/1b/2bd062adeb7c7511b847b32e356024980c0ffcf35f28947792c2d8ad2288/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2fdbd4c067c60a0ac7eca14b6bd18a5bebace54eb757c706b47ea93204f7a37c" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/8a/63/38be071b0c8e06840bc6046991636bcb30c27f6bb1e670f4f4bc87cf49cc/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dd9a0061e403546f7377df940e866c3e678d7d4e9643d0461ea442b4f89e61a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ec/83/afa94193c09246417c23a3c75a8a0a96bf44ab5630a3015538d0c316dd4b/tokenizers-0.21.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:db9484aeb2e200c43b915a1a0150ea885e35f357a5a8fabf7373af333dcc8dbf" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ae/b3/0e1a37d4f84c0f014d43701c11eb8072704f6efe8d8fc2dcdb79c47d76de/tokenizers-0.21.1-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:ed248ab5279e601a30a4d67bdb897ecbe955a50f1e7bb62bd99f07dd11c2f5b6" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ac/33/ff08f50e6d615eb180a4a328c65907feb6ded0b8f990ec923969759dc379/tokenizers-0.21.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:9ac78b12e541d4ce67b4dfd970e44c060a2147b9b2a21f509566d556a509c67d" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/5f/aa/8ae85f69a9f6012c6f8011c6f4aa1c96154c816e9eea2e1b758601157833/tokenizers-0.21.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e5a69c1a4496b81a5ee5d2c1f3f7fbdf95e90a0196101b0ee89ed9956b8a168f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e8/5b/a5d98c89f747455e8b7a9504910c865d5e51da55e825a7ae641fb5ff0a58/tokenizers-0.21.1-cp39-abi3-win32.whl", hash = "sha256:1039a3a5734944e09de1d48761ade94e00d0fa760c0e0551151d4dd851ba63e3" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e6/b6/072a8e053ae600dcc2ac0da81a23548e3b523301a442a6ca900e92ac35be/tokenizers-0.21.1-cp39-abi3-win_amd64.whl", hash = "sha256:0f0dcbcc9f6e13e675a66d7a5f2f225a736745ce484c1a4e07476a89ccdad382" },
+]
+
+[[package]]
+name = "tqdm"
+version = "4.67.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "colorama", marker = "sys_platform == 'win32'" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2" },
+]
+
+[[package]]
+name = "transformers"
+version = "4.52.4"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "filelock" },
+ { name = "huggingface-hub" },
+ { name = "numpy" },
+ { name = "packaging" },
+ { name = "pyyaml" },
+ { name = "regex" },
+ { name = "requests" },
+ { name = "safetensors" },
+ { name = "tokenizers" },
+ { name = "tqdm" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/da/a9/275037087f9d846580b02f2d7cae0e0a6955d46f84583d0151d6227bd416/transformers-4.52.4.tar.gz", hash = "sha256:aff3764441c1adc192a08dba49740d3cbbcb72d850586075aed6bd89b98203e6" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/96/f2/25b27b396af03d5b64e61976b14f7209e2939e9e806c10749b6d277c273e/transformers-4.52.4-py3-none-any.whl", hash = "sha256:203f5c19416d5877e36e88633943761719538a25d9775977a24fe77a1e5adfc7" },
+]
+
+[[package]]
+name = "typing-extensions"
+version = "4.14.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/d1/bc/51647cd02527e87d05cb083ccc402f93e441606ff1f01739a62c8ad09ba5/typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/69/e0/552843e0d356fbb5256d21449fa957fa4eff3bbc135a74a691ee70c7c5da/typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af" },
+]
+
+[[package]]
+name = "typing-inspection"
+version = "0.4.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51" },
+]
+
+[[package]]
+name = "urllib3"
+version = "2.5.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc" },
+]
From 32d578bcfe35fc7bfa34e75b70d46e35dc6c3a34 Mon Sep 17 00:00:00 2001
From: szlele <595128841@qq.com>
Date: Tue, 29 Jul 2025 15:25:24 +0800
Subject: [PATCH 6/6] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=9F=BA=E4=BA=8Enpu?=
=?UTF-8?q?=E7=9A=84server?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../test/rerank_client.py | 4 +-
vllm-ascend-rerank-server/main.py | 61 ++++++
vllm-ascend-rerank-server/rerank_provider.py | 43 ++++
vllm-ascend-rerank-server/test.py | 29 +++
vllm-embedding-rerank-server/.python-version | 1 +
vllm-embedding-rerank-server/Dockerfile | 14 ++
vllm-embedding-rerank-server/README.md | 1 +
.../app/embedding_provider.py | 19 ++
vllm-embedding-rerank-server/app/main.py | 63 ++++++
vllm-embedding-rerank-server/app/models.py | 19 ++
vllm-embedding-rerank-server/app/test.py | 10 +
vllm-embedding-rerank-server/pyproject.toml | 10 +
vllm-embedding-rerank-server/uv.lock | 207 ++++++++++++++++++
13 files changed, 479 insertions(+), 2 deletions(-)
create mode 100644 vllm-ascend-rerank-server/main.py
create mode 100644 vllm-ascend-rerank-server/rerank_provider.py
create mode 100644 vllm-ascend-rerank-server/test.py
create mode 100644 vllm-embedding-rerank-server/.python-version
create mode 100644 vllm-embedding-rerank-server/Dockerfile
create mode 100644 vllm-embedding-rerank-server/README.md
create mode 100644 vllm-embedding-rerank-server/app/embedding_provider.py
create mode 100644 vllm-embedding-rerank-server/app/main.py
create mode 100644 vllm-embedding-rerank-server/app/models.py
create mode 100644 vllm-embedding-rerank-server/app/test.py
create mode 100644 vllm-embedding-rerank-server/pyproject.toml
create mode 100644 vllm-embedding-rerank-server/uv.lock
diff --git a/onnxruntime-embedding-rerank-server/test/rerank_client.py b/onnxruntime-embedding-rerank-server/test/rerank_client.py
index 106cad8..c5cb623 100644
--- a/onnxruntime-embedding-rerank-server/test/rerank_client.py
+++ b/onnxruntime-embedding-rerank-server/test/rerank_client.py
@@ -2,7 +2,7 @@
import numpy as np
import string
-client = HttpClient("http://127.0.0.1:9997/v1")
+client = HttpClient("http://115.120.51.57:11558/v1")
query = "抗生素是谁发现的?请说明发现过程和时间。"
documents = [
@@ -14,7 +14,7 @@
]
payload = {
- "model": "bce",
+ "model": "Qwen/Qwen3-Reranker-8B",
"query": query,
"documents": documents,
"top_n": 3, # 可选参数
diff --git a/vllm-ascend-rerank-server/main.py b/vllm-ascend-rerank-server/main.py
new file mode 100644
index 0000000..bc1f973
--- /dev/null
+++ b/vllm-ascend-rerank-server/main.py
@@ -0,0 +1,61 @@
+import os,uvicorn
+from pydantic import BaseModel
+from fastapi import FastAPI,Request
+from fastapi.concurrency import asynccontextmanager
+from rerank_provider import RerankProvider
+
+@asynccontextmanager
+async def lifespan(app:FastAPI):
+ app.state.rerank_engine = RerankProvider()
+ yield
+ app.state.rerank_engine.destroy()
+
+app = FastAPI(
+ title="Rerank Inference Server",
+ lifespan=lifespan,
+ root_path="/v1",
+ version="1.0",
+ license_info={"name":"Apache License 2.0","identifier":"Apache"}
+ )
+
+class RerankRequest(BaseModel):
+ model: str
+ query: str
+ top_n: int
+ return_documents: bool
+ documents: list[str]
+
+class RerankData(BaseModel):
+ index: int
+ relevance_score: float
+ document: str
+
+class RerankResponse(BaseModel):
+ model: str
+ results: list[RerankData]
+
+@app.post("/rerank", response_model=RerankResponse, summary="文本重排序")
+def text_rerank(request: Request,rerank_request:RerankRequest) -> RerankResponse:
+ query = rerank_request.query
+ documents = rerank_request.documents
+ top_n = rerank_request.top_n
+ return_documents = rerank_request.return_documents
+
+ engine:RerankProvider = request.app.state.rerank_engine
+ results = engine.rerank(query,documents,top_n,return_documents)
+
+ rerank_datas = [
+ RerankData(
+ index = result['id'],
+ relevance_score = result['score'],
+ document = result['document'],
+ )
+ for result in results
+ ]
+ return RerankResponse(
+ model = rerank_request.model,
+ results = rerank_datas
+ )
+
+if __name__ == "__main__":
+ uvicorn.run(app, host="0.0.0.0", port=8000)
\ No newline at end of file
diff --git a/vllm-ascend-rerank-server/rerank_provider.py b/vllm-ascend-rerank-server/rerank_provider.py
new file mode 100644
index 0000000..8dcff73
--- /dev/null
+++ b/vllm-ascend-rerank-server/rerank_provider.py
@@ -0,0 +1,43 @@
+import heapq
+from vllm.distributed.parallel_state import destroy_model_parallel
+from vllm import LLM
+from typing import List
+
+class RerankProvider:
+
+ def __init__(self):
+ self.prefix = '<|im_start|>system\nJudge whether the Document meets the requirements based on the Query and the Instruct provided. Note that the answer can only be "yes" or "no".<|im_end|>\n<|im_start|>user\n'
+ self.suffix = "<|im_end|>\n<|im_start|>assistant\n\n\n\n\n"
+ self.query_template = "{prefix}: Given a web search query, retrieve relevant passages that answer the query\n: {query}\n"
+ self.document_template = ": {doc}{suffix}"
+
+ self.model = LLM(
+ model='Qwen/Qwen3-Reranker-8B',
+ task="score",
+ hf_overrides={
+ "architectures": ["Qwen3ForSequenceClassification"],
+ "classifier_from_token": ["no", "yes"],
+ "is_original_qwen3_reranker": True,
+ },
+ tensor_parallel_size=1,
+ max_model_len=10000,
+ enable_prefix_caching=True,
+ gpu_memory_utilization=0.5)
+
+ def destroy():
+ destroy_model_parallel()
+
+ def rerank(self,query:str,documents:List[str],top_n:int,return_documents:bool=False):
+ query_in = self.query_template.format(prefix=self.prefix, query=query)
+ documents_in = [self.document_template.format(doc=doc, suffix=self.suffix) for doc in documents]
+ outputs = self.model.score(query_in,documents_in)
+
+ all_pairs = [
+ {'id': index, 'score': output.outputs.score, 'document': documents[index] if return_documents else ""}
+ for index, output in enumerate(outputs)
+ ]
+
+ if top_n is not None:
+ return heapq.nlargest(top_n, all_pairs, key=lambda x: x['score'])
+ else:
+ return all_pairs
\ No newline at end of file
diff --git a/vllm-ascend-rerank-server/test.py b/vllm-ascend-rerank-server/test.py
new file mode 100644
index 0000000..5d88deb
--- /dev/null
+++ b/vllm-ascend-rerank-server/test.py
@@ -0,0 +1,29 @@
+from requests import request
+from json import dumps
+
+url = "http://115.120.51.57:11558/v1/rerank"
+query = "抗生素是谁发现的?请说明发现过程和时间。"
+documents = [
+ "路易·巴斯德是微生物学之父,提出了巴氏杀菌法,对疫苗研发有重大贡献。" , # 不相关(无关人物)
+ "亚历山大·弗莱明于1928年偶然发现青霉素。他在实验室中发现霉菌抑制了葡萄球菌的生长,这一发现开启了抗生素时代。", # 完全相关(直接回答核心问题)
+ "抗生素的滥用可能导致耐药性细菌的产生,世界卫生组织已将其列为全球健康威胁。" , # 弱相关(提及抗生素但未回答发现者)
+ "1928年9月28日,弗莱明在伦敦圣玛丽医院记录到青霉素的抑菌效应,但未能纯化该物质。", # 中等相关(提供时间但未完整回答过程)
+ "弗莱明因发现青霉素获得1945年诺贝尔生理学或医学奖,但青霉素的大规模生产由霍华德·弗洛里和厄恩斯特·钱恩实现。", # 高度相关(补充关键细节)
+]
+
+payload = {
+ "model": "Qwen/Qwen3-Reranker-8B",
+ "query": query,
+ "documents": documents,
+ "top_n": 3, # 可选参数
+ "return_documents": True # 可选参数
+}
+response = request("post", url, json=payload)
+response.raise_for_status()
+results = response.json()
+
+print(results)
+
+'''
+{'model': 'Qwen/Qwen3-Reranker-8B', 'results': [{'index': 2, 'relevance_score': 0.999783456325531, 'document': '亚历山大·弗莱明于1928年偶然发现青霉素。他在实验室中发现霉菌抑制了葡萄球菌的生长,这一发现开启了抗生素时代。'}, {'index': 4, 'relevance_score': 0.9525741338729858, 'document': '1928年9月28日,弗莱明在伦敦圣玛丽医院记录到青霉素的抑菌效应,但未能纯化该物质。'}, {'index': 5, 'relevance_score': 0.9032942056655884, 'document': '弗莱明因发现青霉素获得1945年诺贝尔生理学或医学奖,但青霉素的大规模生产由霍华德·弗洛里和厄恩斯特·钱恩实现。'}]}
+'''
\ No newline at end of file
diff --git a/vllm-embedding-rerank-server/.python-version b/vllm-embedding-rerank-server/.python-version
new file mode 100644
index 0000000..e4fba21
--- /dev/null
+++ b/vllm-embedding-rerank-server/.python-version
@@ -0,0 +1 @@
+3.12
diff --git a/vllm-embedding-rerank-server/Dockerfile b/vllm-embedding-rerank-server/Dockerfile
new file mode 100644
index 0000000..e9d3e4e
--- /dev/null
+++ b/vllm-embedding-rerank-server/Dockerfile
@@ -0,0 +1,14 @@
+FROM quay.io/ascend/vllm-ascend:v0.9.2rc1
+
+RUN pip config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple \
+ && pip install fastapi uvicorn
+
+WORKDIR /workspace
+RUN mkdir -p /root/.cache/modelscope/hub/models/Qwen
+
+COPY ./app .
+COPY /root/.cache/modelscope/hub/models/Qwen/Qwen3-Reranker-8B /root/.cache/modelscope/hub/models/Qwen/Qwen3-Reranker-8B
+
+CMD ["python","main.py"]
+
+# docker build -t vllm-qwen3-rerank-server .
\ No newline at end of file
diff --git a/vllm-embedding-rerank-server/README.md b/vllm-embedding-rerank-server/README.md
new file mode 100644
index 0000000..cec9f7a
--- /dev/null
+++ b/vllm-embedding-rerank-server/README.md
@@ -0,0 +1 @@
+### 在昇腾NPU上基于VLLM部署Qwen3-Embedding-8B和Qwen3-Rerank-8B
diff --git a/vllm-embedding-rerank-server/app/embedding_provider.py b/vllm-embedding-rerank-server/app/embedding_provider.py
new file mode 100644
index 0000000..b10b597
--- /dev/null
+++ b/vllm-embedding-rerank-server/app/embedding_provider.py
@@ -0,0 +1,19 @@
+from typing import List
+import torch
+from vllm import LLM
+from vllm.distributed.parallel_state import destroy_model_parallel
+
+class EmbeddingProvider:
+
+ def __init__(self):
+ self.task = 'Given a web search query, retrieve relevant passages that answer the query'
+ self.model = LLM(model="Qwen/Qwen3-Embedding-8B", task="embed")
+
+ def destroy():
+ destroy_model_parallel()
+
+ def embedding(self,documents:List[str]):
+ outputs = self.model.embed(documents)
+ embeddings = torch.tensor([o.outputs.embedding for o in outputs])
+ scores = (embeddings[:2] @ embeddings[2:].T)
+ return scores.tolist()
\ No newline at end of file
diff --git a/vllm-embedding-rerank-server/app/main.py b/vllm-embedding-rerank-server/app/main.py
new file mode 100644
index 0000000..f6a35ee
--- /dev/null
+++ b/vllm-embedding-rerank-server/app/main.py
@@ -0,0 +1,63 @@
+import uvicorn
+from typing import Union
+from pydantic import BaseModel
+from fastapi import FastAPI,Request
+from fastapi.concurrency import asynccontextmanager
+from embedding_provider import EmbeddingProvider
+
+@asynccontextmanager
+async def lifespan(app:FastAPI):
+ app.state.embed_engine = EmbeddingProvider()
+ yield
+ app.state.embed_engine.destroy()
+
+app = FastAPI(
+ title="Embedding Inference Server",
+ lifespan=lifespan,
+ root_path="/v1",
+ version="1.0",
+ license_info={"name":"Apache License 2.0","identifier":"Apache"}
+ )
+
+class EmbeddingRequest(BaseModel):
+ model: str
+ input: list[str]
+
+class Usage(BaseModel):
+ total_tokens: int
+
+class EmbeddingData(BaseModel):
+ embedding: list[Union[float, int]]
+
+class EmbeddingResponse(BaseModel):
+ model: str
+ data: list[EmbeddingData]
+ usage: Usage
+
+@app.post("/embeddings", response_model=EmbeddingResponse, summary="文本向量化")
+def text_embedding(request: Request,embed_request:EmbeddingRequest) -> EmbeddingResponse:
+ texts = embed_request.input
+
+ engine:EmbeddingProvider = request.app.state.embed_engine
+ results = engine.embedding(documents=texts)
+ embeddings = results[0]
+ total_tokens = results[1]
+
+ usage = Usage(total_tokens=total_tokens)
+
+ embedding_datas = [
+ EmbeddingData(
+ embedding = emb,
+ index = count,
+ )
+ for count, emb in enumerate(embeddings)
+ ]
+
+ return EmbeddingResponse(
+ model=embed_request.model,
+ data=embedding_datas,
+ usage=usage
+ )
+
+if __name__ == "__main__":
+ uvicorn.run(app, host="0.0.0.0", port=8097)
\ No newline at end of file
diff --git a/vllm-embedding-rerank-server/app/models.py b/vllm-embedding-rerank-server/app/models.py
new file mode 100644
index 0000000..551273d
--- /dev/null
+++ b/vllm-embedding-rerank-server/app/models.py
@@ -0,0 +1,19 @@
+from typing import Union
+from pydantic import BaseModel
+
+class EmbeddingRequest(BaseModel):
+ model: str
+ input: Union[str, list[str]]
+
+class Usage(BaseModel):
+ total_tokens: int
+
+class EmbeddingData(BaseModel):
+ object: str = "embedding"
+ embedding: list[Union[float, int]]
+
+class EmbeddingResponse(BaseModel):
+ model: str
+ object: str = "list"
+ data: list[EmbeddingData]
+ usage: Usage
\ No newline at end of file
diff --git a/vllm-embedding-rerank-server/app/test.py b/vllm-embedding-rerank-server/app/test.py
new file mode 100644
index 0000000..eeaae84
--- /dev/null
+++ b/vllm-embedding-rerank-server/app/test.py
@@ -0,0 +1,10 @@
+import heapq
+
+scores=[0.1,0.3,0.5]
+documents=['a','b','c']
+all_pairs = [
+ {'id': index+1, 'score': score, 'document': documents[index]}
+ for index, score in enumerate(scores)
+]
+all_pairs = heapq.nlargest(2, all_pairs, key=lambda x: x['score'])
+print(all_pairs)
\ No newline at end of file
diff --git a/vllm-embedding-rerank-server/pyproject.toml b/vllm-embedding-rerank-server/pyproject.toml
new file mode 100644
index 0000000..c6ae93e
--- /dev/null
+++ b/vllm-embedding-rerank-server/pyproject.toml
@@ -0,0 +1,10 @@
+[project]
+name = "vllm-embed-rerank-server"
+version = "0.1.0"
+description = "Add your description here"
+readme = "README.md"
+requires-python = ">=3.12"
+dependencies = [
+ "fastapi>=0.116.1",
+ "uvicorn>=0.35.0",
+]
diff --git a/vllm-embedding-rerank-server/uv.lock b/vllm-embedding-rerank-server/uv.lock
new file mode 100644
index 0000000..01734f0
--- /dev/null
+++ b/vllm-embedding-rerank-server/uv.lock
@@ -0,0 +1,207 @@
+version = 1
+revision = 2
+requires-python = ">=3.12"
+
+[[package]]
+name = "annotated-types"
+version = "0.7.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53" },
+]
+
+[[package]]
+name = "anyio"
+version = "4.9.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "idna" },
+ { name = "sniffio" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c" },
+]
+
+[[package]]
+name = "click"
+version = "8.2.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "colorama", marker = "sys_platform == 'win32'" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b" },
+]
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" },
+]
+
+[[package]]
+name = "fastapi"
+version = "0.116.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "pydantic" },
+ { name = "starlette" },
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/78/d7/6c8b3bfe33eeffa208183ec037fee0cce9f7f024089ab1c5d12ef04bd27c/fastapi-0.116.1.tar.gz", hash = "sha256:ed52cbf946abfd70c5a0dccb24673f0670deeb517a88b3544d03c2a6bf283143" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e5/47/d63c60f59a59467fda0f93f46335c9d18526d7071f025cb5b89d5353ea42/fastapi-0.116.1-py3-none-any.whl", hash = "sha256:c46ac7c312df840f0c9e220f7964bada936781bc4e2e6eb71f1c4d7553786565" },
+]
+
+[[package]]
+name = "h11"
+version = "0.16.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86" },
+]
+
+[[package]]
+name = "idna"
+version = "3.10"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" },
+]
+
+[[package]]
+name = "pydantic"
+version = "2.11.7"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "annotated-types" },
+ { name = "pydantic-core" },
+ { name = "typing-extensions" },
+ { name = "typing-inspection" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b" },
+]
+
+[[package]]
+name = "pydantic-core"
+version = "2.33.2"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5" },
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9" },
+]
+
+[[package]]
+name = "sniffio"
+version = "1.3.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2" },
+]
+
+[[package]]
+name = "starlette"
+version = "0.47.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "anyio" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/0a/69/662169fdb92fb96ec3eaee218cf540a629d629c86d7993d9651226a6789b/starlette-0.47.1.tar.gz", hash = "sha256:aef012dd2b6be325ffa16698f9dc533614fb1cebd593a906b90dc1025529a79b" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/82/95/38ef0cd7fa11eaba6a99b3c4f5ac948d8bc6ff199aabd327a29cc000840c/starlette-0.47.1-py3-none-any.whl", hash = "sha256:5e11c9f5c7c3f24959edbf2dffdc01bba860228acf657129467d8a7468591527" },
+]
+
+[[package]]
+name = "typing-extensions"
+version = "4.14.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76" },
+]
+
+[[package]]
+name = "typing-inspection"
+version = "0.4.1"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51" },
+]
+
+[[package]]
+name = "uvicorn"
+version = "0.35.0"
+source = { registry = "https://repo.huaweicloud.com/repository/pypi/simple" }
+dependencies = [
+ { name = "click" },
+ { name = "h11" },
+]
+sdist = { url = "https://repo.huaweicloud.com/repository/pypi/packages/5e/42/e0e305207bb88c6b8d3061399c6a961ffe5fbb7e2aa63c9234df7259e9cd/uvicorn-0.35.0.tar.gz", hash = "sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01" }
+wheels = [
+ { url = "https://repo.huaweicloud.com/repository/pypi/packages/d2/e2/dc81b1bd1dcfe91735810265e9d26bc8ec5da45b4c0f6237e286819194c3/uvicorn-0.35.0-py3-none-any.whl", hash = "sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a" },
+]
+
+[[package]]
+name = "vllm-embed-rerank-server"
+version = "0.1.0"
+source = { virtual = "." }
+dependencies = [
+ { name = "fastapi" },
+ { name = "uvicorn" },
+]
+
+[package.metadata]
+requires-dist = [
+ { name = "fastapi", specifier = ">=0.116.1" },
+ { name = "uvicorn", specifier = ">=0.35.0" },
+]