api/service/docconv/README.md
文档转换服务 SDK 提供了与文档转换服务的对接能力,支持同步和异步两种转换模式。
在 .env 文件中配置以下环境变量:
# 文档转换服务配置
DOC_CONVERT_BASE_URL=http://192.168.1.218:5022
DOC_CONVERT_API_KEY=123456
DOC_CONVERT_TIMEOUT=1800
DOC_CONVERT_MAX_FILE_SIZE=100MB
DOC_CONVERT_RETRY_TIMES=3
DOC_CONVERT_POLL_INTERVAL=5
package main
import (
"context"
"fmt"
"github.com/53AI/53AIHub/service/docconv"
)
func main() {
service := docconv.NewService()
result, err := service.ConvertSync(context.Background(),
"https://example.com/document.pdf",
"markitdown")
if err != nil {
fmt.Printf("转换失败: %v\n", err)
return
}
fmt.Printf("转换结果: %s\n", result)
}
package main
import (
"context"
"fmt"
"github.com/53AI/53AIHub/service/docconv"
)
func main() {
service := docconv.NewService()
// 入队任务
taskID, err := service.ConvertAsync(context.Background(),
"https://example.com/document.pdf",
"markitdown")
if err != nil {
fmt.Printf("入队失败: %v\n", err)
return
}
fmt.Printf("任务已入队: %s\n", taskID)
// 启动消费者处理队列
ctx := context.Background()
service.StartWorker(ctx, 1) // 启动1个消费者
}
// 获取队列大小
size, err := service.GetQueueSize(context.Background())
// 取消任务
err = service.CancelTask(context.Background(), taskID)
// 健康检查
err = service.Health(context.Background())
type Service interface {
// 同步转换
ConvertSync(ctx context.Context, sourceURL, parserType string) (string, error)
// 异步转换(入队)
ConvertAsync(ctx context.Context, sourceURL, parserType string) (string, error)
// 处理队列任务
ProcessQueue(ctx context.Context) error
// 取消任务
CancelTask(ctx context.Context, taskID string) error
// 获取队列大小
GetQueueSize(ctx context.Context) (int64, error)
// 健康检查
Health(ctx context.Context) error
// 启动消费者
StartWorker(ctx context.Context, concurrency int)
}
所有错误都实现了 ConvertError 类型:
type ConvertError struct {
Op string `json:"op"` // 操作类型
HTTPStatus int `json:"http_status"` // HTTP状态码
Code string `json:"code"` // 错误代码
Message string `json:"message"` // 错误消息
RawBody string `json:"raw_body"` // 原始响应体(截断)
Retryable bool `json:"retryable"` // 是否可重试
RequestID string `json:"request_id"` // 请求ID
}