import gradio as gr
import requests
import json
API_URL = "https://api.openai.com/v1/chat/completions"
def predict(inputs, top_p, temperature, openai_api_key):
narration_prompt = f"동영상에 사용할 전문적인 나레이션을 작성하라. 반드시 한글로 작성할것. 일체의 지문이나 지시, 배경 설명 등을 노출 하거나 출력하지 말고 순수한 나레이션만 2줄씩 묶어서 최대 20줄 이내로 출력력. 입력: '{inputs}'"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {openai_api_key}"
}
payload = {
"model": "gpt-4-1106-preview",
"messages": [{"role": "system", "content": narration_prompt}],
"temperature": temperature,
"top_p": top_p,
"n": 1,
"max_tokens": 1000
}
response = requests.post(API_URL, headers=headers, json=payload)
if response.status_code == 200:
response_data = response.json()
generated_text = response_data['choices'][0]['message']['content']
return generated_text
else:
return "Error: Unable to generate response."
with gr.Blocks() as demo:
gr.Markdown("
'혜자 스크립트' Premium
")
with gr.Row():
openai_api_key = gr.Textbox(type='password', label="Enter your OpenAI API key here")
inputs = gr.Textbox(placeholder="여기에 입력하세요.", label="나레이션 스크립트를 생성하고 싶은 주제어나 문장, 지시문, URL(예시 참조)을 입력하세요.")
top_p = gr.Slider(minimum=0, maximum=1.0, value=1.0, step=0.05, label="Top-p (nucleus sampling)")
temperature = gr.Slider(minimum=0, maximum=5.0, value=1.0, step=0.1, label="Temperature")
output = gr.Textbox(label="Generated Script", readonly=True)
submit_button = gr.Button("Generate")
submit_button.click(fn=predict, inputs=[inputs, top_p, temperature, openai_api_key], outputs=output)
examples = gr.Examples(examples=[
["상품 설명:새로 출시된 '토리' 립밤은 FDA 승인, 최고의 보습력, 구매지수 1위"],
["브랜딩: '토리'립밤은 20대 여성에게 어필할 브랜딩이 필요해"],
["광고: 설날 부모님과 친지 선물은 법성포 보리굴비 '법성굴비'가 최고랍니다."],
["정보 공유: 비타민C 과다 복용은 건강에 오히려 해롭다."],
["홍보: 'OpenAI'는 '챗GPT'의 맞춤 GPT '스토어'를 오픈하였다."],
["인사: '애플 법인'의 고객과 임직원을 위한 진취적인 2024년 신년 인사"],
["https://aitechtree.wordpress.com/2023/11/24/state-department-harnesses-ai-potential-unleashing-real-time-insights-and-leading-ethical-adoption-worldwide/ 이 url의 post를 기반으로 하라"],
["https://www.amazon.com/Cuckoo-CRP-RT0609FB-Pressure-Scorched-Options/dp/B087H24T6G?ref_=Oct_DLandingS_D_d34e1017_2&th=1/ 이 아마존 쇼핑 url의 상품정보를 기반으로 하라"],
["https://medium.com/@thakermadhav/build-your-own-rag-with-mistral-7b-and-langchain-97d0c92fa146/ 이 블로그 url의 post를 기반으로 하라"]
], inputs=[inputs], fn=predict, outputs=output)
demo.launch()