# seo_ai **Repository Path**: que/seo_ai ## Basic Information - **Project Name**: seo_ai - **Description**: 通过openai codex生成的项目,集成豆包、deepseek、chatgpt,用于生成seo内容,目前seo不局限于搜索引擎,大量的ai平台也会去抓取内容训练大模型;技术栈python+langchain+fastapi+easyui; - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-24 - **Last Updated**: 2026-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SEO AI Content Generation API 本项目基于 Python,集成 FastAPI 与多种大模型客户端(Doubao、DeepSeek、ChatGPT、Bailian)以及 LangChain Pipeline、RAG(FAISS + provider 可切换 Embeddings)与图片生成(豆包 / 阿里云百炼 Z-Image-Turbo)。 提供统一的内容生成接口,传入 `prompt` 和 `seo_keywords`,返回经过 SEO 优化的图文 HTML 内容。 ## 主要特性 - 四大模型统一接入 LangChain(Doubao / DeepSeek / ChatGPT / Bailian) - LLM 模型名统一在 `config.yaml -> llms.*.model` 中配置 - LangChain 链式流程:检索上下文 -> 大纲 -> 正文 -> SEO -> 图文渲染 - RAG:加载 `C:\seo_docs` 下的 `txt` 文档,FAISS 检索 + `provider` 切换 Embeddings(百炼 / 豆包) - 图片生成:支持豆包文生图与阿里云百炼 Z-Image-Turbo(生成图文并茂内容) - API Key 通过配置文件管理 - 支持 `env_keys` 从环境变量读取 API Key(生产环境推荐) - 提供标准 API 接口:`/generate` ## 快速开始 1. 使用 Python 3.11 创建虚拟环境并激活 2. 安装依赖:`pip install -r requirements.txt` 3. 准备 RAG 文档:将 `txt` 文件放到 `C:\seo_docs` 4. 配置 API Key:编辑 `config.yaml`(LLM、RAG Embeddings、图片模型) - 生产环境建议只配置 `env_keys`,不要在 `api_key` 写明文密钥 5. 启动服务:`uvicorn main:app --host 127.0.0.1 --port 9999` ## Windows 打包与运行 1. 安装依赖(含打包工具):`.\.venv\Scripts\python.exe -m pip install -r requirements.txt pyinstaller` 2. 执行打包脚本:`.\build_windows_exe.ps1` 3. 打包产物目录:`dist\seo_ai_server\` 4. 可执行文件:`dist\seo_ai_server\seo_ai_server.exe` 5. 运行可执行文件后,服务地址为:`http://127.0.0.1:9999` ## 测试 - 安装依赖后执行:`python -m pytest -q` - 当前包含 `/generate` 的基础接口测试(成功、模型不存在、参数校验失败、内部异常) ## 目录结构 - `main.py`:API 入口与 LangChain Pipeline - `llm_clients/`:各模型适配客户端 - `image_clients/`:图片模型客户端(Doubao / Z-Image-Turbo) - `rag.py`:RAG 文档加载、切块、向量化与检索 - `utils.py`:SEO 优化与 HTML 渲染 - `config.yaml`:模型与密钥配置 - `requirements.txt`:依赖列表 ## RAG 配置说明 `config.yaml` 中的 `rag` 字段用于控制检索行为(支持 `provider` 动态切换): - `docs_dir`:文档目录(默认 `C:\seo_docs`) - `provider`:`bailian` 或 `doubao` - `api_key`:当前 provider 对应 API Key(也可用环境变量) - `providers`:各 provider 的配置映射,`base_url`、`embedding_model`、`env_keys` 都在这里定义 - `base_url` / `embedding_model`:可选顶层覆盖;不填时读取 `rag.providers.` - `env_keys`:从环境变量读取 API Key 的候选名列表(按顺序尝试) - `chunk_size` / `chunk_overlap`:切块参数 - `top_k`:检索返回条数 ## API Key 获取优先级 - LLM / 图片 / RAG 均支持 `env_keys` + `api_key` - 统一优先级:先按 `env_keys` 顺序读取环境变量,未命中再使用 `api_key` - 生产环境建议:仅设置环境变量,配置文件中的 `api_key` 留空 ## LLM 配置说明 - `llms..model` 为必填,所有 LLM 的模型名统一从配置读取 - 当前示例: - `llms.chatgpt.model: gpt-4o-mini` - `llms.deepseek.model: deepseek-chat` - `llms.doubao.model: doubao-pro-32k` - `llms.bailian.model: qwen-plus` ## 图片生成配置 `config.yaml` 的 `images` 字段支持两种 provider: - `provider: doubao`:使用豆包文生图(`images.doubao` 下配置 `api_key` / `endpoint` / `model` / `size`) - `provider: bailian`:使用阿里云百炼(`images.bailian` 下配置,兼容旧值 `z_image_turbo`) ## 接口示例 ### 请求 `POST /generate` ```json { "prompt": "请写一篇关于春季养生的 SEO 文章", "seo_keywords": ["春季养生", "健康饮食", "生活习惯"], "model": "doubao" } ``` ### 响应 ```json { "content": "
...
" } ```