diff --git a/examples/starter-apps/patient-intake.py b/examples/starter-apps/patient-intake.py index f00d06b0d..01fe19547 100644 --- a/examples/starter-apps/patient-intake.py +++ b/examples/starter-apps/patient-intake.py @@ -18,6 +18,7 @@ from dailyai.services.open_ai_services import OpenAILLMService # from dailyai.services.deepgram_ai_services import DeepgramTTSService from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService +from dailyai.services.fireworks_ai_services import FireworksLLMService from dailyai.pipeline.frames import ( Frame, LLMFunctionCallFrame, @@ -249,8 +250,7 @@ async def process_frame(self, frame: Frame) -> AsyncGenerator[Frame, None]: print(f"--> {pretty_json}\n") if frame.function_name not in self._functions: raise Exception( - f"The LLM tried to call a function named {frame.function_name}, which isn't in the list of known functions. Please check your prompt and/or self._functions." - ) + f"Unknown function.") fn = getattr(self, frame.function_name) result = fn(json.loads(frame.arguments)) @@ -306,9 +306,9 @@ async def main(room_url: str, token): messages = [] - llm = OpenAILLMService( - api_key=os.getenv("OPENAI_API_KEY"), - model="gpt-4-1106-preview", + llm = FireworksLLMService( + api_key=os.getenv("FIREWORKS_API_KEY"), + model="accounts/fireworks/models/firefunction-v1" ) # tts = DeepgramTTSService( # aiohttp_session=session, diff --git a/pyproject.toml b/pyproject.toml index c42452d4d..c0b8fe999 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,6 +39,7 @@ fal = [ "fal~=0.12.0" ] local = [ "pyaudio~=0.2.0" ] moondream = [ "einops~=0.7.0", "timm~=0.9.0", "transformers~=4.39.0" ] openai = [ "openai~=1.14.0" ] +fireworks = [ "openai~=1.14.0" ] playht = [ "pyht~=0.0.26" ] silero = [ "torch~=2.2.0", "torchaudio~=2.2.0" ] websocket = [ "websockets~=12.0" ] diff --git a/src/dailyai/services/fireworks_ai_services.py b/src/dailyai/services/fireworks_ai_services.py new file mode 100644 index 000000000..e5ccbc658 --- /dev/null +++ b/src/dailyai/services/fireworks_ai_services.py @@ -0,0 +1,18 @@ +import os + +from dailyai.services.openai_api_llm_service import BaseOpenAILLMService + + +try: + from openai import AsyncOpenAI +except ModuleNotFoundError as e: + print(f"Exception: {e}") + print( + "In order to use Fireworks, you need to `pip install dailyai[fireworks]`. Also, set the `FIREWORKS_API_KEY` environment variable.") + raise Exception(f"Missing module: {e}") + + +class FireworksLLMService(BaseOpenAILLMService): + def __init__(self, model="accounts/fireworks/models/firefunction-v1", *args, **kwargs): + kwargs["base_url"] = "https://api.fireworks.ai/inference/v1" + super().__init__(model, *args, **kwargs)