mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-05-03 00:05:55 +00:00
fix: pass apiBase from config to GroqTranscriptionProvider
This commit is contained in:
parent
cc5a666d5d
commit
0401ca9dbc
@ -24,6 +24,7 @@ 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_api_base: str = ""
|
||||||
|
|
||||||
def __init__(self, config: Any, bus: MessageBus):
|
def __init__(self, config: Any, bus: MessageBus):
|
||||||
"""
|
"""
|
||||||
@ -47,7 +48,10 @@ class BaseChannel(ABC):
|
|||||||
provider = OpenAITranscriptionProvider(api_key=self.transcription_api_key)
|
provider = OpenAITranscriptionProvider(api_key=self.transcription_api_key)
|
||||||
else:
|
else:
|
||||||
from nanobot.providers.transcription import GroqTranscriptionProvider
|
from nanobot.providers.transcription import GroqTranscriptionProvider
|
||||||
provider = GroqTranscriptionProvider(api_key=self.transcription_api_key)
|
provider = GroqTranscriptionProvider(
|
||||||
|
api_key=self.transcription_api_key,
|
||||||
|
api_base=self.transcription_api_base or None,
|
||||||
|
)
|
||||||
return await provider.transcribe(file_path)
|
return await provider.transcribe(file_path)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning("{}: audio transcription failed: {}", self.name, e)
|
logger.warning("{}: audio transcription failed: {}", self.name, e)
|
||||||
|
|||||||
@ -41,6 +41,7 @@ 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)
|
||||||
|
transcription_base = self._resolve_transcription_base(transcription_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)
|
||||||
@ -57,6 +58,7 @@ 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_api_base = transcription_base
|
||||||
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:
|
||||||
@ -73,6 +75,15 @@ class ChannelManager:
|
|||||||
except AttributeError:
|
except AttributeError:
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
def _resolve_transcription_base(self, provider: str) -> str:
|
||||||
|
"""Pick the API base URL for the configured transcription provider."""
|
||||||
|
try:
|
||||||
|
if provider == "openai":
|
||||||
|
return self.config.providers.openai.api_base or ""
|
||||||
|
return self.config.providers.groq.api_base or ""
|
||||||
|
except AttributeError:
|
||||||
|
return ""
|
||||||
|
|
||||||
def _validate_allow_from(self) -> None:
|
def _validate_allow_from(self) -> None:
|
||||||
for name, ch in self.channels.items():
|
for name, ch in self.channels.items():
|
||||||
cfg = ch.config
|
cfg = ch.config
|
||||||
|
|||||||
@ -44,9 +44,9 @@ class GroqTranscriptionProvider:
|
|||||||
Groq offers extremely fast transcription with a generous free tier.
|
Groq offers extremely fast transcription with a generous free tier.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, api_key: str | None = None):
|
def __init__(self, api_key: str | None = None, api_base: str | None = None):
|
||||||
self.api_key = api_key or os.environ.get("GROQ_API_KEY")
|
self.api_key = api_key or os.environ.get("GROQ_API_KEY")
|
||||||
self.api_url = "https://api.groq.com/openai/v1/audio/transcriptions"
|
self.api_url = api_base or os.environ.get("GROQ_BASE_URL") or "https://api.groq.com/openai/v1/audio/transcriptions"
|
||||||
|
|
||||||
async def transcribe(self, file_path: str | Path) -> str:
|
async def transcribe(self, file_path: str | Path) -> str:
|
||||||
"""
|
"""
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user