🚀 智能算子依赖抽象层 - 为算子提供统一的数据源、LLM、HTTP、gRPC 访问能力
operrouter-core-sdk/
├── datasource-sdk/ # 数据源抽象 (MySQL, PostgreSQL, Kafka, Redis)
├── llm-sdk/ # LLM 抽象 (OpenAI, Ollama, Anthropic)
├── http-sdk/ # HTTP 客户端抽象
├── grpc-sdk/ # gRPC 客户端抽象
└── operator-core-sdk/ # 核心依赖注入与生命周期管理
- 支持多种数据库:MySQL, PostgreSQL, MongoDB
- 支持消息队列:Kafka
- 支持缓存:Redis
- 统一的
connect,query,insert,stream接口
- OpenAI (GPT-3.5, GPT-4)
- Ollama (本地模型)
- Anthropic Claude
- 统一的
generate,chat,embedding接口
- 自动重试策略
- 认证管理
- 连接池优化
- 服务发现支持
- 基于 TOML 的声明式配置
- 自动依赖解析与注入
- 生命周期管理
# operator.toml
[metadata]
name = "my-intelligent-operator"
version = "0.1.0"
[dependencies.datasource]
sdk = "datasource-sdk"
version = "0.1"
[dependencies.llm]
sdk = "llm-sdk"
version = "0.1"
[inject.datasource]
type = "mysql"
url = "mysql://user:password@localhost:3306/mydb"
[inject.llm]
provider = "openai"
api_key = "sk-..."
model = "gpt-4"use operator_core_sdk::Injector;
use anyhow::Result;
#[tokio::main]
async fn main() -> Result<()> {
// 从配置文件初始化依赖注入器
let injector = Injector::from_file("operator.toml").await?;
// 获取数据源客户端
let datasource = injector.datasource()?;
let rows = datasource.query("SELECT * FROM users").await?;
// 获取 LLM 客户端
let llm = injector.llm()?;
let response = llm.chat("Analyze this data").await?;
Ok(())
}from operrouter_sdk import Injector
injector = Injector.from_file("operator.toml")
llm = injector.llm()
result = llm.chat("Hello")SDK 可作为 gRPC 服务运行,供任意语言调用:
cargo run --bin operrouter-grpc-server| SDK | 功能 | 状态 |
|---|---|---|
| datasource-sdk | 数据源统一接口 | ✅ 实现中 |
| llm-sdk | LLM 提供商抽象 | ✅ 实现中 |
| http-sdk | HTTP 客户端 | ✅ 实现中 |
| grpc-sdk | gRPC 客户端 | ✅ 实现中 |
| operator-core-sdk | 核心依赖注入 | ✅ 实现中 |
# 构建所有模块
cargo build --workspace
# 运行测试
cargo test --workspace
# 运行示例
cargo run --example demo-operatorMIT OR Apache-2.0