examples: some function calling examples cleanup
This commit is contained in:
@@ -7,9 +7,9 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import os
|
import os
|
||||||
import json
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from pipecat.frames.frames import TextFrame
|
||||||
from pipecat.pipeline.pipeline import Pipeline
|
from pipecat.pipeline.pipeline import Pipeline
|
||||||
from pipecat.pipeline.runner import PipelineRunner
|
from pipecat.pipeline.runner import PipelineRunner
|
||||||
from pipecat.pipeline.task import PipelineTask
|
from pipecat.pipeline.task import PipelineTask
|
||||||
@@ -17,18 +17,13 @@ from pipecat.processors.aggregators.llm_response import (
|
|||||||
LLMAssistantContextAggregator,
|
LLMAssistantContextAggregator,
|
||||||
LLMUserContextAggregator,
|
LLMUserContextAggregator,
|
||||||
)
|
)
|
||||||
from pipecat.services.openai import OpenAILLMContext
|
|
||||||
from pipecat.processors.logger import FrameLogger
|
from pipecat.processors.logger import FrameLogger
|
||||||
from pipecat.services.elevenlabs import ElevenLabsTTSService
|
from pipecat.services.elevenlabs import ElevenLabsTTSService
|
||||||
from pipecat.services.openai import OpenAILLMService
|
from pipecat.services.openai import OpenAILLMContext, OpenAILLMService
|
||||||
from pipecat.transports.services.daily import DailyParams, DailyTransport
|
from pipecat.transports.services.daily import DailyParams, DailyTransport
|
||||||
from pipecat.vad.silero import SileroVADAnalyzer
|
from pipecat.vad.silero import SileroVADAnalyzer
|
||||||
from openai.types.chat import (
|
|
||||||
ChatCompletionToolParam,
|
from openai.types.chat import ChatCompletionToolParam
|
||||||
)
|
|
||||||
from pipecat.frames.frames import (
|
|
||||||
TextFrame
|
|
||||||
)
|
|
||||||
|
|
||||||
from runner import configure
|
from runner import configure
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,15 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2024, Daily
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: BSD 2-Clause License
|
||||||
|
#
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import copy
|
|
||||||
import json
|
|
||||||
import os
|
import os
|
||||||
import re
|
|
||||||
import sys
|
import sys
|
||||||
import wave
|
import wave
|
||||||
|
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from openai._types import NotGiven, NOT_GIVEN
|
from openai._types import NotGiven, NOT_GIVEN
|
||||||
@@ -14,23 +18,18 @@ from openai.types.chat import (
|
|||||||
ChatCompletionToolParam,
|
ChatCompletionToolParam,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from pipecat.frames.frames import AudioRawFrame
|
||||||
from pipecat.pipeline.pipeline import Pipeline
|
from pipecat.pipeline.pipeline import Pipeline
|
||||||
from pipecat.pipeline.runner import PipelineRunner
|
from pipecat.pipeline.runner import PipelineRunner
|
||||||
from pipecat.pipeline.task import PipelineTask
|
from pipecat.pipeline.task import PipelineParams, PipelineTask
|
||||||
from pipecat.processors.aggregators.llm_response import LLMUserContextAggregator, LLMAssistantContextAggregator
|
from pipecat.processors.aggregators.llm_response import LLMUserContextAggregator, LLMAssistantContextAggregator
|
||||||
from pipecat.processors.logger import FrameLogger
|
from pipecat.processors.logger import FrameLogger
|
||||||
from pipecat.frames.frames import (
|
from pipecat.processors.frame_processor import FrameDirection
|
||||||
Frame,
|
|
||||||
LLMMessagesFrame,
|
|
||||||
AudioRawFrame,
|
|
||||||
)
|
|
||||||
from pipecat.processors.frame_processor import FrameDirection, FrameProcessor
|
|
||||||
from pipecat.services.elevenlabs import ElevenLabsTTSService
|
from pipecat.services.elevenlabs import ElevenLabsTTSService
|
||||||
from pipecat.services.openai import OpenAILLMService
|
from pipecat.services.openai import OpenAILLMContext, OpenAILLMContextFrame, OpenAILLMService
|
||||||
from pipecat.services.ai_services import AIService
|
from pipecat.services.ai_services import AIService
|
||||||
from pipecat.transports.services.daily import DailyParams, DailyTranscriptionSettings, DailyTransport
|
from pipecat.transports.services.daily import DailyParams, DailyTransport
|
||||||
from pipecat.vad.silero import SileroVADAnalyzer
|
from pipecat.vad.silero import SileroVADAnalyzer
|
||||||
from pipecat.services.openai import OpenAILLMContext, OpenAILLMContextFrame
|
|
||||||
|
|
||||||
from runner import configure
|
from runner import configure
|
||||||
|
|
||||||
@@ -242,7 +241,6 @@ class IntakeProcessor:
|
|||||||
self._context.add_message(
|
self._context.add_message(
|
||||||
{"role": "system", "content": "Finally, ask the user the reason for their doctor visit today. Once they answer, call the list_visit_reasons function."})
|
{"role": "system", "content": "Finally, ask the user the reason for their doctor visit today. Once they answer, call the list_visit_reasons function."})
|
||||||
await llm.process_frame(OpenAILLMContextFrame(self._context), FrameDirection.DOWNSTREAM)
|
await llm.process_frame(OpenAILLMContextFrame(self._context), FrameDirection.DOWNSTREAM)
|
||||||
pass
|
|
||||||
|
|
||||||
async def start_visit_reasons(self, llm):
|
async def start_visit_reasons(self, llm):
|
||||||
print("!!! doing start visit reasons")
|
print("!!! doing start visit reasons")
|
||||||
@@ -251,7 +249,6 @@ class IntakeProcessor:
|
|||||||
self._context.add_message({"role": "system",
|
self._context.add_message({"role": "system",
|
||||||
"content": "Now, thank the user and end the conversation."})
|
"content": "Now, thank the user and end the conversation."})
|
||||||
await llm.process_frame(OpenAILLMContextFrame(self._context), FrameDirection.DOWNSTREAM)
|
await llm.process_frame(OpenAILLMContextFrame(self._context), FrameDirection.DOWNSTREAM)
|
||||||
pass
|
|
||||||
|
|
||||||
async def save_data(self, llm, args):
|
async def save_data(self, llm, args):
|
||||||
logger.info(f"!!! Saving data: {args}")
|
logger.info(f"!!! Saving data: {args}")
|
||||||
@@ -305,12 +302,10 @@ async def main(room_url: str, token):
|
|||||||
model="gpt-4o")
|
model="gpt-4o")
|
||||||
|
|
||||||
messages = []
|
messages = []
|
||||||
context = OpenAILLMContext(
|
context = OpenAILLMContext(messages=messages)
|
||||||
messages=messages,
|
|
||||||
)
|
|
||||||
user_context = LLMUserContextAggregator(context)
|
user_context = LLMUserContextAggregator(context)
|
||||||
assistant_context = LLMAssistantContextAggregator(context)
|
assistant_context = LLMAssistantContextAggregator(context)
|
||||||
# checklist = ChecklistProcessor(context, llm)
|
|
||||||
intake = IntakeProcessor(context, llm)
|
intake = IntakeProcessor(context, llm)
|
||||||
llm.register_function("verify_birthday", intake.verify_birthday)
|
llm.register_function("verify_birthday", intake.verify_birthday)
|
||||||
llm.register_function(
|
llm.register_function(
|
||||||
@@ -329,19 +324,20 @@ async def main(room_url: str, token):
|
|||||||
"list_visit_reasons",
|
"list_visit_reasons",
|
||||||
intake.save_data,
|
intake.save_data,
|
||||||
start_callback=intake.start_visit_reasons)
|
start_callback=intake.start_visit_reasons)
|
||||||
|
|
||||||
fl = FrameLogger("LLM Output")
|
fl = FrameLogger("LLM Output")
|
||||||
|
|
||||||
pipeline = Pipeline([
|
pipeline = Pipeline([
|
||||||
transport.input(),
|
transport.input(), # Transport input
|
||||||
user_context,
|
user_context, # User responses
|
||||||
llm,
|
llm, # LLM
|
||||||
fl,
|
fl, # Frame logger
|
||||||
tts,
|
tts, # TTS
|
||||||
transport.output(),
|
transport.output(), # Transport output
|
||||||
assistant_context,
|
assistant_context, # Assistant responses
|
||||||
])
|
])
|
||||||
|
|
||||||
task = PipelineTask(pipeline, allow_interruptions=False)
|
task = PipelineTask(pipeline, PipelineParams(allow_interruptions=False))
|
||||||
|
|
||||||
@transport.event_handler("on_first_participant_joined")
|
@transport.event_handler("on_first_participant_joined")
|
||||||
async def on_first_participant_joined(transport, participant):
|
async def on_first_participant_joined(transport, participant):
|
||||||
|
|||||||
Reference in New Issue
Block a user