Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -40,7 +40,7 @@ def extract_keywords(text: str, top_k: int = 5) -> str:
|
|
40 |
return " ".join(key_tokens)
|
41 |
|
42 |
##############################################################################
|
43 |
-
#
|
44 |
# - ์์ 20๊ฐ ๊ฒฐ๊ณผ JSON์ LLM์ ๋๊ธธ ๋ link, snippet ๋ฑ ๋ชจ๋ ํฌํจ
|
45 |
##############################################################################
|
46 |
def do_web_search(query: str) -> str:
|
@@ -50,30 +50,62 @@ def do_web_search(query: str) -> str:
|
|
50 |
"""
|
51 |
try:
|
52 |
url = "https://api.serphouse.com/serp/live"
|
|
|
|
|
53 |
params = {
|
54 |
"q": query,
|
55 |
"domain": "google.com",
|
56 |
-
"
|
57 |
"device": "desktop",
|
58 |
-
"
|
59 |
-
"num_result": "20",
|
60 |
-
"api_token": SERPHOUSE_API_KEY,
|
61 |
}
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
results = data.get("results", {})
|
67 |
-
organic =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
if not organic:
|
69 |
-
|
|
|
|
|
|
|
|
|
70 |
|
71 |
summary_lines = []
|
72 |
for idx, item in enumerate(organic[:20], start=1):
|
73 |
item_json = json.dumps(item, ensure_ascii=False, indent=2)
|
74 |
summary_lines.append(f"Result {idx}:\n{item_json}\n")
|
75 |
-
|
|
|
76 |
return "\n".join(summary_lines)
|
|
|
77 |
except Exception as e:
|
78 |
logger.error(f"Web search failed: {e}")
|
79 |
return f"Web search failed: {str(e)}"
|
|
|
40 |
return " ".join(key_tokens)
|
41 |
|
42 |
##############################################################################
|
43 |
+
# SerpHouse Live endpoint ํธ์ถ
|
44 |
# - ์์ 20๊ฐ ๊ฒฐ๊ณผ JSON์ LLM์ ๋๊ธธ ๋ link, snippet ๋ฑ ๋ชจ๋ ํฌํจ
|
45 |
##############################################################################
|
46 |
def do_web_search(query: str) -> str:
|
|
|
50 |
"""
|
51 |
try:
|
52 |
url = "https://api.serphouse.com/serp/live"
|
53 |
+
|
54 |
+
# ๊ธฐ๋ณธ GET ๋ฐฉ์์ผ๋ก ํ๋ผ๋ฏธํฐ ๊ฐ์ํ
|
55 |
params = {
|
56 |
"q": query,
|
57 |
"domain": "google.com",
|
58 |
+
"serp_type": "web", # ๊ธฐ๋ณธ ์น ๊ฒ์
|
59 |
"device": "desktop",
|
60 |
+
"lang": "en"
|
|
|
|
|
61 |
}
|
62 |
+
|
63 |
+
headers = {
|
64 |
+
"Authorization": f"Bearer {SERPHOUSE_API_KEY}"
|
65 |
+
}
|
66 |
+
|
67 |
+
logger.info(f"SerpHouse API ํธ์ถ ์ค... ๊ฒ์์ด: {query}")
|
68 |
+
logger.info(f"์์ฒญ URL: {url} - ํ๋ผ๋ฏธํฐ: {params}")
|
69 |
+
|
70 |
+
# GET ์์ฒญ ์ํ
|
71 |
+
response = requests.get(url, headers=headers, params=params, timeout=30)
|
72 |
+
response.raise_for_status()
|
73 |
+
|
74 |
+
logger.info(f"SerpHouse API ์๋ต ์ํ ์ฝ๋: {response.status_code}")
|
75 |
+
data = response.json()
|
76 |
+
|
77 |
+
# ๋ค์ํ ์๋ต ๊ตฌ์กฐ ์ฒ๋ฆฌ
|
78 |
results = data.get("results", {})
|
79 |
+
organic = None
|
80 |
+
|
81 |
+
# ๊ฐ๋ฅํ ์๋ต ๊ตฌ์กฐ 1
|
82 |
+
if isinstance(results, dict) and "organic" in results:
|
83 |
+
organic = results["organic"]
|
84 |
+
|
85 |
+
# ๊ฐ๋ฅํ ์๋ต ๊ตฌ์กฐ 2 (์ค์ฒฉ๋ results)
|
86 |
+
elif isinstance(results, dict) and "results" in results:
|
87 |
+
if isinstance(results["results"], dict) and "organic" in results["results"]:
|
88 |
+
organic = results["results"]["organic"]
|
89 |
+
|
90 |
+
# ๊ฐ๋ฅํ ์๋ต ๊ตฌ์กฐ 3 (์ต์์ organic)
|
91 |
+
elif "organic" in data:
|
92 |
+
organic = data["organic"]
|
93 |
+
|
94 |
if not organic:
|
95 |
+
logger.warning("์๋ต์์ organic ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.")
|
96 |
+
logger.debug(f"์๋ต ๊ตฌ์กฐ: {list(data.keys())}")
|
97 |
+
if isinstance(results, dict):
|
98 |
+
logger.debug(f"results ๊ตฌ์กฐ: {list(results.keys())}")
|
99 |
+
return "No web search results found or unexpected API response structure."
|
100 |
|
101 |
summary_lines = []
|
102 |
for idx, item in enumerate(organic[:20], start=1):
|
103 |
item_json = json.dumps(item, ensure_ascii=False, indent=2)
|
104 |
summary_lines.append(f"Result {idx}:\n{item_json}\n")
|
105 |
+
|
106 |
+
logger.info(f"๊ฒ์ ๊ฒฐ๊ณผ {len(organic)} ๊ฐ ์ฐพ์")
|
107 |
return "\n".join(summary_lines)
|
108 |
+
|
109 |
except Exception as e:
|
110 |
logger.error(f"Web search failed: {e}")
|
111 |
return f"Web search failed: {str(e)}"
|