hyejagentext / app.py
seawolf2357's picture
Update app.py
cd6e2bb verified
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์ค„์”ฉ 3๊ฐœ๋ฅผ ๋ฌถ์–ด์„œ 1๋ฌธ๋‹จ์„ ๊ตฌ์„ฑํ•˜๊ณ , ์ตœ๋Œ€ 30์ค„ ์ด๋‚ด๋กœ ์ถœ๋ ฅํ• ๊ฒƒ. ์ œ๋ชฉ์€ ์˜๋ฌธํ˜•์œผ๋กœ ํฅ๋ฏธ๋ฅผ ์ž๊ทนํ•˜๋Š” ๋‚ด์šฉ์œผ๋กœ ํ• ๊ฒƒ(์˜ˆ์‹œ '์‹ ํ™”์† ์‚ผ์†์˜ ํž˜์€ ๋จธ๋ฆฌ์นด๋ฝ์—์„œ ๋‚˜์™”์„๊นŒ?'). ์ œ๋ชฉ์€ '๋ฉ”์ธํ‚ค์›Œ๋“œ'์™€ '์—ฐ๊ด€์„ฑ'์˜ ๋žœ๋ค ์กฐํ•ฉ ๊ฒฐ๊ณผ๋กœ ํ• ๊ฒƒ. ๋‚ด์šฉ์€ ์ œ๋ชฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋˜, '์—ฐ๊ด€์„ฑ'์„ ๋ฐ˜์˜ํ•˜์—ฌ ๊ธฐ์Šน์ „๊ฒฐ์˜ ๊ตฌ์กฐ๋กœ 4๊ฐœ์˜ ๋ฌธ๋‹จ์œผ๋กœ ์ž‘์„ฑํ• ๊ฒƒ. '๋ฉ”์ธํ‚ค์›Œ๋“œ'์™€ '์—ฐ๊ด€์„ฑ'๊ฐ„์˜ ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ์ฐพ์•„์„œ ๊ทธ ์ด์œ ๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์„ค๋ช…ํ•˜๋Š” ์„œ์‚ฌ๋ฅผ ์ž‘์„ฑํ• ๊ฒƒ. '์—ฐ๊ด€์„ฑ'์€ '์‹ ํ™”, ์—ญ์‚ฌ, ๊ณผํ•™, ๊ฒฝ์ œ, ์‚ฌํšŒ, ๋ฏธ์šฉ, ๋ฌธํ•™, ์˜ํ™”, ์Œ์•…, ๋ฏธ์ˆ , ์ „์Ÿ, ์œ ๋จธ, ์†๋‹ด, ๋ช…์–ธ'์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๊ฐ๊ฐ์˜ ๊ด€๋ จ '์˜ˆ์‹œ'๋ฅผ ๋ฐ˜๋“œ์‹œ ๋“ค์–ด๋ณด์ผ๊ฒƒ. ์ž…๋ ฅ: '{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": 4000
}
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("<h1 align='center'>'ํ˜œ์ž ์Šคํฌ๋ฆฝํŠธ' Premium</h1>")
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()