File size: 1,528 Bytes
aa5998e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
789c9f4
aa5998e
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from youtube_transcript_api import YouTubeTranscriptApi
from constants import OPENAI_API_KEY, OPENAI_API_BASE_URL, OPEN_AI_MODEL
import json
import requests

def create_transcript_from_youtube_api(youtube_video_id):
    if not youtube_video_id:
        return {"success": False, "error": "Please pass your youtube video-id"}
    try:
        list_transcript = YouTubeTranscriptApi.get_transcript(youtube_video_id)
        transcript = ' '.join(entry['text'] for entry in list_transcript)
        return {"success": True, "data": transcript}
    except Exception as e:
        return {"success": False, "error": f"Transcription failed due to : {e}"}


def create_open_ai_query(input_query, system_message=None, model_engine=OPEN_AI_MODEL):
    openai_url = f"{OPENAI_API_BASE_URL}/chat/completions"
    headers = {'Authorization': f'Bearer {OPENAI_API_KEY}', 'Content-Type': 'application/json'}
    messages = []
    if system_message:
        messages.append({"role": "system", "content": system_message})
    messages.append({"role": "user", "content": input_query})
    payload = {
        'model': model_engine,
        'messages': messages
    }
    response = requests.post(openai_url, headers=headers, data=json.dumps(payload))
    if response.status_code == 200 and 'choices' in response.json():
        content_text = response.json()['choices'][0]['message']['content'].strip()
        return {"success": True, "data": content_text, "response_json": response.json()}
    return {"success": False, "error": response.text}