groq worqs
This commit is contained in:
@@ -12,6 +12,7 @@ dependencies = [
|
|||||||
"daily-python",
|
"daily-python",
|
||||||
"fal",
|
"fal",
|
||||||
"faster_whisper",
|
"faster_whisper",
|
||||||
|
"groq",
|
||||||
"google-cloud-texttospeech",
|
"google-cloud-texttospeech",
|
||||||
"numpy",
|
"numpy",
|
||||||
"openai",
|
"openai",
|
||||||
|
|||||||
@@ -150,7 +150,6 @@ class TTSService(AIService):
|
|||||||
print(f"audio chunk size: {len(audio_chunk)}")
|
print(f"audio chunk size: {len(audio_chunk)}")
|
||||||
size = 8000
|
size = 8000
|
||||||
for i in range(0, len(audio_chunk), size):
|
for i in range(0, len(audio_chunk), size):
|
||||||
print(f"i is {i}")
|
|
||||||
yield AudioQueueFrame(audio_chunk[i : i+size])
|
yield AudioQueueFrame(audio_chunk[i : i+size])
|
||||||
yield TTSCompletedFrame(text)
|
yield TTSCompletedFrame(text)
|
||||||
|
|
||||||
|
|||||||
@@ -392,13 +392,9 @@ class BaseTransportService():
|
|||||||
|
|
||||||
# if interrupted, we just pull frames off the queue and discard them
|
# if interrupted, we just pull frames off the queue and discard them
|
||||||
if not self._is_interrupted.is_set():
|
if not self._is_interrupted.is_set():
|
||||||
print(
|
|
||||||
f"~~~ not interrupted so popping frame of type {type(frame)}")
|
|
||||||
if frame:
|
if frame:
|
||||||
if isinstance(frame, AudioQueueFrame):
|
if isinstance(frame, AudioQueueFrame):
|
||||||
chunk = frame.data
|
chunk = frame.data
|
||||||
print(
|
|
||||||
f"~~~ length of this chunk: {len(chunk)}")
|
|
||||||
all_audio_frames.extend(chunk)
|
all_audio_frames.extend(chunk)
|
||||||
|
|
||||||
b.extend(chunk)
|
b.extend(chunk)
|
||||||
|
|||||||
@@ -1,7 +1,33 @@
|
|||||||
import aiohttp
|
import os
|
||||||
|
import groq
|
||||||
|
from groq import AsyncGroq
|
||||||
from dailyai.services.ai_services import LLMService
|
from dailyai.services.ai_services import LLMService
|
||||||
|
from collections.abc import AsyncGenerator
|
||||||
|
|
||||||
|
|
||||||
class GroqLLMService(LLMService):
|
class GroqLLMService(LLMService):
|
||||||
def __init__(self, *, api_key, model="llama2-70b-4096"):
|
def __init__(self, *, api_key, model="mixtral-8x7b-32768", context):
|
||||||
pass
|
super().__init__(context)
|
||||||
|
self._model = model
|
||||||
|
# os.environ["GROQ_SECRET_ACCESS_KEY"] = api_key
|
||||||
|
|
||||||
|
self._client = AsyncGroq()
|
||||||
|
|
||||||
|
async def run_llm_async(self, messages) -> AsyncGenerator[str, None]:
|
||||||
|
print(f"messages are {messages}")
|
||||||
|
try:
|
||||||
|
resp = await self._client.chat.completions.create(messages=messages, model=self._model)
|
||||||
|
print(f"got chunks from groq: {resp}")
|
||||||
|
|
||||||
|
if resp.choices[0].message.content:
|
||||||
|
yield resp.choices[0].message.content
|
||||||
|
except groq.APIConnectionError as e:
|
||||||
|
print("The server could not be reached")
|
||||||
|
print(e.__cause__) # an underlying Exception, likely raised within httpx.
|
||||||
|
except groq.RateLimitError as e:
|
||||||
|
print("A 429 status code was received; we should back off a bit.")
|
||||||
|
except groq.APIStatusError as e:
|
||||||
|
print("Another non-200-range status code was received")
|
||||||
|
print(e.status_code)
|
||||||
|
print(e.response)
|
||||||
|
|
||||||
@@ -9,6 +9,7 @@ from dailyai.services.azure_ai_services import AzureLLMService, AzureTTSService
|
|||||||
from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService
|
from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService
|
||||||
from dailyai.services.open_ai_services import OpenAILLMService
|
from dailyai.services.open_ai_services import OpenAILLMService
|
||||||
from dailyai.services.ai_services import FrameLogger
|
from dailyai.services.ai_services import FrameLogger
|
||||||
|
from dailyai.services.groq_ai_services import GroqLLMService
|
||||||
|
|
||||||
from examples.foundational.support.runner import configure
|
from examples.foundational.support.runner import configure
|
||||||
|
|
||||||
@@ -42,7 +43,7 @@ async def main(room_url: str, token):
|
|||||||
# context=context)
|
# context=context)
|
||||||
llm = OpenAILLMService(
|
llm = OpenAILLMService(
|
||||||
context=context, api_key=os.getenv("OPENAI_CHATGPT_API_KEY"))
|
context=context, api_key=os.getenv("OPENAI_CHATGPT_API_KEY"))
|
||||||
|
llm = GroqLLMService(api_key=os.getenv("GROQ_API_KEY"), context=context)
|
||||||
tts = AzureTTSService(
|
tts = AzureTTSService(
|
||||||
api_key=os.getenv("AZURE_SPEECH_API_KEY"),
|
api_key=os.getenv("AZURE_SPEECH_API_KEY"),
|
||||||
region=os.getenv("AZURE_SPEECH_REGION"))
|
region=os.getenv("AZURE_SPEECH_REGION"))
|
||||||
|
|||||||
Reference in New Issue
Block a user