This repository was archived by the owner on Jul 22, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
This repository was archived by the owner on Jul 22, 2025. It is now read-only.
[Bug] Can't get the deep search results #324
Copy link
Copy link
Open
Labels
bugSomething isn't workingSomething isn't working
Description
🐛 Describe the Bug
Here is my code:
def deep_research(user_input, max_retries=1, timeout=300):
url = "https://api.perplexity.ai/chat/completions"
payload = {
"model": "sonar-deep-research",
"messages": [
{"role": "user", "content": user_input}
],
"max_tokens": MAX_TOKENS
}
headers = {
"Authorization": f"Bearer {PERPLEXITY_API_KEY}",
"Content-Type": "application/json"
}
###
for attempt in range(max_retries):
try:
print(f"[Perplexity Deep Research] Attempt {attempt + 1}/{max_retries}")
print(f" - Timeout set to: {timeout} seconds")
###
response = requests.post(
url,
json=payload,
headers=headers,
timeout=(timeout, timeout), # (连接超时, 读取超时)
stream=False
)
###
response.raise_for_status()
data = response.json()
deep_search = data["choices"][0]["message"]["content"]
usage = data.get("usage", {})
###
prompt_tokens = usage.get("prompt_tokens", 0)
completion_tokens = usage.get("completion_tokens", 0)
num_search_queries = usage.get("num_search_queries", 0)
reasoning_tokens = usage.get("reasoning_tokens", 0)
###
cost_input = (prompt_tokens / 1_000_000) * 2.0 # $2 per 1M input tokens
cost_output = (completion_tokens / 1_000_000) * 8.0 # $8 per 1M output tokens
cost_reasoning = (reasoning_tokens / 1_000_000) * 3.0 # $3 per 1M reasoning tokens
cost_search = (num_search_queries / 1000) * 5.0 # $5 per 1000 search queries
t_cost_usd = round(cost_input + cost_output + cost_reasoning + cost_search, 4)
# print(f"[Perplexity Deep Research] Query processed successfully")
# print(f" - Input tokens: {prompt_tokens} (${cost_input:.6f})")
# print(f" - Output tokens: {completion_tokens} (${cost_output:.6f})")
# print(f" - Reasoning tokens: {reasoning_tokens} (${cost_reasoning:.6f})")
# print(f" - Search queries: {num_search_queries} (${cost_search:.6f})")
# print(f" - Total tokens: {total_tokens}")
# print(f" - Total cost: ${t_cost_usd:.6f} (¥{t_cost_cny:.4f})")
# print(f" - Response length: {len(deep_search)} characters")
return deep_search, t_cost_usd, prompt_tokens, completion_tokens
except Timeout:
print(f"[Perplexity Deep Research] Timeout error on attempt {attempt + 1}")
if attempt < max_retries - 1:
wait_time = 12 # 5/min
print(f" - Waiting {wait_time} seconds before retry...")
time.sleep(wait_time)
continue
except ConnectionError as e:
print(f"[Perplexity Deep Research] Connection error on attempt {attempt + 1}: {str(e)}")
if attempt < max_retries - 1:
wait_time = 12 # 5/min
print(f" - Waiting {wait_time} seconds before retry...")
time.sleep(wait_time)
continue
except RequestException as e:
print(f"[Perplexity Deep Research] Request error on attempt {attempt + 1}: {str(e)}")
if attempt < max_retries - 1:
wait_time = 12 # 5/min
print(f" - Waiting {wait_time} seconds before retry...")
time.sleep(wait_time)
continue
except (ValueError, KeyError) as e:
print(f"[Perplexity Deep Research] JSON parsing error:")
print(f" - Status Code: {response.status_code}")
print(f" - Error Type: {type(e).__name__}")
print(f" - Error Message: {str(e)}")
print(f" - Response Text: {response.text[:200]}...")
break
print(f"[Perplexity Deep Research] All {max_retries} attempts failed")
return "", 0, 0, 0
✅ Expected Behavior
It should work.
❌ Actual Behavior
The api cost has been charged, but I can't get the results. Error as below:
'Connection aborted.', RemoteDisconnected('Remote end closed connection without response')
🔄 Steps to Reproduce
- Call the API with the following request:
- Observe the unexpected behavior.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working