Files
data-ge/project.md
2025-12-08 23:11:43 +08:00

23 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

项目结构与逻辑
app/main.py创建 FastAPI 应用与生命周期,初始化共享 httpx.AsyncClient 和 LLMGateway统一异常处理后暴露四个接口聊天代理、导入分析、表画像流水线、表片段入库。
app/models.py定义所有请求/响应模型与枚举LLM 请求、导入分析作业、表画像作业、片段入库等),并给出字段校验与默认值。
app/services核心业务逻辑
gateway.py 将 /v1/chat/completions 请求转发到 NEW_API_BASE_URL带可选 Bearer Token并归一化返回。
import_analysis.py 组装导入提示词prompt/data_import_analysis.md、解析/截断样本、调用统一聊天接口、抽取 JSON 结果与 token 用量,最后回调业务方。
table_profiling.py 串行执行 4 步流水线Great Expectations profiling → LLM 结果描述prompt/ge_result_desc_prompt.md→ 片段生成prompt/snippet_generator.md→ 片段别名prompt/snippet_alias_generator.md每步都回调状态与结果。
table_snippet.py 将各步骤结果 upsert 到数据库表,自动序列化 JSON/大小信息并构造 INSERT ... ON DUPLICATE KEY UPDATE。
app/providers/*各云厂商直连客户端OpenAI/Anthropic/OpenRouter/Gemini/Qwen/DeepSeek实现统一 chat 接口;当前主流程通过 new-api 转发,但保留直连能力。
prompt/ 存放提示词模板scripts/ 与 test/ 目录提供接口调用示例和回归样本table_snippet.sql 给出 action_results 表结构(用于片段与 profiling 结果持久化)。
功能/需求说明
LLM 网关POST /v1/chat/completions 接收 LLMRequestprovider+model+messages 等),将 payload 透传到 NEW_API_BASE_URL/v1/chat/completions带可选 NEW_API_AUTH_TOKEN 认证;异常时返回 4xx/5xx 并记录原始响应。
导入分析异步POST /v1/import/analyze 接收导入样本rows/headers/raw_csv/table_schema、目标模型 llm_model默认 DEFAULT_IMPORT_MODEL可被 IMPORT_SUPPORTED_MODELS 白名单限制)、温度与回调地址。服务将样本转 CSV、附加 schema拼接系统+用户消息后调用统一聊天接口,解析首个 choice 中的 JSON 作为分析结果,连同 LLM usage 一并以回调形式返回;失败时回调 status=failed 与错误信息。
表画像流水线异步POST /v1/table/profiling 接收表标识、版本号、回调地址及 GE/LLM 配置datasource/batch_request、连接串模板、LLM 模型与超时)。流水线按顺序执行:
Great Expectations profiling可指定 profiler 类型、datasource、runtime SQL 查询/表),生成完整与摘要 JSON 及 Data Docs 路径;
调用聊天接口生成 GE 结果描述 JSON
基于描述生成 SQL 片段数组;
生成片段别名/关键词。
每步成功/失败都会回调payload 包含 action_type、结果 JSON、模型、llm_usage、报错信息等。
片段结果入库POST /v1/table/snippet 接收 TableSnippetUpsertRequest表/版本、action 类型、状态、schema、模型信息、各阶段 JSON 及大小、错误码、时间戳等),组装到 action_results 表进行 UPSERT返回是否更新已有记录。
配置与运行要求:核心环境变量在 app/settings.pyAPI Keys、DEFAULT_IMPORT_MODEL、IMPORT_GATEWAY_BASE_URL/NEW_API_BASE_URL、模型白名单、数据库 URL 等);日志使用 logging.yaml 自动创建 logs/HTTP 客户端超时/代理可通过 HTTP_CLIENT_TIMEOUT、HTTP_CLIENT_TRUST_ENV、HTTP_CLIENT_PROXY 控制。 调试可用 uvicorn app.main:app --reloadDocker 由 Dockerfile/docker-compose.yml 提供。