110 lines
3.5 KiB
Python
110 lines
3.5 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test to confirm: temperature < 0.3 causes failures on Nous API
|
|
"""
|
|
|
|
import asyncio
|
|
import os
|
|
from openai import AsyncOpenAI
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
nous_client = AsyncOpenAI(
|
|
api_key=os.getenv("NOUS_API_KEY"),
|
|
base_url="https://inference-api.nousresearch.com/v1"
|
|
)
|
|
|
|
MODEL = "gemini-2.5-flash"
|
|
|
|
async def test_temp(temp_value):
|
|
"""Test a specific temperature value."""
|
|
content = "Test content. " * 1000 # 14k chars
|
|
|
|
print(f"Testing temperature={temp_value}...", end=" ")
|
|
|
|
try:
|
|
response = await nous_client.chat.completions.create(
|
|
model=MODEL,
|
|
messages=[
|
|
{"role": "system", "content": "Summarize this content."},
|
|
{"role": "user", "content": content}
|
|
],
|
|
temperature=temp_value,
|
|
max_tokens=4000
|
|
)
|
|
print(f"✅ SUCCESS")
|
|
return True
|
|
except Exception as e:
|
|
print(f"❌ FAILED")
|
|
return False
|
|
|
|
async def main():
|
|
print("Testing temperature threshold for Nous API...")
|
|
print("="*60)
|
|
|
|
temps = [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 1.0]
|
|
|
|
for temp in temps:
|
|
await test_temp(temp)
|
|
await asyncio.sleep(0.5)
|
|
|
|
print("="*60)
|
|
print("\nNow testing with ACTUAL web_tools.py content and parameters:")
|
|
print("="*60)
|
|
|
|
# Simulate the actual web_tools.py call
|
|
system_prompt = """You are an expert content analyst. Your job is to process web content and create a comprehensive yet concise summary that preserves all important information while dramatically reducing bulk.
|
|
|
|
Create a well-structured markdown summary that includes:
|
|
1. Key excerpts (quotes, code snippets, important facts) in their original format
|
|
2. Comprehensive summary of all other important information
|
|
3. Proper markdown formatting with headers, bullets, and emphasis
|
|
|
|
Your goal is to preserve ALL important information while reducing length. Never lose key facts, figures, insights, or actionable information. Make it scannable and well-organized."""
|
|
|
|
content = "Sample web page content. " * 3000 # ~75k chars like the real failures
|
|
|
|
user_prompt = f"""Please process this web content and create a comprehensive markdown summary:
|
|
|
|
CONTENT TO PROCESS:
|
|
{content}
|
|
|
|
Create a markdown summary that captures all key information in a well-organized, scannable format. Include important quotes and code snippets in their original formatting. Focus on actionable information, specific details, and unique insights."""
|
|
|
|
print(f"\nActual web_tools call (temp=0.1, {len(content):,} chars)...", end=" ")
|
|
try:
|
|
response = await nous_client.chat.completions.create(
|
|
model=MODEL,
|
|
messages=[
|
|
{"role": "system", "content": system_prompt},
|
|
{"role": "user", "content": user_prompt}
|
|
],
|
|
temperature=0.1,
|
|
max_tokens=4000
|
|
)
|
|
print(f"✅ SUCCESS")
|
|
except:
|
|
print(f"❌ FAILED")
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
print(f"Same call but with temp=0.3...", end=" ")
|
|
try:
|
|
response = await nous_client.chat.completions.create(
|
|
model=MODEL,
|
|
messages=[
|
|
{"role": "system", "content": system_prompt},
|
|
{"role": "user", "content": user_prompt}
|
|
],
|
|
temperature=0.3,
|
|
max_tokens=4000
|
|
)
|
|
print(f"✅ SUCCESS")
|
|
except:
|
|
print(f"❌ FAILED")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|
|
|