| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- Metadata-Version: 2.4
- Name: finrep-algo-agent
- Version: 0.1.0
- Summary: 财顾报告 Agent — Python 算法服务(FastAPI)
- Requires-Python: >=3.11
- Description-Content-Type: text/markdown
- Requires-Dist: fastapi>=0.110
- Requires-Dist: uvicorn[standard]>=0.27
- Requires-Dist: pydantic>=2
- Requires-Dist: pydantic-settings>=2
- Requires-Dist: httpx>=0.27
- Requires-Dist: jinja2>=3.1
- Requires-Dist: python-multipart>=0.0.9
- Requires-Dist: pypdf>=4.0
- Provides-Extra: dev
- Requires-Dist: pytest>=8; extra == "dev"
- Requires-Dist: pytest-asyncio>=0.24; extra == "dev"
- # finrep-algo-agent
- Python 算法服务骨架:健康检查、`/v1/outline/l1|l2`、`/v1/section` 占位实现,便于与 Java `pythonagent` 联调。
- ## 本地运行
- ```bash
- cd algo
- python -m venv .venv
- .\.venv\Scripts\activate
- pip install -e ".[dev]"
- uvicorn finrep_algo_agent.main:app --reload --host 0.0.0.0 --port 8002 --app-dir src
- ```
- ## 环境变量
- 复制 `env.example` 为 `.env`(可选)。主要项:
- - `FINREP_LLM_BASE_URL`:OpenAI 兼容网关地址,如 `https://api.openai.com/v1`
- - `FINREP_LLM_API_KEY`:密钥
- - `FINREP_LLM_MODEL`:模型名
- - `FINREP_STUB_SKILLS=true`:为 `true` 时 L1/L2/Section 返回固定占位数据,不调模型
- 推荐使用阿里云百炼 OpenAI 兼容模式(北京):
- - Base URL:`https://dashscope.aliyuncs.com/compatible-mode/v1`
- - 文本生成模型(示例):`qwen-plus`
- - 向量模型(示例):`text-embedding-v3`
- - OCR 解析模型(示例):`qwen-vl-ocr`
- 本项目已支持三类模型独立配置(均为 OpenAI 兼容 HTTP):
- - 文本生成:`FINREP_LLM_*`
- - 向量 Embedding:`FINREP_EMBEDDING_*`
- - OCR 解析:`FINREP_OCR_*`
- 如果三类模型共用同一个 API Key,可只填 `FINREP_LLM_API_KEY`;代码会在 Embedding/OCR 侧自动回退复用。
- ## 如何获取阿里云百炼 API Key
- 1. 进入阿里云百炼控制台(Model Studio)。
- 2. 开通并进入对应地域(建议与你部署环境一致)。
- 3. 在「API-KEY」或「密钥管理」页面创建 Key。
- 4. 复制 Key 填入 `.env` 的 `FINREP_LLM_API_KEY`(或分别填到 `FINREP_EMBEDDING_API_KEY`、`FINREP_OCR_API_KEY`)。
- 5. 重启服务使新环境变量生效。
- 参考文档:
- - [OpenAI 兼容模式调用千问](https://www.alibabacloud.com/help/zh/model-studio/compatibility-of-openai-with-dashscope)
- - [OpenAI 兼容方式调用千问视觉模型](https://www.alibabacloud.com/help/zh/model-studio/qwen-vl-compatible-with-openai)
- ## 联调
- - `GET http://localhost:8002/health`
- - `POST http://localhost:8002/v1/outline/l1`(JSON 见 `schemas`)
- ## 与《MVP 需求文档》对齐的交互字段
- - **一级大纲 `POST /v1/outline/l1`**:请求体与需求文档「报告背景信息」「一级章节候选清单」一致:`report_type`、`agreement_amount`、`enterprise_type`、`group_business_segments`、`industry_type`、`has_independent_report`、`independent_report_types`、`candidate_financing_tools`、`recommended_financing_tools`、`other_requirements`、`chapter_candidates`(每项可含除 `chapter_id`/`chapter_name` 外的扩展字段,如重要性、适用条件,将原样写入清单文本供模型使用)。
- - **二级大纲 `POST /v1/outline/l2`**:除 `chapter_name`、`chapter_no`、`chapter_paragraph_count_enum`、`leaf_chapter_candidates` 外,需传入与需求文档「已确定的上游约束」「整体写作逻辑说明」对齐的 **`chapter_reason`**(一级该章 `reason`)、**`overall_logic`**(一级 `overall_logic`)。**报告背景**推荐整块传入 **`l1_task_snapshot`**(与 L1 请求同结构的 `OutlineL1Request`);若不传,则使用本请求上的扁平字段(`report_type`、`agreement_amount` 等)拼背景。
- - **段落生成 `POST /v1/section`**:`template_type` 取值 `info` / `analysis` / `metric` / `judgment` 对应需求文档四类模板;`overall_logic`、`chapter_logic`、`paragraph_position`、`task_input`、`data_package`、`paragraph_logic` 对应模板中「橙/蓝」占位;`example`、`notes` 对应「示例」「其他注意事项」。
- 提示词正文位于 `src/finrep_algo_agent/prompts/templates/*.j2`,与需求文档摘录保持一致,后续仅以改模板版本迭代。
|