From a573277a106a7a3050a693daed7bc02316afbf24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Mon, 18 Mar 2024 15:13:38 -0700 Subject: [PATCH] examples: copy runner.py and auth.py where needed --- examples/foundational/01-say-one-thing.py | 5 +- examples/foundational/02-llm-say-one-thing.py | 5 +- examples/foundational/03-still-frame.py | 5 +- .../foundational/04-utterance-and-speech.py | 6 +- .../foundational/05-sync-speech-and-image.py | 5 +- .../foundational/06-listen-and-respond.py | 5 +- examples/foundational/06a-image-sync.py | 6 +- examples/foundational/07-interruptible.py | 6 +- examples/foundational/08-bots-arguing.py | 6 +- examples/foundational/10-wake-word.py | 6 +- examples/foundational/11-sound-effects.py | 5 +- .../foundational/13-whisper-transcription.py | 6 +- examples/{support => foundational}/runner.py | 3 - examples/internal/11a-dial-out.py | 5 +- examples/server/auth.py | 3 - examples/server/daily-bot-manager.py | 4 +- examples/starter-apps/chatbot.py | 6 +- examples/starter-apps/patient-intake.py | 6 +- examples/starter-apps/runner.py | 58 +++++++++++++++++++ examples/starter-apps/storybot.py | 6 +- examples/starter-apps/translator.py | 6 +- 21 files changed, 138 insertions(+), 25 deletions(-) rename examples/{support => foundational}/runner.py (97%) create mode 100644 examples/starter-apps/runner.py diff --git a/examples/foundational/01-say-one-thing.py b/examples/foundational/01-say-one-thing.py index e9531ad9a..c92e28419 100644 --- a/examples/foundational/01-say-one-thing.py +++ b/examples/foundational/01-say-one-thing.py @@ -8,7 +8,10 @@ from dailyai.pipeline.pipeline import Pipeline from dailyai.services.daily_transport_service import DailyTransportService from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService -from examples.support.runner import configure +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/foundational/02-llm-say-one-thing.py b/examples/foundational/02-llm-say-one-thing.py index 40113404e..0a1ad1432 100644 --- a/examples/foundational/02-llm-say-one-thing.py +++ b/examples/foundational/02-llm-say-one-thing.py @@ -10,7 +10,10 @@ from dailyai.services.daily_transport_service import DailyTransportService from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService from dailyai.services.open_ai_services import OpenAILLMService -from examples.support.runner import configure +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/foundational/03-still-frame.py b/examples/foundational/03-still-frame.py index 3a58f5bb8..fe89ca1df 100644 --- a/examples/foundational/03-still-frame.py +++ b/examples/foundational/03-still-frame.py @@ -8,7 +8,10 @@ from dailyai.pipeline.pipeline import Pipeline from dailyai.services.daily_transport_service import DailyTransportService from dailyai.services.fal_ai_services import FalImageGenService -from examples.support.runner import configure +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/foundational/04-utterance-and-speech.py b/examples/foundational/04-utterance-and-speech.py index b35bc0436..86d401b87 100644 --- a/examples/foundational/04-utterance-and-speech.py +++ b/examples/foundational/04-utterance-and-speech.py @@ -11,7 +11,11 @@ from dailyai.services.azure_ai_services import AzureLLMService, AzureTTSService from dailyai.services.deepgram_ai_services import DeepgramTTSService from dailyai.pipeline.frames import EndFrame, EndPipeFrame, LLMMessagesQueueFrame, TextFrame from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService -from examples.support.runner import configure + +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/foundational/05-sync-speech-and-image.py b/examples/foundational/05-sync-speech-and-image.py index f62dd6c00..306aa54d2 100644 --- a/examples/foundational/05-sync-speech-and-image.py +++ b/examples/foundational/05-sync-speech-and-image.py @@ -29,7 +29,10 @@ from dailyai.services.open_ai_services import OpenAILLMService from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService from dailyai.services.fal_ai_services import FalImageGenService -from examples.support.runner import configure +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/foundational/06-listen-and-respond.py b/examples/foundational/06-listen-and-respond.py index 3dd2fc2fa..ff9e95450 100644 --- a/examples/foundational/06-listen-and-respond.py +++ b/examples/foundational/06-listen-and-respond.py @@ -13,7 +13,10 @@ from dailyai.pipeline.aggregators import ( LLMAssistantContextAggregator, LLMUserContextAggregator, ) -from examples.support.runner import configure +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/foundational/06a-image-sync.py b/examples/foundational/06a-image-sync.py index 80a4b8929..3b5efdd32 100644 --- a/examples/foundational/06a-image-sync.py +++ b/examples/foundational/06a-image-sync.py @@ -19,7 +19,11 @@ from dailyai.pipeline.aggregators import ( from dailyai.services.open_ai_services import OpenAILLMService from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService from dailyai.services.fal_ai_services import FalImageGenService -from examples.support.runner import configure + +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/foundational/07-interruptible.py b/examples/foundational/07-interruptible.py index af6adb275..f0df4d73f 100644 --- a/examples/foundational/07-interruptible.py +++ b/examples/foundational/07-interruptible.py @@ -14,7 +14,11 @@ from dailyai.services.ai_services import FrameLogger from dailyai.services.daily_transport_service import DailyTransportService from dailyai.services.open_ai_services import OpenAILLMService from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService -from examples.support.runner import configure + +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/foundational/08-bots-arguing.py b/examples/foundational/08-bots-arguing.py index 35cc062e7..42e4d81cc 100644 --- a/examples/foundational/08-bots-arguing.py +++ b/examples/foundational/08-bots-arguing.py @@ -11,7 +11,11 @@ from dailyai.services.azure_ai_services import AzureLLMService, AzureTTSService from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService from dailyai.services.fal_ai_services import FalImageGenService from dailyai.pipeline.frames import AudioFrame, EndFrame, ImageFrame, LLMMessagesQueueFrame, TextFrame -from examples.support.runner import configure + +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/foundational/10-wake-word.py b/examples/foundational/10-wake-word.py index 169d3fbdc..6a8a299b7 100644 --- a/examples/foundational/10-wake-word.py +++ b/examples/foundational/10-wake-word.py @@ -21,7 +21,11 @@ from dailyai.pipeline.frames import ( TranscriptionQueueFrame, ) from dailyai.services.ai_services import AIService -from examples.support.runner import configure + +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/foundational/11-sound-effects.py b/examples/foundational/11-sound-effects.py index 5459878d1..50f98c610 100644 --- a/examples/foundational/11-sound-effects.py +++ b/examples/foundational/11-sound-effects.py @@ -21,7 +21,10 @@ from dailyai.pipeline.frames import ( ) from typing import AsyncGenerator -from examples.support.runner import configure +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/foundational/13-whisper-transcription.py b/examples/foundational/13-whisper-transcription.py index dfa2f1ae7..89fbcdacf 100644 --- a/examples/foundational/13-whisper-transcription.py +++ b/examples/foundational/13-whisper-transcription.py @@ -3,7 +3,11 @@ import logging from dailyai.services.daily_transport_service import DailyTransportService from dailyai.services.whisper_ai_services import WhisperSTTService -from examples.support.runner import configure + +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/support/runner.py b/examples/foundational/runner.py similarity index 97% rename from examples/support/runner.py rename to examples/foundational/runner.py index abdbaeee4..6d1a8113d 100644 --- a/examples/support/runner.py +++ b/examples/foundational/runner.py @@ -4,9 +4,6 @@ import time import urllib import requests -from dotenv import load_dotenv -load_dotenv() - def configure(): parser = argparse.ArgumentParser(description="Daily AI SDK Bot Sample") diff --git a/examples/internal/11a-dial-out.py b/examples/internal/11a-dial-out.py index 9cdad8f84..1ed1339ee 100644 --- a/examples/internal/11a-dial-out.py +++ b/examples/internal/11a-dial-out.py @@ -10,7 +10,10 @@ from dailyai.services.ai_services import AIService, FrameLogger from dailyai.pipeline.frames import Frame, AudioFrame, LLMResponseEndFrame, LLMMessagesQueueFrame from typing import AsyncGenerator -from examples.support.runner import configure +from runner import configure + +from dotenv import load_dotenv +load_dotenv() sounds = {} sound_files = [ diff --git a/examples/server/auth.py b/examples/server/auth.py index fb80dcc04..7b1f812ec 100644 --- a/examples/server/auth.py +++ b/examples/server/auth.py @@ -1,13 +1,10 @@ import time import urllib -from dotenv import load_dotenv import requests from flask import jsonify import os -load_dotenv() - def get_meeting_token(room_name, daily_api_key, token_expiry): api_path = os.getenv('DAILY_API_PATH') or 'https://api.daily.co/v1' diff --git a/examples/server/daily-bot-manager.py b/examples/server/daily-bot-manager.py index 64d48e9a9..5c2f6f60f 100644 --- a/examples/server/daily-bot-manager.py +++ b/examples/server/daily-bot-manager.py @@ -5,10 +5,10 @@ import time from flask import Flask, jsonify, request, redirect from flask_cors import CORS -from examples.server.auth import get_meeting_token + +from auth import get_meeting_token from dotenv import load_dotenv - load_dotenv() app = Flask(__name__) diff --git a/examples/starter-apps/chatbot.py b/examples/starter-apps/chatbot.py index 2b3b419b5..6bb4b1271 100644 --- a/examples/starter-apps/chatbot.py +++ b/examples/starter-apps/chatbot.py @@ -23,7 +23,11 @@ from dailyai.pipeline.pipeline import Pipeline from dailyai.services.daily_transport_service import DailyTransportService from dailyai.services.open_ai_services import OpenAILLMService from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService -from examples.support.runner import configure + +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") diff --git a/examples/starter-apps/patient-intake.py b/examples/starter-apps/patient-intake.py index 536faab4b..49cb09765 100644 --- a/examples/starter-apps/patient-intake.py +++ b/examples/starter-apps/patient-intake.py @@ -20,7 +20,6 @@ from dailyai.services.openai_llm_context import OpenAILLMContext 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 examples.support.runner import configure from dailyai.pipeline.frames import ( OpenAILLMContextFrame, TranscriptionQueueFrame, @@ -36,6 +35,11 @@ from openai.types.chat import ( ChatCompletionToolParam, ) +from runner import configure + +from dotenv import load_dotenv +load_dotenv() + logging.basicConfig(format="%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") logger.setLevel(logging.DEBUG) diff --git a/examples/starter-apps/runner.py b/examples/starter-apps/runner.py new file mode 100644 index 000000000..6d1a8113d --- /dev/null +++ b/examples/starter-apps/runner.py @@ -0,0 +1,58 @@ +import argparse +import os +import time +import urllib +import requests + + +def configure(): + parser = argparse.ArgumentParser(description="Daily AI SDK Bot Sample") + parser.add_argument( + "-u", + "--url", + type=str, + required=False, + help="URL of the Daily room to join") + parser.add_argument( + "-k", + "--apikey", + type=str, + required=False, + help="Daily API Key (needed to create an owner token for the room)", + ) + + args, unknown = parser.parse_known_args() + + url = args.url or os.getenv("DAILY_SAMPLE_ROOM_URL") + key = args.apikey or os.getenv("DAILY_API_KEY") + + if not url: + raise Exception( + "No Daily room specified. use the -u/--url option from the command line, or set DAILY_SAMPLE_ROOM_URL in your environment to specify a Daily room URL.") + + if not key: + raise Exception("No Daily API key specified. use the -k/--apikey option from the command line, or set DAILY_API_KEY in your environment to specify a Daily API key, available from https://dashboard.daily.co/developers.") + + # Create a meeting token for the given room with an expiration 1 hour in + # the future. + room_name: str = urllib.parse.urlparse(url).path[1:] + expiration: float = time.time() + 60 * 60 + + res: requests.Response = requests.post( + f"https://api.daily.co/v1/meeting-tokens", + headers={ + "Authorization": f"Bearer {key}"}, + json={ + "properties": { + "room_name": room_name, + "is_owner": True, + "exp": expiration}}, + ) + + if res.status_code != 200: + raise Exception( + f"Failed to create meeting token: {res.status_code} {res.text}") + + token: str = res.json()["token"] + + return (url, token) diff --git a/examples/starter-apps/storybot.py b/examples/starter-apps/storybot.py index e529ef3d4..681ece607 100644 --- a/examples/starter-apps/storybot.py +++ b/examples/starter-apps/storybot.py @@ -25,7 +25,6 @@ from dailyai.pipeline.aggregators import ( UserResponseAggregator, LLMResponseAggregator, ) -from examples.support.runner import configure from dailyai.pipeline.frames import ( EndPipeFrame, LLMMessagesQueueFrame, @@ -43,6 +42,11 @@ from dailyai.pipeline.frames import ( ) from dailyai.services.ai_services import FrameLogger, AIService +from runner import configure + +from dotenv import load_dotenv +load_dotenv() + logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai") logger.setLevel(logging.DEBUG) diff --git a/examples/starter-apps/translator.py b/examples/starter-apps/translator.py index 9b8c6410f..7274b3209 100644 --- a/examples/starter-apps/translator.py +++ b/examples/starter-apps/translator.py @@ -18,7 +18,11 @@ from dailyai.services.daily_transport_service import DailyTransportService from dailyai.services.azure_ai_services import AzureTTSService from dailyai.services.open_ai_services import OpenAILLMService from dailyai.services.elevenlabs_ai_service import ElevenLabsTTSService -from examples.support.runner import configure + +from runner import configure + +from dotenv import load_dotenv +load_dotenv() logging.basicConfig(format=f"%(levelno)s %(asctime)s %(message)s") logger = logging.getLogger("dailyai")