Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added API_zh-CN.md
Empty file.
4 changes: 3 additions & 1 deletion llm_web_kit/api/models/response.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class HTMLParseData(BaseModel):
llm_response: Dict[str, int] = Field(default_factory=dict, description="LLM 项目打标结果")
typical_main_html: Optional[str] = Field(None, description="解析得到的主体 HTML")
html_target_list: List[Any] = Field(default_factory=list, description="正文候选/目标列表")
markdown: Optional[str] = Field(None, description="从正文HTML提取的Markdown格式内容")


class HTMLParseResponse(BaseResponse):
Expand All @@ -68,7 +69,8 @@ class HTMLParseResponse(BaseResponse):
"item_id 9": 1
},
"typical_main_html": "<html></html>",
"html_target_list": []
"html_target_list": [],
"markdown": "# Hello World"
},
"metadata": None
}
Expand Down
24 changes: 20 additions & 4 deletions llm_web_kit/api/run_server.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
#!/usr/bin/env python3
"""API 服务器启动脚本.

用于启动 LLM Web Kit API 服务。
用于启动 LLM Web Kit API 服务。 支持通过命令行参数 `--port` 指定端口号。
"""

import argparse
import os
import sys

Expand All @@ -16,14 +17,29 @@

if __name__ == "__main__":
settings = get_settings()

# 创建参数解析器
parser = argparse.ArgumentParser(description="启动 LLM Web Kit API 服务器。")
parser.add_argument(
"--port",
type=int,
default=settings.port,
help=f"指定服务器运行的端口号 (默认: {settings.port},从配置中读取)。"
)
args = parser.parse_args()

# 使用命令行参数指定的端口或配置中的默认端口
port_to_use = args.port

print("启动 LLM Web Kit API 服务器...")
print(f"API 文档地址: http://{settings.host}:{settings.port}/docs")
print(f"ReDoc 文档地址: http://{settings.host}:{settings.port}/redoc")
print(f"服务将运行在: http://{settings.host}:{port_to_use}")
print(f"API 文档地址: http://{settings.host}:{port_to_use}/docs")
print(f"ReDoc 文档地址: http://{settings.host}:{port_to_use}/redoc")

uvicorn.run(
"llm_web_kit.api.main:app",
host=settings.host,
port=settings.port,
port=port_to_use,
reload=True,
log_level=(settings.log_level or "INFO").lower()
)
6 changes: 5 additions & 1 deletion llm_web_kit/api/services/html_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

from typing import Any, Dict, Optional

from llm_web_kit.simple import extract_content_from_main_html

from ..dependencies import get_inference_service, get_logger, get_settings

logger = get_logger(__name__)
Expand Down Expand Up @@ -67,7 +69,9 @@ async def parse_html(
pre_data[PreDataJsonKey.LLM_RESPONSE] = llm_response
parser = MapItemToHtmlTagsParser({})
pre_data = parser.parse_single(pre_data)

main_html = pre_data[PreDataJsonKey.TYPICAL_MAIN_HTML]
mm_nlp_md = extract_content_from_main_html(url, main_html, 'mm_md', use_raw_image_url=True)
pre_data['markdown'] = mm_nlp_md
# 将 PreDataJson 转为标准 dict,避免响应模型校验错误
return dict(pre_data.items())

Expand Down
8 changes: 4 additions & 4 deletions llm_web_kit/api/services/inference_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ class InferenceConfig:
top_p: float = 0.95
max_output_tokens: int = 8192
tensor_parallel_size: int = 1
# 正式环境修改为bfloat16
dtype: str = 'float16'
# 测试环境修改为float16
dtype: str = 'bfloat16'
template: bool = True


Expand Down Expand Up @@ -339,8 +339,8 @@ async def _init_model(self):
trust_remote_code=True,
dtype=config.dtype,
tensor_parallel_size=config.tensor_parallel_size,
# 正式环境删掉
max_model_len=config.max_tokens, # 减少序列长度避免内存不足
# 测试环境取消注释
# max_model_len=config.max_tokens, # 减少序列长度避免内存不足
)

logger.info(f'模型初始化成功: {self.model_path}')
Expand Down