diff --git a/team-require/ai/ai-core-api.md b/team-require/ai/ai-core-api.md new file mode 100644 index 0000000..b399ce7 --- /dev/null +++ b/team-require/ai/ai-core-api.md @@ -0,0 +1,143 @@ +# AI-Core 文档解析服务 API 对接文档 + +## 服务地址 + +``` +localhost:50051 +``` + +## gRPC API 定义 + +### 1. ParseDocument - 解析文档 + +**请求 (ParseRequest)** +```protobuf +message ParseRequest { + string file_url = 1; // 文件 URL(必填) + string file_name = 2; // 文件名,带扩展名(必填) + string file_type = 3; // 文件类型(可选,自动检测) + map engine_overrides = 4; // 引擎配置 +} +``` + +**响应 (ParseResponse)** +```protobuf +message ParseResponse { + bool success = 1; // 是否成功 + string content = 2; // Markdown 内容 + string message = 3; // 状态消息 + int32 content_length = 4; // 内容长度 + string file_type = 5; // 文件类型 + string parser_engine = 6; // 解析引擎 (markitdown) +} +``` + +### 2. GetSupportedFormats - 获取支持的格式 + +**请求**: 空消息 + +**响应** +- `file_types`: string[] - 支持的扩展名列表 +- `file_type_descriptions`: map - 格式描述 + +--- + +## Golang 对接示例 + +### 1. 安装依赖 + +```bash +go get google.golang.org/grpc +go get google.golang.org/grpc/credentials/insecure +``` + +### 2. 生成 Go Proto 代码 + +需要先将 `proto/document_parser.proto` 生成 Go 代码: + +```bash +# 方法一:使用 grpc_tools +go install google.golang.org/protobuf/cmd/protoc-gen-go@latest +go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest +protoc --go_out=. --go_opt=paths=source_relative \ + --go-grpc_out=. --go-grpc_opt=paths=source_relative \ + proto/document_parser.proto +``` + +### 3. 完整调用代码 + +```go +package main + +import ( + "context" + "fmt" + "log" + + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + + pb "your-project/proto" // 替换为你的 proto 包路径 +) + +func main() { + // 连接 gRPC 服务 + conn, err := grpc.Dial( + "localhost:50051", + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithBlock(), + ) + if err != nil { + log.Fatalf("连接失败: %v", err) + } + defer conn.Close() + + client := pb.NewDocumentParserClient(conn) + ctx := context.Background() + + // 调用 ParseDocument + req := &pb.ParseRequest{ + FileUrl: "https://example.com/document.pdf", + FileName: "document.pdf", + } + + resp, err := client.ParseDocument(ctx, req) + if err != nil { + log.Fatalf("解析失败: %v", err) + } + + // 处理响应 + if resp.Success { + fmt.Printf("解析成功!\n") + fmt.Printf("内容长度: %d 字符\n", resp.ContentLength) + fmt.Printf("Markdown 内容:\n%s\n", resp.Content) + } else { + fmt.Printf("解析失败: %s\n", resp.Message) + } +} +``` + +### 4. 获取支持的格式 + +```go +// 获取支持的文件格式 +formatsReq := &pb.Empty{} +formatsResp, err := client.GetSupportedFormats(ctx, formatsReq) +if err != nil { + log.Fatal(err) +} + +fmt.Println("支持的格式:") +for _, ft := range formatsResp.FileTypes { + desc := formatsResp.FileTypeDescriptions[ft] + fmt.Printf(" - %s: %s\n", ft, desc) +} +``` + +--- + +## 注意事项 + +1. **文件 URL**: 必须是可直接访问的 URL,服务会下载文件到内存解析 +2. **文件名**: 必须带扩展名(如 `.pdf`, `.docx`),用于自动识别文件类型 +3. **返回内容**: 直接返回 Markdown 格式文本,可用于向量检索或 LLM 处理 diff --git a/team-require/ai/todo.md b/team-require/ai/todo.md new file mode 100644 index 0000000..4496387 --- /dev/null +++ b/team-require/ai/todo.md @@ -0,0 +1,15 @@ +# AI 服务需求 TODO + +## 2026年3月 + +### 2026-03-09 + +- [ ] **AI-Core 文档解析服务对接** + - 服务:ai-core (gRPC, 端口 50051) + - 功能:将文档(PDF/DOCX/PPTX 等)转换为 Markdown + - 对接方式:gRPC 调用 + - 详细需求:[ai-core-api.md](./ai-core-api.md) + +--- + +> 需求完成后请完成者打 ✔