Merge pull request #656 from pipecat-ai/mb/add-gemini-metrics
Add Gemini token usage metrics
This commit is contained in:
@@ -6,12 +6,11 @@
|
|||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import base64
|
import base64
|
||||||
from dataclasses import dataclass
|
|
||||||
import json
|
|
||||||
import io
|
import io
|
||||||
|
import json
|
||||||
|
from dataclasses import dataclass
|
||||||
from typing import AsyncGenerator, List, Literal, Optional
|
from typing import AsyncGenerator, List, Literal, Optional
|
||||||
|
|
||||||
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
@@ -29,16 +28,17 @@ from pipecat.frames.frames import (
|
|||||||
TTSStoppedFrame,
|
TTSStoppedFrame,
|
||||||
VisionImageRawFrame,
|
VisionImageRawFrame,
|
||||||
)
|
)
|
||||||
|
from pipecat.metrics.metrics import LLMTokenUsage
|
||||||
from pipecat.processors.aggregators.openai_llm_context import (
|
from pipecat.processors.aggregators.openai_llm_context import (
|
||||||
OpenAILLMContext,
|
OpenAILLMContext,
|
||||||
OpenAILLMContextFrame,
|
OpenAILLMContextFrame,
|
||||||
)
|
)
|
||||||
|
from pipecat.processors.frame_processor import FrameDirection
|
||||||
|
from pipecat.services.ai_services import LLMService, TTSService
|
||||||
from pipecat.services.openai import (
|
from pipecat.services.openai import (
|
||||||
OpenAIAssistantContextAggregator,
|
OpenAIAssistantContextAggregator,
|
||||||
OpenAIUserContextAggregator,
|
OpenAIUserContextAggregator,
|
||||||
)
|
)
|
||||||
from pipecat.processors.frame_processor import FrameDirection
|
|
||||||
from pipecat.services.ai_services import LLMService, TTSService
|
|
||||||
from pipecat.transcriptions.language import Language
|
from pipecat.transcriptions.language import Language
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -362,6 +362,14 @@ class GoogleLLMService(LLMService):
|
|||||||
tools = context.tools if context.tools else []
|
tools = context.tools if context.tools else []
|
||||||
response = self._client.generate_content(contents=messages, tools=tools, stream=True)
|
response = self._client.generate_content(contents=messages, tools=tools, stream=True)
|
||||||
|
|
||||||
|
tokens = LLMTokenUsage(
|
||||||
|
prompt_tokens=response.usage_metadata.prompt_token_count,
|
||||||
|
completion_tokens=response.usage_metadata.candidates_token_count,
|
||||||
|
total_tokens=response.usage_metadata.total_token_count,
|
||||||
|
)
|
||||||
|
|
||||||
|
await self.start_llm_usage_metrics(tokens)
|
||||||
|
|
||||||
await self.stop_ttfb_metrics()
|
await self.stop_ttfb_metrics()
|
||||||
|
|
||||||
async for chunk in self._async_generator_wrapper(response):
|
async for chunk in self._async_generator_wrapper(response):
|
||||||
|
|||||||
Reference in New Issue
Block a user