async_translate/lib.rs
1//! # async-translate
2//!
3//! 一个支持并发的翻译库,目前支持 OpenAI 和微软翻译服务。
4//!
5//! ## 功能特性
6//!
7//! - 支持 OpenAI 翻译接口
8//! - 支持自定义 base URL、模型、API Key
9//! - 支持多 API Key 配置,每个 Key 单独计算并发数和 RPM
10//! - RPM 和并发数可选配置,具备默认数值
11//! - 支持微软翻译接口
12//! - 自动获取临时认证token,无需配置API密钥
13//! - 支持并发操作
14//! - 统一的翻译接口,易于扩展
15//!
16//! ## 使用方法
17//!
18//! ```rust,no_run
19//! use async_translate::{TranslationManager, OpenAITranslator, OpenAIConfig, MicrosoftTranslator, MicrosoftConfig};
20//!
21//! #[tokio::main]
22//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
23//! // 创建翻译管理器
24//! let mut manager = TranslationManager::new();
25//!
26//! // 配置 OpenAI 翻译器
27//! let openai_config = OpenAIConfig {
28//! base_url: "https://api.openai.com/v1".to_string(),
29//! model: "gpt-3.5-turbo".to_string(),
30//! api_keys: vec!["your-openai-api-key".to_string()],
31//! rpm_limit: 60,
32//! concurrent_limit: 10,
33//! system_prompt: None,
34//! };
35//! let openai_translator = Box::new(OpenAITranslator::new(openai_config));
36//! manager.add_translator("openai", openai_translator);
37//!
38//! // 配置微软翻译器(自动获取认证token)
39//! let microsoft_config = MicrosoftConfig {
40//! endpoint: "https://api-edge.cognitive.microsofttranslator.com".to_string(),
41//! concurrent_limit: 10,
42//! };
43//! let microsoft_translator = Box::new(MicrosoftTranslator::new(microsoft_config));
44//! manager.add_translator("microsoft", microsoft_translator);
45//!
46//! // 执行翻译
47//! let text = "Hello, world!";
48//! let target_lang = "zh";
49//!
50//! let result = manager.translate("openai", text, target_lang).await?;
51//! println!("OpenAI Translation: {}", result);
52//!
53//! let result = manager.translate("microsoft", text, target_lang).await?;
54//! println!("Microsoft Translation: {}", result);
55//!
56//! Ok(())
57//! }
58//! ```
59
60pub mod manager;
61pub mod microsoft;
62pub mod openai;
63pub mod translator;
64
65pub use manager::TranslationManager;
66pub use microsoft::{MicrosoftConfig, MicrosoftTranslator};
67pub use openai::{OpenAIConfig, OpenAITranslator};
68pub use translator::Translator;
69
70// 导出语言标识符类型
71pub use unic_langid::LanguageIdentifier;