aigg / app.py
brilliance3's picture
Upload app.py
f159a5a verified
import gradio as gr
import requests
import os
PERPLEXITY_API_KEY = os.getenv("PERPLEXITY_API_KEY")
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
def search_and_answer(question):
# 1. Search using Perplexity
headers = {"Authorization": f"Bearer {PERPLEXITY_API_KEY}"}
data = {
"query": question,
"domain": ["gg.go.kr", "ggc.go.kr"]
}
search_resp = requests.post("https://api.perplexity.ai/search", json=data, headers=headers)
search_data = search_resp.json()
snippets = "\n".join([r["snippet"] for r in search_data.get("results", [])[:3]])
# 2. Generate answer with Gemini (correct model)
prompt = f"์งˆ๋ฌธ: {question}\n\n์•„๋ž˜ ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์š”์•ฝ๋œ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•ด ์ฃผ์„ธ์š”:\n{snippets}"
gemini_url = "https://generativelanguage.googleapis.com/v1/models/gemini-1.5-pro:generateContent"
headers = {"Content-Type": "application/json"}
params = {"key": GEMINI_API_KEY}
body = {
"contents": [{"parts": [{"text": prompt}]}]
}
gemini_resp = requests.post(gemini_url, params=params, headers=headers, json=body)
resp_json = gemini_resp.json()
print("Gemini ์‘๋‹ต ์ „์ฒด:", resp_json) # ๋””๋ฒ„๊น…์šฉ ์ถœ๋ ฅ
try:
return resp_json["candidates"][0]["content"]["parts"][0]["text"]
except KeyError:
return f"[Gemini ์˜ค๋ฅ˜] ์˜ˆ์ƒ๋œ ์‘๋‹ต ํ˜•์‹์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‘๋‹ต ๋‚ด์šฉ: {resp_json}"
iface = gr.Interface(fn=search_and_answer,
inputs="text",
outputs="text",
title="๊ฒฝ๊ธฐ๋„ ์ž์—ฐ์–ด ์งˆ์˜ ์‘๋‹ต AI",
description="์งˆ๋ฌธ์„ ์ž…๋ ฅํ•˜๋ฉด ๊ฒฝ๊ธฐ๋„ ๊ณต์‹ ์‚ฌ์ดํŠธ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , Gemini AI๊ฐ€ ์š”์•ฝ ๋‹ต๋ณ€์„ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.")
iface.launch()