mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-08-04 16:38:49 +00:00
simplify: remove transcription fallback, respect explicit config
Configured provider is the only one used — no silent fallback. Made-with: Cursor
This commit is contained in:
parent
3bf1fa5225
commit
019eaff225
@ -24,7 +24,6 @@ class BaseChannel(ABC):
|
|||||||
display_name: str = "Base"
|
display_name: str = "Base"
|
||||||
transcription_provider: str = "groq"
|
transcription_provider: str = "groq"
|
||||||
transcription_api_key: str = ""
|
transcription_api_key: str = ""
|
||||||
_transcription_fallback_key: str = ""
|
|
||||||
|
|
||||||
def __init__(self, config: Any, bus: MessageBus):
|
def __init__(self, config: Any, bus: MessageBus):
|
||||||
"""
|
"""
|
||||||
@ -39,30 +38,19 @@ class BaseChannel(ABC):
|
|||||||
self._running = False
|
self._running = False
|
||||||
|
|
||||||
async def transcribe_audio(self, file_path: str | Path) -> str:
|
async def transcribe_audio(self, file_path: str | Path) -> str:
|
||||||
"""Transcribe an audio file via Whisper. Falls back to the other provider on failure."""
|
"""Transcribe an audio file via Whisper (OpenAI or Groq). Returns empty string on failure."""
|
||||||
if not self.transcription_api_key:
|
if not self.transcription_api_key:
|
||||||
return ""
|
return ""
|
||||||
result = await self._try_transcribe(self.transcription_provider, self.transcription_api_key, file_path)
|
|
||||||
if result:
|
|
||||||
return result
|
|
||||||
fallback = "groq" if self.transcription_provider == "openai" else "openai"
|
|
||||||
if self._transcription_fallback_key:
|
|
||||||
logger.info("{}: trying {} fallback for transcription", self.name, fallback)
|
|
||||||
return await self._try_transcribe(fallback, self._transcription_fallback_key, file_path)
|
|
||||||
return ""
|
|
||||||
|
|
||||||
async def _try_transcribe(self, provider: str, api_key: str, file_path: str | Path) -> str:
|
|
||||||
"""Attempt transcription with a single provider. Returns empty string on failure."""
|
|
||||||
try:
|
try:
|
||||||
if provider == "openai":
|
if self.transcription_provider == "openai":
|
||||||
from nanobot.providers.transcription import OpenAITranscriptionProvider
|
from nanobot.providers.transcription import OpenAITranscriptionProvider
|
||||||
p = OpenAITranscriptionProvider(api_key=api_key)
|
provider = OpenAITranscriptionProvider(api_key=self.transcription_api_key)
|
||||||
else:
|
else:
|
||||||
from nanobot.providers.transcription import GroqTranscriptionProvider
|
from nanobot.providers.transcription import GroqTranscriptionProvider
|
||||||
p = GroqTranscriptionProvider(api_key=api_key)
|
provider = GroqTranscriptionProvider(api_key=self.transcription_api_key)
|
||||||
return await p.transcribe(file_path)
|
return await provider.transcribe(file_path)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning("{}: {} transcription failed: {}", self.name, provider, e)
|
logger.warning("{}: audio transcription failed: {}", self.name, e)
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
async def login(self, force: bool = False) -> bool:
|
async def login(self, force: bool = False) -> bool:
|
||||||
|
|||||||
@ -41,8 +41,6 @@ class ChannelManager:
|
|||||||
|
|
||||||
transcription_provider = self.config.channels.transcription_provider
|
transcription_provider = self.config.channels.transcription_provider
|
||||||
transcription_key = self._resolve_transcription_key(transcription_provider)
|
transcription_key = self._resolve_transcription_key(transcription_provider)
|
||||||
fallback_provider = "groq" if transcription_provider == "openai" else "openai"
|
|
||||||
fallback_key = self._resolve_transcription_key(fallback_provider)
|
|
||||||
|
|
||||||
for name, cls in discover_all().items():
|
for name, cls in discover_all().items():
|
||||||
section = getattr(self.config.channels, name, None)
|
section = getattr(self.config.channels, name, None)
|
||||||
@ -59,7 +57,6 @@ class ChannelManager:
|
|||||||
channel = cls(section, self.bus)
|
channel = cls(section, self.bus)
|
||||||
channel.transcription_provider = transcription_provider
|
channel.transcription_provider = transcription_provider
|
||||||
channel.transcription_api_key = transcription_key
|
channel.transcription_api_key = transcription_key
|
||||||
channel._transcription_fallback_key = fallback_key
|
|
||||||
self.channels[name] = channel
|
self.channels[name] = channel
|
||||||
logger.info("{} channel enabled", cls.display_name)
|
logger.info("{} channel enabled", cls.display_name)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user