Compare commits

...

10 Commits

Author SHA1 Message Date
martsforever 10040962ad feat: RENAME FILES 2026-04-14 21:34:33 +08:00
martsforever ec237e0a86 feat: resume vue 2026-04-13 20:09:00 +08:00
martsforever c4db1745c4 feat: 默认开启跨域 True 2026-04-08 18:33:48 +08:00
martsforever 193041610e feat: 添加依赖 greenlet 2026-04-08 18:31:36 +08:00
martsforever 537bb136e9 feat: adjust comments 2026-04-07 18:24:42 +08:00
martsforever 0a157fa4f9 feat: rename files 2026-04-07 16:34:14 +08:00
martsforever 7e2492dcd6 feat: ResumeUserModel 2026-04-05 15:39:17 +08:00
martsforever 0118937f77 feat: 换掉基础的视觉模型doubao-1-5-vision-pro 2026-04-04 20:50:03 +08:00
martsforever a3c7449dee feat: 换掉基础的视觉模型doubao-1-5-vision-pro 2026-04-04 20:49:51 +08:00
martsforever 2afe630c16 feat: comments 2026-04-04 20:32:30 +08:00
13 changed files with 64 additions and 19 deletions
+2 -2
View File
@@ -9,7 +9,7 @@ LLM_KEY_HUOSHAN=dc7979dc-af60-4700-XXXX-XXXXXXXXXXXX # 火山引擎模型服
LLM_KEY_BAILIAN=sk-248f811295914adcad837XXXXXXXXXXX # 阿里云百炼模型服务平台key LLM_KEY_BAILIAN=sk-248f811295914adcad837XXXXXXXXXXX # 阿里云百炼模型服务平台key
LLM_KEY_DEEPSEEK=sk-a89d0ff9421a43fca5f0xxxxxxxxxxxx # Deepseek模型服务平台key LLM_KEY_DEEPSEEK=sk-a89d0ff9421a43fca5f0xxxxxxxxxxxx # Deepseek模型服务平台key
SERVER_PORT = 7004 # 服务启动端口 SERVER_PORT = 7005 # 服务启动端口
SERVER_ENABLE_CORS = False # 是否允许跨域 SERVER_ENABLE_CORS = True # 是否允许跨域
SERVER_FILE_SAVE_PATH=/www/wwwroot/web/web/upload_file/ # 文件保存在服务器上的路径 SERVER_FILE_SAVE_PATH=/www/wwwroot/web/web/upload_file/ # 文件保存在服务器上的路径
SERVER_FILE_PUBLIC_PATH=/web/upload_file/ # 文件在浏览器上的访问路径 SERVER_FILE_PUBLIC_PATH=/web/upload_file/ # 文件在浏览器上的访问路径
+2 -2
View File
@@ -23,8 +23,8 @@ ai_configs = {
'url': 'https://ark.cn-beijing.volces.com/api/v3/chat/completions', 'url': 'https://ark.cn-beijing.volces.com/api/v3/chat/completions',
'key': env.llm_key_huoshan, 'key': env.llm_key_huoshan,
}, },
'doubao-vision-lite': { 'huoshan-doubao-vision': {
'model': 'doubao-1.5-vision-lite-250315', 'model': 'doubao-1-5-vision-pro-32k-250115',
'url': 'https://ark.cn-beijing.volces.com/api/v3/chat/completions', 'url': 'https://ark.cn-beijing.volces.com/api/v3/chat/completions',
'key': env.llm_key_huoshan, 'key': env.llm_key_huoshan,
}, },
+1 -1
View File
@@ -5,7 +5,7 @@ from fastapi import FastAPI
from sqlmodel import Field, select from sqlmodel import Field, select
from app.model.BasicModel import BasicModel from app.model.BasicModel import BasicModel
from app.model.LlmDemoMdel import LlmDemoModel from app.model.LlmDemoModel import LlmDemoModel
from app.utils.model_utils import FormattedDatetime from app.utils.model_utils import FormattedDatetime
from app.utils.mysql_utils import AsyncSessionDep from app.utils.mysql_utils import AsyncSessionDep
+13
View File
@@ -0,0 +1,13 @@
from sqlmodel import Field
from app.model.BasicModel import BasicModel
from app.utils.model_utils import FormattedDatetime, FormattedDate, FormattedDecimal
class ResumeTemplateVueModel(BasicModel, table=True):
__tablename__ = "llm_resume_template_vue"
source_code: str | None = Field(default=None, description="简历模板TSX代码")
thumb_image: str | None = Field(default=None, description="简历模板缩略图")
default_primary: str | None = Field(default=None, description="默认主题色")
default_secondary: str | None = Field(default=None, description="默认次级色")
+12
View File
@@ -0,0 +1,12 @@
from sqlmodel import Field
from app.model.BasicModel import BasicModel
from app.utils.model_utils import FormattedDatetime, FormattedDate, FormattedDecimal
class ResumeUserModel(BasicModel, table=True):
__tablename__ = "llm_resume_user"
source_code: str | None = Field(default=None, description="简历模板TSX代码")
thumb_image: str | None = Field(default=None, description="简历模板缩略图")
resume_json_string: str | None = Field(default=None, description="简历模板JSON数据")
+12
View File
@@ -0,0 +1,12 @@
from sqlmodel import Field
from app.model.BasicModel import BasicModel
from app.utils.model_utils import FormattedDatetime, FormattedDate, FormattedDecimal
class ResumeUserVueModel(BasicModel, table=True):
__tablename__ = "llm_resume_user_vue"
source_code: str | None = Field(default=None, description="简历模板TSX代码")
thumb_image: str | None = Field(default=None, description="简历模板缩略图")
resume_json_string: str | None = Field(default=None, description="简历模板JSON数据")
+11 -5
View File
@@ -4,9 +4,12 @@ from app.controller.add_docs_route import add_docs_route
from app.controller.add_file_route import add_file_route from app.controller.add_file_route import add_file_route
from app.controller.add_graph_proxy_route import add_graph_proxy_route from app.controller.add_graph_proxy_route import add_graph_proxy_route
from app.controller.add_test_route import add_test_route from app.controller.add_test_route import add_test_route
from app.model.LlmDemoMdel import LlmDemoModel from app.model.LlmDemoModel import LlmDemoModel
from app.model.ResumeTemplateModel import ResumeTemplateModel from app.model.ResumeTemplateModel import ResumeTemplateModel
from app.utils.add_llm_routes import add_llm_routes from app.model.ResumeTemplateVueModel import ResumeTemplateVueModel
from app.model.ResumeUserModel import ResumeUserModel
from app.model.ResumeUserVueModel import ResumeUserVueModel
from app.utils.add_proxy_routes import add_proxy_routes
from app.utils.add_model_routes import add_model_routes from app.utils.add_model_routes import add_model_routes
from app.utils.next_id import add_next_id_route from app.utils.next_id import add_next_id_route
@@ -20,11 +23,14 @@ routes = [
add_next_id_route, # 生成ID接口 add_next_id_route, # 生成ID接口
add_file_route, # 文件上传接口 add_file_route, # 文件上传接口
lambda app: add_llm_routes(app, 'huoshan-doubao'), lambda app: add_proxy_routes(app, 'huoshan-doubao'),
lambda app: add_llm_routes(app, 'doubao-vision-lite'), lambda app: add_proxy_routes(app, 'huoshan-doubao-vision'),
lambda app: add_llm_routes(app, 'bailian-qwen3.6-plus'), lambda app: add_proxy_routes(app, 'bailian-qwen3.6-plus'),
lambda app: add_model_routes(app,LlmDemoModel,'/llm_demo'), # LlmDemo 测试用户模块 lambda app: add_model_routes(app,LlmDemoModel,'/llm_demo'), # LlmDemo 测试用户模块
lambda app: add_model_routes(app,ResumeTemplateModel,'/llm_resume_template'), # 简历模板 lambda app: add_model_routes(app,ResumeTemplateModel,'/llm_resume_template'), # 简历模板
lambda app: add_model_routes(app,ResumeUserModel,'/llm_resume_user'), # 用户简历
lambda app: add_model_routes(app,ResumeTemplateVueModel,'/llm_resume_template_vue'),# 简历模板
lambda app: add_model_routes(app,ResumeUserVueModel,'/llm_resume_user_vue'), # 用户简历
] ]
# /*@formatter:on*/ # /*@formatter:on*/
+2
View File
@@ -5,6 +5,8 @@ def next_thread_id():
return str(uuid.uuid4()) return str(uuid.uuid4())
# 用于配置LangServe的add_routes函数的per_req_config_modifier参数
# 将请求中的config参数传递给Graph
async def PER_REQ_CONFIG_MODIFIER(config, request): async def PER_REQ_CONFIG_MODIFIER(config, request):
body = await request.json() body = await request.json()
return { return {
+6 -6
View File
@@ -58,7 +58,7 @@ def add_model_routes(app: FastAPI, clazz: type[BasicModel], route_prefix: str):
@router.post('/item') @router.post('/item')
async def _item(body: ItemQuerySchema, session: AsyncSessionDep): async def _item(body: ItemQuerySchema, session: AsyncSessionDep):
""" """
获取用户详情 获取记录详情
""" """
query = select(clazz).where(clazz.id == body.id) query = select(clazz).where(clazz.id == body.id)
result = await session.execute(query) result = await session.execute(query)
@@ -68,19 +68,19 @@ def add_model_routes(app: FastAPI, clazz: type[BasicModel], route_prefix: str):
@router.post('/insert') @router.post('/insert')
async def _insert(body: InsertBodySchema, session: AsyncSessionDep): async def _insert(body: InsertBodySchema, session: AsyncSessionDep):
""" """
插入用户 插入记录
""" """
new_obj = body.row new_obj = body.row
if not new_obj.id: if not new_obj.id:
new_obj.id = str(uuid.uuid4()) new_obj.id = str(uuid.uuid4())
session.add(new_obj) session.add(new_obj)
await session.commit() await session.commit()
return new_obj return {"result": new_obj}
@router.post('/update') @router.post('/update')
async def _update(body: UpdateBodySchema, session: AsyncSessionDep): async def _update(body: UpdateBodySchema, session: AsyncSessionDep):
""" """
更新用户 更新记录
""" """
edit_obj = body.row edit_obj = body.row
query = select(clazz).where(clazz.id == edit_obj.id) query = select(clazz).where(clazz.id == edit_obj.id)
@@ -100,12 +100,12 @@ def add_model_routes(app: FastAPI, clazz: type[BasicModel], route_prefix: str):
setattr(query_cls, field, value) setattr(query_cls, field, value)
session.add(query_cls) session.add(query_cls)
await session.commit() await session.commit()
return query_cls return {"result": query_cls}
@router.post('/delete') @router.post('/delete')
async def _delete(body: clazz, session: AsyncSessionDep): async def _delete(body: clazz, session: AsyncSessionDep):
""" """
更新用户 删除记录
""" """
query = select(clazz).where(clazz.id == body.id) query = select(clazz).where(clazz.id == body.id)
result = await session.execute(query) result = await session.execute(query)
@@ -46,7 +46,7 @@ async def proxy_openai_request(request: Request, config_key: str):
return response.json() return response.json()
def add_llm_routes(app: FastAPI, config_name: str): def add_proxy_routes(app: FastAPI, config_name: str):
""" """
动态生成路由的辅助函数 动态生成路由的辅助函数
""" """
Generated
+1 -2
View File
@@ -442,7 +442,6 @@ description = "Lightweight in-process concurrent programming"
optional = false optional = false
python-versions = ">=3.10" python-versions = ">=3.10"
groups = ["main"] groups = ["main"]
markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""
files = [ files = [
{file = "greenlet-3.3.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9bc885b89709d901859cf95179ec9f6bb67a3d2bb1f0e88456461bd4b7f8fd0d"}, {file = "greenlet-3.3.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9bc885b89709d901859cf95179ec9f6bb67a3d2bb1f0e88456461bd4b7f8fd0d"},
{file = "greenlet-3.3.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b568183cf65b94919be4438dc28416b234b678c608cafac8874dfeeb2a9bbe13"}, {file = "greenlet-3.3.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b568183cf65b94919be4438dc28416b234b678c608cafac8874dfeeb2a9bbe13"},
@@ -2632,4 +2631,4 @@ reference = "tsinghua"
[metadata] [metadata]
lock-version = "2.1" lock-version = "2.1"
python-versions = "^3.11" python-versions = "^3.11"
content-hash = "b6818d0575955350eb3baee241d4b21a201d597808a7e9ea0a3ebd0dcb6427cf" content-hash = "8c1645dc7dcf8bbfe763f01d59e402eec143e53bc925a9e70ca45d47e7df56e1"
+1
View File
@@ -19,6 +19,7 @@ pydantic-settings = "2.10.1"
psutil = "7.0.0" psutil = "7.0.0"
asyncmy = "0.2.10" asyncmy = "0.2.10"
sqlmodel = "0.0.24" sqlmodel = "0.0.24"
greenlet = "^3.2.3"
aiofiles = "24.1.0" aiofiles = "24.1.0"
python-multipart = "0.0.20" python-multipart = "0.0.20"