Providers API 文档
概述
Providers 是 HeurAMS 的外部服务提供者模块,抽象外部服务接口并提供多种实现选项。该模块支持音频处理、语言模型和文本转语音等功能。
架构设计
提供者基类
所有提供者都继承自统一的基类,确保一致的接口和行为。
python
class BaseProvider:核心方法:
__init__(config)- 初始化提供者is_available()- 检查提供者是否可用get_capabilities()- 获取提供者能力cleanup()- 清理资源
抽象方法:
process(input_data)- 处理输入数据validate_config(config)- 验证配置
子模块
1. Audio - 音频提供者
AudioProvider 类
音频处理提供者基类,支持音频播放和分析。
python
class AudioProvider(BaseProvider):核心方法:
play_audio(file_path)- 播放音频文件record_audio(duration)- 录制音频analyze_audio(file_path)- 分析音频特征convert_format(input_path, output_path, format)- 转换音频格式
支持的音频格式:
- WAV
- MP3
- FLAC
- OGG
具体实现
SystemAudioProvider 系统默认音频提供者,使用系统音频库。
python
class SystemAudioProvider(AudioProvider):特性:
- 使用系统音频 API
- 低延迟播放
- 自动格式检测
ExternalAudioProvider 外部音频服务提供者,支持在线音频处理。
python
class ExternalAudioProvider(AudioProvider):特性:
- 支持在线音频服务
- 高质量音频处理
- 需要网络连接
2. LLM - 语言模型提供者
LLMProvider 类
语言模型提供者基类,支持文本生成和分析。
python
class LLMProvider(BaseProvider):核心方法:
generate_text(prompt, **kwargs)- 生成文本analyze_text(text, task)- 分析文本embed_text(text)- 获取文本嵌入chat(messages)- 对话模式
生成参数:
max_tokens- 最大令牌数temperature- 温度参数top_p- 核采样参数stop_sequences- 停止序列
具体实现
OpenAIProvider OpenAI API 提供者。
python
class OpenAIProvider(LLMProvider):配置:
toml
[llm.openai]
api_key = "your-api-key"
model = "gpt-3.5-turbo"
base_url = "https://api.openai.com/v1"LocalLLMProvider 本地语言模型提供者。
python
class LocalLLMProvider(LLMProvider):特性:
- 离线运行
- 隐私保护
- 可自定义模型
3. TTS - 文本转语音提供者
TTSProvider 类
文本转语音提供者基类,支持语音合成。
python
class TTSProvider(BaseProvider):核心方法:
synthesize(text, **kwargs)- 合成语音get_voices()- 获取可用语音set_voice(voice_id)- 设置语音get_supported_languages()- 获取支持的语言
合成参数:
voice- 语音标识speed- 语速pitch- 音调volume- 音量
具体实现
SystemTTSProvider 系统 TTS 提供者。
python
class SystemTTSProvider(TTSProvider):特性:
- 使用系统 TTS 引擎
- 支持多种语言
- 无需额外配置
OnlineTTSProvider 在线 TTS 服务提供者。
python
class OnlineTTSProvider(TTSProvider):特性:
- 高质量语音合成
- 多种语音选项
- 需要网络连接
提供者注册和管理
ProviderRegistry 类
提供者注册表,管理所有可用的提供者。
python
class ProviderRegistry:核心方法:
register(name, provider_class)- 注册提供者get_provider(name, config)- 获取提供者实例list_providers()- 列出所有提供者get_default_provider(type)- 获取默认提供者
使用示例:
python
from heurams.providers.registry import ProviderRegistry
# 注册提供者
ProviderRegistry.register("audio_system", SystemAudioProvider)
ProviderRegistry.register("llm_openai", OpenAIProvider)
# 获取提供者实例
audio_provider = ProviderRegistry.get_provider("audio_system", audio_config)
llm_provider = ProviderRegistry.get_provider("llm_openai", llm_config)配置管理
提供者配置
每个提供者都有特定的配置选项:
toml
# 音频提供者配置
[providers.audio.system]
enabled = true
volume = 80
device = "default"
# LLM 提供者配置
[providers.llm.openai]
api_key = "sk-..."
model = "gpt-3.5-turbo"
temperature = 0.7
# TTS 提供者配置
[providers.tts.system]
voice = "zh-CN-XiaoxiaoNeural"
speed = 1.0配置验证
提供者配置自动验证:
python
# 配置验证示例
config = {
"api_key": "sk-...",
"model": "gpt-3.5-turbo"
}
provider = OpenAIProvider(config)
if provider.is_available():
# 提供者可用
result = provider.generate_text("Hello")
else:
# 使用备用提供者
fallback_provider = ProviderRegistry.get_default_provider("llm")错误处理
提供者错误
- 连接错误: 自动重试或切换到备用提供者
- 配置错误: 提供详细的错误信息和修复建议
- 资源不足: 清理资源并重试
降级策略
python
def get_fallback_provider(primary_provider, provider_type):
"""获取备用提供者"""
if primary_provider.is_available():
return primary_provider
# 尝试默认提供者
default_provider = ProviderRegistry.get_default_provider(provider_type)
if default_provider.is_available():
return default_provider
# 返回 None 提供者
return NoneProvider()性能优化
连接池
对于需要网络连接的提供者,使用连接池优化性能:
python
class ConnectionPool:
def __init__(self, max_connections=10):
self.max_connections = max_connections
self.connections = []
def get_connection(self):
# 获取或创建连接
pass
def release_connection(self, connection):
# 释放连接
pass缓存机制
缓存提供者结果,减少重复请求:
python
class ProviderCache:
def __init__(self, ttl=3600):
self.cache = {}
self.ttl = ttl
def get(self, key):
# 获取缓存结果
pass
def set(self, key, value):
# 设置缓存
pass使用示例
基本使用
python
from heurams.providers.registry import ProviderRegistry
# 获取音频提供者
audio_config = {"volume": 80}
audio_provider = ProviderRegistry.get_provider("audio_system", audio_config)
# 播放音频
if audio_provider.is_available():
audio_provider.play_audio("sound.wav")
# 获取 LLM 提供者
llm_config = {
"api_key": "sk-...",
"model": "gpt-3.5-turbo"
}
llm_provider = ProviderRegistry.get_provider("llm_openai", llm_config)
# 生成文本
response = llm_provider.generate_text(
"请解释间隔重复算法",
max_tokens=500,
temperature=0.7
)高级使用
python
# 使用多个提供者
providers = {}
for provider_type in ["audio", "llm", "tts"]:
providers[provider_type] = ProviderRegistry.get_default_provider(provider_type)
# 批量处理
def process_with_fallback(provider, input_data):
"""使用备用策略处理数据"""
try:
return provider.process(input_data)
except ProviderError:
# 切换到备用提供者
fallback = get_fallback_provider(provider, provider.type)
return fallback.process(input_data)自定义提供者
python
from heurams.providers.base import BaseProvider
class CustomAudioProvider(BaseProvider):
def __init__(self, config):
super().__init__(config)
self.setup_custom_audio()
def process(self, input_data):
# 自定义音频处理逻辑
return self.custom_process(input_data)
def validate_config(self, config):
# 验证自定义配置
required_keys = ["custom_param"]
for key in required_keys:
if key not in config:
raise ConfigError(f"缺少必需的配置项: {key}")
# 注册自定义提供者
ProviderRegistry.register("audio_custom", CustomAudioProvider)扩展接口
提供者插件
支持通过插件系统扩展提供者:
python
# 插件提供者示例
class PluginAudioProvider(AudioProvider):
def __init__(self, config, plugin_path):
super().__init__(config)
self.load_plugin(plugin_path)
def load_plugin(self, plugin_path):
# 加载插件
pass提供者组合
组合多个提供者实现复杂功能:
python
class CompositeProvider(BaseProvider):
def __init__(self, providers):
self.providers = providers
def process(self, input_data):
# 使用多个提供者处理数据
results = []
for provider in self.providers:
if provider.is_available():
results.append(provider.process(input_data))
return self.merge_results(results)兼容性说明
- Python 版本: 需要 Python 3.8 或更高版本
- 平台支持: 跨平台支持,具体功能可能因平台而异
- 网络要求: 部分提供者需要网络连接
- 依赖项: 根据使用的提供者可能需要额外依赖