chonkie-inc/catsu

GitHub: chonkie-inc/catsu

Catsu 是一个专为嵌入功能设计的统一客户端,解决了多供应商嵌入库不一致和功能缺失的问题。

Stars: 69 | Forks: 3

![Catsu 标志](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/72214a9061011951.png) # 🌐 catsu 🐱 [![Crates.io](https://img.shields.io/crates/v/catsu.svg?style=flat&labelColor=black&color=orange)](https://crates.io/crates/catsu) [![PyPI 版本](https://img.shields.io/pypi/v/catsu.svg?style=flat&labelColor=black&color=orange)](https://pypi.org/project/catsu/) [![许可证](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat&labelColor=black)](https://opensource.org/licenses/Apache-2.0) [![文档](https://img.shields.io/badge/docs-latest-orange.svg?style=flat&labelColor=black)](https://docs.catsu.dev) [![Discord](https://img.shields.io/badge/discord-join-orange.svg?style=flat&labelColor=black&logo=discord&logoColor=white)](https://discord.gg/vH3SkRqmUz) _一个真正可用、功能齐全的统一嵌入式 API 客户端。_ [Rust](#-rust) • [Python](./packages/python/README_PYPI.md)
**嵌入式 API 客户端的现状已崩溃。** ([详情](./docs/spilled-milk.md)) - [所有人都默认使用 OpenAI 的客户端](./docs/spilled-milk.md#openais-client-wasnt-designed-for-embeddings)进行嵌入,尽管它并非为此目的而设计 - [供应商特定的库](./docs/spilled-milk.md#provider-specific-libraries-are-inconsistent-or-broken)(如 VoyageAI、Cohere 等)不一致、维护不善或完全失效 - [像 LiteLLM 和 any-llm-sdk 这样的通用客户端](./docs/spilled-milk.md#universal-clients-dont-focus-on-embeddings)根本不关注嵌入功能——它们依赖于原生客户端库,继承了其所有问题 - [每个供应商的能力不同](./docs/spilled-milk.md#capability-inconsistencies-across-providers)——有些支持维度更改,有些则不支持——没有标准化的方式来发现可用功能 - [大多数客户端缺乏基本功能](./docs/spilled-milk.md#missing-basic-features),如重试逻辑、正确的错误处理和用量跟踪 - [没有单一事实来源](./docs/spilled-milk.md#no-single-source-of-truth-for-model-metadata)来获取模型元数据、定价或能力信息 **Catsu 解决了这个问题。** 它是一个高性能、统一的客户端,专为嵌入功能而构建,具有: 🎯 所有供应商统一且一致的 API
🔄 内置带指数退避的自动重试逻辑
💰 自动用量与成本跟踪
📚 丰富的模型元数据与能力发现
⚡ Rust 核心配合 Python 绑定,实现最大性能 ## 📦 Rust 添加到您的 `Cargo.toml`: ``` [dependencies] catsu = "0.1" tokio = { version = "1", features = ["full"] } ``` ### 快速开始 ``` use catsu::Client; #[tokio::main] async fn main() -> Result<(), Box> { // Create client (reads API keys from environment) let client = Client::new()?; // Generate embeddings let response = client.embed( "openai:text-embedding-3-small", vec!["Hello, world!".to_string(), "How are you?".to_string()], ).await?; println!("Dimensions: {}", response.dimensions); println!("Tokens used: {}", response.usage.tokens); println!("Embedding: {:?}", &response.embeddings[0][..5]); Ok(()) } ``` ### 带选项 ``` use catsu::{Client, InputType}; let response = client.embed_with_options( "openai:text-embedding-3-small", vec!["Search query".to_string()], Some(InputType::Query), // input type hint Some(256), // output dimensions ).await?; ``` ### 模型目录 ``` // List all available models let models = client.list_models(None); // Filter by provider let openai_models = client.list_models(Some("openai")); for model in openai_models { println!("{}: {} dims", model.name, model.dimensions); } ``` ## 🐍 Python 寻找 Python?请参阅 **[Python 文档](./packages/python/README_PYPI.md)**。 ``` pip install catsu ``` ``` from catsu import Client client = Client() response = client.embed("openai:text-embedding-3-small", ["Hello, world!"]) print(f"Dimensions: {response.dimensions}") ```
标签:Apex, API 集成, Python 库, Rust 库, SOC Prime, 使用跟踪, 可视化界面, 向量嵌入, 客户端库, 嵌入 API, 嵌入模型, 工具库, 开发工具, 开源库, 技术栈集成, 提供商抽象, 搜索引擎爬虫, 机器学习, 标准化接口, 统一客户端, 跨平台支持, 逆向工具, 通知系统, 重试机制, 错误处理