Files
ds_microdot/test1.py
T
Michael Ikehi a91613efe2 Add tiered summarization based on pricing plans
- Implement advanced AI summarization with action items for Pro plan
- Create basic bullet-point summarization for Freemium plan
- Add plan tier validation and feature differentiation
- Support speaker identification in transcripts
- Define plan limits (600 mins Pro/200 mins Freemium)
2025-04-24 17:18:53 +01:00

145 lines
5.1 KiB
Python

import os
import requests
import json
from dotenv import load_dotenv
load_dotenv()
# API endpoint
base_url = "http://localhost:5056"
# Your API key
api_key = os.getenv("API_KEY_ACCESS")
# Headers
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
# Audio URL from your notebook
audio_url = "https://s3.us-east-2.amazonaws.com/com.mkdlabs.images/baas/jordan/019933724441Business%20English%20Conversation%20Lesson%2045_%20Meeting%20a%20New%20Colleague.mp3"
# 1. First, transcribe the audio with the Pro plan (with speaker identification)
pro_transcribe_payload = {
"media_url": audio_url,
"media_type": "audio",
"plan_tier": "pro" # Specify the pro plan to include speaker identification
}
pro_transcribe_response = requests.post(
f"{base_url}/microdot-ai/transcribe",
headers=headers,
json=pro_transcribe_payload
)
# Check if Pro plan transcription was successful
if pro_transcribe_response.status_code == 200:
pro_transcript_data = pro_transcribe_response.json()
print("Pro plan transcription successful!")
# Save the Pro plan transcript for later use
pro_transcript_json = json.dumps(pro_transcript_data["transcript"], indent=4)
# Save the Pro plan transcript to a file
with open("pro_transcript.json", "w") as f:
f.write(pro_transcript_json)
print("Pro plan transcript saved to pro_transcript.json")
# Check if the Pro plan transcript has speaker information
has_speaker_pro = "speaker" in pro_transcript_data["transcript"]["sentences"][0] if pro_transcript_data["transcript"]["sentences"] else False
print(f"Pro plan has speaker information: {has_speaker_pro}")
else:
print(f"Pro plan transcription failed with status code: {pro_transcribe_response.status_code}")
print(pro_transcribe_response.text)
# 1b. Now transcribe with the Free plan (without speaker identification)
free_transcribe_payload = {
"media_url": audio_url,
"media_type": "audio",
"plan_tier": "freemium" # Specify the freemium plan to exclude speaker identification
}
free_transcribe_response = requests.post(
f"{base_url}/microdot-ai/transcribe",
headers=headers,
json=free_transcribe_payload
)
# Check if Free plan transcription was successful
if free_transcribe_response.status_code == 200:
free_transcript_data = free_transcribe_response.json()
print("Free plan transcription successful!")
# Save the Free plan transcript for later use
free_transcript_json = json.dumps(free_transcript_data["transcript"], indent=4)
# Save the Free plan transcript to a file
with open("free_transcript.json", "w") as f:
f.write(free_transcript_json)
print("Free plan transcript saved to free_transcript.json")
# Check if the Free plan transcript has speaker information
has_speaker_free = "speaker" in free_transcript_data["transcript"]["sentences"][0] if free_transcript_data["transcript"]["sentences"] else False
print(f"Free plan has speaker information: {has_speaker_free}")
# Use the Pro plan transcript for the summary tests
transcript_json = pro_transcript_json
else:
print(f"Free plan transcription failed with status code: {free_transcribe_response.status_code}")
print(free_transcribe_response.text)
# If Free plan fails but Pro plan succeeded, use Pro plan transcript for summary tests
if pro_transcribe_response.status_code == 200:
transcript_json = pro_transcript_json
# 2. Test the basic (Freemium) summarization
basic_summary_payload = {
"transcript": transcript_json,
"plan_tier": "freemium" # Specify the freemium plan
}
basic_summary_response = requests.post(
f"{base_url}/microdot-ai/general-summary",
headers=headers,
json=basic_summary_payload
)
# Check if summarization was successful
if basic_summary_response.status_code == 200:
basic_summary_data = basic_summary_response.json()
print("\n--- Basic (Freemium) Summary ---")
basic_summary_json = json.dumps(basic_summary_data, indent=2)
with open("basic_summary.json", "w") as f:
f.write(basic_summary_json)
print("Basic summary saved to basic_summary.json")
else:
print(f"Basic summarization failed with status code: {basic_summary_response.status_code}")
print(basic_summary_response.text)
# 3. Test the advanced (Pro) summarization
advanced_summary_payload = {
"transcript": transcript_json,
"plan_tier": "pro" # Specify the pro plan
}
advanced_summary_response = requests.post(
f"{base_url}/microdot-ai/general-summary",
headers=headers,
json=advanced_summary_payload
)
# Check if summarization was successful
if advanced_summary_response.status_code == 200:
advanced_summary_data = advanced_summary_response.json()
print("\n--- Advanced (Pro) Summary ---")
advanced_summary_json = json.dumps(advanced_summary_data, indent=2)
with open("advanced_summary.json", "w") as f:
f.write(advanced_summary_json)
print("Advanced summary saved to advanced_summary.json")
else:
print(f"Advanced summarization failed with status code: {advanced_summary_response.status_code}")
print(advanced_summary_response.text)