Skip to content

Commit d999613

Browse files
committed
refactor: 优化环境变量获取逻辑,确保默认值处理
- 在多个文件中更新环境变量的获取方式,使用 `or` 语法简化代码,确保在未设置环境变量时使用默认值。 - 移除 `.env.template` 中与 LightRAG 相关的环境变量配置,简化配置文件。 - 更新 `pyproject.toml` 中的项目描述,提供更清晰的项目定位。 - 在文档中增加对图片上传响应格式的详细说明,提升用户理解。
1 parent 628b37c commit d999613

File tree

18 files changed

+49
-45
lines changed

18 files changed

+49
-45
lines changed

.env.template

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ MYSQL_DATABASE=database_name
2626
MYSQL_PORT=3306
2727
MYSQL_CHARSET=utf8mb4
2828

29-
# region lightrag
30-
LIGHTRAG_LLM_PROVIDER=
31-
LIGHTRAG_LLM_NAME=
32-
# endregion lightrag
3329

3430

3531
# region neo4j

docs/latest/advanced/agents-config.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,4 +148,20 @@ MYSQL_CHARSET=utf8mb4
148148

149149
智能体会自动识别多模态消息并将其传递给支持图片的模型。如果模型不支持图片,会自动忽略图片内容,只处理文本部分。系统会将图片转换为符合模型要求的格式(通常是 base64 编码的 JPEG 或 PNG),确保与主流多模态模型兼容。
150150

151-
目前仅支持上传单个图片,图片直接以 base64 存储在数据库
151+
目前仅支持上传单个图片,图片以 base64 编码形式存储在数据库。系统会自动处理图片的格式转换和压缩,并生成缩略图以优化性能。
152+
153+
### 图片上传响应格式
154+
155+
```json
156+
{
157+
"success": true,
158+
"image_content": "<base64编码的原始图片数据>",
159+
"thumbnail_content": "<base64编码的缩略图数据>",
160+
"width": 1024,
161+
"height": 768,
162+
"format": "JPEG",
163+
"mime_type": "image/jpeg"
164+
}
165+
```
166+
167+
系统会将图片信息与用户查询一同传递给支持多模态的模型,并自动适配模型要求的格式。

docs/latest/intro/knowledge-base.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ LightRAG 知识库可在知识库详情中可视化,但不支持在侧边栏
2626
在 Neo4j 的检索中可以看到,实际上 LightRAG 的节点和边依然是和知识图谱本身构建在了同一个 Neo4j 数据库中,但是使用了特殊的 tag 做区分。这点在后面介绍知识图谱的时候也会额外说明。
2727

2828

29-
系统默认使用 `siliconflow``Qwen/Qwen3-30B-A3B-Instruct-2507` 模型进行图谱构建。可通过环境变量自定义图谱构建模型:
30-
31-
<<< @/../.env.template#lightrag{bash}
32-
3329

3430
## 文档管理
3531

docs/latest/intro/model-config.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,14 @@ DEFAULT_CHAT_MODEL_PROVIDERS: dict[str, ChatModelProvider] = {
104104
}
105105
```
106106

107-
### 3. 配置环境变量
107+
### 2. 配置环境变量
108108

109109
在 `.env` 文件中添加对应的环境变量:
110110
```env
111111
CUSTOM_API_KEY_ENV_NAME=your_api_key_here
112112
```
113113

114-
### 4. 重新部署
114+
### 3. 重新部署
115115

116116
```bash
117117
docker compose restart api-dev

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[project]
22
name = "yuxi-know"
33
version = "0.4.0.dev"
4-
description = "Add your description here"
4+
description = "基于大模型的智能知识库与知识图谱智能体开发平台,融合了 RAG 技术与知识图谱技术,基于 LangGraph v1 + Vue.js + FastAPI + LightRAG 架构构建"
55
readme = "README.md"
66
requires-python = ">=3.11"
77
dependencies = [

scripts/rename_milvus_collections.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ def rename_and_resolve_duplicates():
1919
Connects to Milvus, renames collections from 'kb_kb_' to 'kb_',
2020
and resolves duplicates by keeping the collection with more rows.
2121
"""
22-
milvus_uri = os.getenv("MILVUS_URI", "http://localhost:19530")
23-
milvus_token = os.getenv("MILVUS_TOKEN", "")
22+
milvus_uri = os.getenv("MILVUS_URI") or "http://localhost:19530"
23+
milvus_token = os.getenv("MILVUS_TOKEN") or ""
2424
connection_alias = "rename_script"
2525

2626
try:

src/agents/common/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def load_chat_model(fully_specified_name: str, **kwargs) -> BaseChatModel:
2222

2323
env_var = model_info.env
2424

25-
api_key = os.getenv(env_var, env_var)
25+
api_key = os.getenv(env_var) or env_var
2626

2727
base_url = get_docker_safe_url(model_info.base_url)
2828

src/agents/common/toolkits/mysql/tools.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ def get_connection_manager() -> MySQLConnectionManager:
3030
"user": os.getenv("MYSQL_USER"),
3131
"password": os.getenv("MYSQL_PASSWORD"),
3232
"database": os.getenv("MYSQL_DATABASE"),
33-
"port": int(os.getenv("MYSQL_PORT", "3306")),
33+
"port": int(os.getenv("MYSQL_PORT") or "3306"),
3434
"charset": "utf8mb4",
35-
"description": os.getenv("MYSQL_DATABASE_DESCRIPTION", "默认 MySQL 数据库"),
35+
"description": os.getenv("MYSQL_DATABASE_DESCRIPTION") or "默认 MySQL 数据库",
3636
}
3737
# 验证配置完整性
3838
required_keys = ["host", "user", "password", "database"]

src/config/app.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ def __init__(self, **data):
120120

121121
def _setup_paths(self):
122122
"""设置配置文件路径"""
123-
self.save_dir = os.getenv("SAVE_DIR", self.save_dir)
123+
self.save_dir = os.getenv("SAVE_DIR") or self.save_dir
124124
self._config_file = Path(self.save_dir) / "config" / "base.toml"
125125
self._config_file.parent.mkdir(parents=True, exist_ok=True)
126126

@@ -169,7 +169,7 @@ def _load_model_names(self, model_names_data):
169169
def _handle_environment(self):
170170
"""处理环境变量和运行时状态"""
171171
# 处理模型目录
172-
self.model_dir = os.environ.get("MODEL_DIR", self.model_dir)
172+
self.model_dir = os.environ.get("MODEL_DIR") or self.model_dir
173173
if self.model_dir:
174174
if os.path.exists(self.model_dir):
175175
logger.debug(f"Model directory ({self.model_dir}) contains: {os.listdir(self.model_dir)}")

src/knowledge/implementations/lightrag.py

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,13 @@
88
from neo4j import GraphDatabase
99
from pymilvus import connections, utility
1010

11+
from src import config
1112
from src.knowledge.base import KnowledgeBase
1213
from src.knowledge.indexing import process_file_to_markdown, process_url_to_markdown
1314
from src.knowledge.utils.kb_utils import get_embedding_config, prepare_item_metadata
1415
from src.utils import hashstr, logger
1516
from src.utils.datetime_utils import shanghai_now
1617

17-
LIGHTRAG_LLM_PROVIDER = os.getenv("LIGHTRAG_LLM_PROVIDER", "siliconflow")
18-
LIGHTRAG_LLM_NAME = os.getenv("LIGHTRAG_LLM_NAME", "zai-org/GLM-4.5-Air")
19-
2018

2119
class LightRagKB(KnowledgeBase):
2220
"""基于 LightRAG 的知识库实现"""
@@ -53,8 +51,8 @@ def delete_database(self, db_id: str) -> dict:
5351
"""删除数据库,同时清除Milvus和Neo4j中的数据"""
5452
# Drop Milvus collection
5553
try:
56-
milvus_uri = os.getenv("MILVUS_URI", "http://localhost:19530")
57-
milvus_token = os.getenv("MILVUS_TOKEN", "")
54+
milvus_uri = os.getenv("MILVUS_URI") or "http://localhost:19530"
55+
milvus_token = os.getenv("MILVUS_TOKEN") or ""
5856
connection_alias = f"lightrag_{hashstr(db_id, 6)}"
5957

6058
connections.connect(alias=connection_alias, uri=milvus_uri, token=milvus_token)
@@ -73,9 +71,9 @@ def delete_database(self, db_id: str) -> dict:
7371
logger.error(f"Failed to drop Milvus collection {db_id}: {e}")
7472

7573
# Delete Neo4j data
76-
neo4j_uri = os.getenv("NEO4J_URI", "bolt://localhost:7687")
77-
neo4j_username = os.getenv("NEO4J_USERNAME", "neo4j")
78-
neo4j_password = os.getenv("NEO4J_PASSWORD", "0123456789")
74+
neo4j_uri = os.getenv("NEO4J_URI") or "bolt://localhost:7687"
75+
neo4j_username = os.getenv("NEO4J_USERNAME") or "neo4j"
76+
neo4j_password = os.getenv("NEO4J_PASSWORD") or "0123456789"
7977

8078
try:
8179
driver = GraphDatabase.driver(neo4j_uri, auth=(neo4j_username, neo4j_password))
@@ -118,7 +116,7 @@ async def _create_kb_instance(self, db_id: str, kb_config: dict) -> LightRAG:
118116
if isinstance(metadata.get("language"), str) and metadata.get("language"):
119117
addon_params.setdefault("language", metadata.get("language"))
120118
# 默认语言从环境变量读取,默认 English
121-
addon_params.setdefault("language", os.getenv("SUMMARY_LANGUAGE", "English"))
119+
addon_params.setdefault("language", os.getenv("SUMMARY_LANGUAGE") or "English")
122120

123121
# 创建工作目录
124122
working_dir = os.path.join(self.work_dir, db_id)
@@ -181,10 +179,8 @@ def _get_llm_func(self, llm_info: dict):
181179
model_spec = f"{llm_info['provider']}/{llm_info['model_name']}"
182180
logger.info(f"Using user-selected LLM: {model_spec}")
183181
else:
184-
provider = LIGHTRAG_LLM_PROVIDER
185-
model_name = LIGHTRAG_LLM_NAME
186-
model_spec = f"{provider}/{model_name}"
187-
logger.info(f"Using default LLM from environment: {provider}/{model_name}")
182+
model_spec = config.default_model
183+
logger.info(f"Using default LLM from environment: {model_spec}")
188184

189185
model = select_model(model_spec=model_spec)
190186

0 commit comments

Comments
 (0)