findMax.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import json
  2. import requests
  3. import string
  4. import random
  5. import time
  6. # 随机字符串生成器
  7. def generate_random_text(length):
  8. return ''.join(random.choices(string.ascii_letters + string.digits + " ", k=length))
  9. # 测试 prompt 长度上限
  10. def test_prompt_limit(base_prompt, model, url, step=1000, max_len=1000000):
  11. current_length = 0
  12. success_length = 0
  13. while current_length <= max_len:
  14. random_text = generate_random_text(current_length)
  15. test_prompt = base_prompt + "\n附加内容:" + random_text
  16. payload = {
  17. "model": model,
  18. "prompt": test_prompt,
  19. "stream": False
  20. }
  21. try:
  22. print(f"🔎 正在测试长度: {len(test_prompt)} 字符 ... ", end="")
  23. response = requests.post(url, json=payload, timeout=30)
  24. if response.status_code == 200:
  25. result = response.json()
  26. output = result.get("response", "")
  27. print(f"✅ 成功,模型响应 {len(output)} 字符")
  28. success_length = current_length
  29. current_length += step
  30. time.sleep(0.5) # 防止接口过载
  31. else:
  32. print(f"❌ 失败,状态码: {response.status_code}")
  33. break
  34. except Exception as e:
  35. print(f"❌ 异常: {str(e)}")
  36. break
  37. print("\n✅ 测试完成")
  38. print(f"模型可接受的最大 prompt 追加内容约为:{success_length} 字符(约 {success_length // 4} tokens)")
  39. # === 你的基础 prompt(可从文件加载,也可直接写入) ===
  40. base_prompt = "你是一个AI助手,以下是我想给你的内容:"
  41. # === 调用测试 ===
  42. OLLAMA_URL = "http://192.168.1.207:11434/api/generate"
  43. MODEL_NAME = "deepseek-r1:8b" # 替换成你实际加载的模型名
  44. test_prompt_limit(
  45. base_prompt=base_prompt,
  46. model=MODEL_NAME,
  47. url=OLLAMA_URL,
  48. step=10000, # 每次增加 1 万字符
  49. max_len=500000 # 最大 50 万字符(可根据模型能力增大)
  50. )