Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/lmi/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ dependencies = [
"coredis",
"fhaviary>=0.14.0", # For multi-image support
"limits>=4.8", # Pin for RedisBridge.key_prefix
"litellm>=1.63.5", # Lower pin for reasoning + streaming fix
"litellm>=1.75.6", # Lower pin for OpenAI reasoning effort support
"pydantic~=2.0,>=2.10.1",
"tiktoken>=0.4.0",
"typing-extensions; python_version <= '3.11'", # for typing.override
Expand Down
1 change: 1 addition & 0 deletions packages/lmi/src/lmi/llms.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ class CommonLLMNames(StrEnum):
GPT_35_TURBO = "gpt-3.5-turbo-0125"
CLAUDE_35_SONNET = "claude-3-5-sonnet-20241022"
CLAUDE_37_SONNET = "claude-3-7-sonnet-20250219"
CLAUDE_45_SONNET = "claude-sonnet-4-5-20250929"

# Use these when trying to think of a somewhat opinionated default
OPENAI_BASELINE = "gpt-4o-2024-11-20" # Fast and decent
Expand Down
110 changes: 0 additions & 110 deletions packages/lmi/tests/cassettes/TestReasoning.test_anthropic_model.yaml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
interactions:
- request:
body:
'{"model":"claude-sonnet-4-5-20250929","messages":[{"role":"user","content":[{"type":"text","text":"What
is the meaning of life?"}]}],"thinking":{"type":"enabled","budget_tokens":4096},"max_tokens":8192,"system":[{"type":"text","text":"Think
deeply about the following question and answer it."}]}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
anthropic-version:
- "2023-06-01"
connection:
- keep-alive
content-length:
- "295"
content-type:
- application/json
host:
- api.anthropic.com
user-agent:
- litellm/1.75.6
method: POST
uri: https://api.anthropic.com/v1/messages
response:
body:
string: !!binary |
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
headers:
CF-RAY:
- 9933aec89c3a58ac-SJC
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Thu, 23 Oct 2025 19:36:32 GMT
Server:
- cloudflare
Transfer-Encoding:
- chunked
Via:
- 1.1 google
X-Robots-Tag:
- none
anthropic-organization-id:
- f2c99ed9-038a-406f-9cb5-1f840b758a20
anthropic-ratelimit-input-tokens-limit:
- "25000000"
anthropic-ratelimit-input-tokens-remaining:
- "25000000"
anthropic-ratelimit-input-tokens-reset:
- "2025-10-23T19:36:22Z"
anthropic-ratelimit-output-tokens-limit:
- "5000000"
anthropic-ratelimit-output-tokens-remaining:
- "5000000"
anthropic-ratelimit-output-tokens-reset:
- "2025-10-23T19:36:32Z"
anthropic-ratelimit-tokens-limit:
- "30000000"
anthropic-ratelimit-tokens-remaining:
- "30000000"
anthropic-ratelimit-tokens-reset:
- "2025-10-23T19:36:22Z"
cf-cache-status:
- DYNAMIC
request-id:
- req_011CUQh8rN1Ro5LL1uE9Ps9V
strict-transport-security:
- max-age=31536000; includeSubDomains; preload
x-envoy-upstream-service-time:
- "12001"
status:
code: 200
message: OK
version: 1
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
interactions:
- request:
body:
'{"messages":[{"role":"system","content":"Think deeply about the following
question and answer it."},{"role":"user","content":"What is the meaning of life?"}],"model":"gpt-5-2025-08-07","n":1,"reasoning_effort":"high"}'
headers:
accept:
- application/json
accept-encoding:
- gzip, deflate
connection:
- keep-alive
content-length:
- "217"
content-type:
- application/json
host:
- api.openai.com
user-agent:
- AsyncOpenAI/Python 2.5.0
x-stainless-arch:
- arm64
x-stainless-async:
- async:asyncio
x-stainless-lang:
- python
x-stainless-os:
- MacOS
x-stainless-package-version:
- 2.5.0
x-stainless-raw-response:
- "true"
x-stainless-read-timeout:
- "60.0"
x-stainless-retry-count:
- "0"
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.12.8
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
body:
string: !!binary |
H4sIAAAAAAAAA3RW244URwx936+w+gmk2WF3ybJk9olLQlBAWWAjgQJa1VS5p52tLrfKrhlGCInf
4Pf4ksjVc0OBl5G6fD8+tufTEUBDoZlB4zunvh/i8ZPr0r4dVk9fvb667t6++z3+FW+fv3q3XK66
/o9mYhY8/xe9bq2mnvshohKnUewzOkXzenrx4PTsl/P7D+9XQc8Bo5ktBj0+Pz47OTs/Pnl4fHKx
seuYPEozg3+OAAA+1V/LMAX82MzgZLJ96VHELbCZ7ZQAmszRXhonQqIuaTPZCz0nxVSTvu4QenSJ
0gK4hUgtAkn69uWrggOhtIgIrfMKK0datYqCdpgRlGGO0HJJ4RJIv335KuBgcKqYE6y5wFg93HEp
gHCPSj0KBBLPS8x3QbvMZdHBqnNaDSIvcbL/FM20tBB5AuZjK/j25WtGWFGMlpEyqLtFyCgDJ6E5
RdK1WU3hKbUtZkwKEZOgANs3hN2zS7LCLLP36X06hsfEkRfkXZyBlLwkSyfjkDkUj2MSgxMBTkCp
5dw76/XUbF9jpAVxkRncJl5VXasHnnG4BMG8RGBDTsAJuAT4ccgoQpwMerXaTL86e5RJlBUjuXTv
jTL5GUTDYklZCxeJ60toI5dM0u1w9J3LzivmES2SwH1197caJi6bt670Lm0+ZpDRKgMpBoihaZaU
rHOCsMIYj+dIaVHd/PaRxJhDLt5zcyk5kOjM6AAl0RKzGHtAKGLSy5ECHbNg9bphw5Zuu6S570kV
AzhvYEJAGUixuh2j1OCPSwhdjYdGp13C8zUIWoqQ0dXO+4gux/UYtESlpavUteF0FfCptftK1r6z
fq+hpRRkbMEuPaxPDIvMK2gz97OaBUZOC1O446NVljFWDkhHg9SQFS9IiAHD3YkZXZU8mO6dBbu4
iTMSok5FV8vANadQixaM7Wj4hG3SkrcZAlHO602S7hYFxCht3FlzyXV2R6vr7JJ4TGG07LnHpEZ9
cCucgDifMSQUmQBnCIgDGBNN+25F5hEMxiObA5B10g6FpJb/wgg9IA8Rq2FcT434hwjksXOimdMC
RSsmPYsaVOTmcaSVDHmzdDaIT8eCk2aaF8UtIFabATKFq6Jjpa5OOKEApYoj+QrDHswKEheNTlTM
qDp/Zp2kNM7QyEm5pRin8AJdTpMNQ8cx/8FKuYSICp3LwUoF6dyAkJ3NtEVMIF2mdLuL90bdGnjA
ZDRacQqYp/Dyu27UUIvslLQEi+ddpHm2ORkwy4BeabMS/rQ+ZVySbeUpvBxRE8AlxyWC85nFOOGE
k2yXeW3n88oQWLl0sNQF7Qh4nMELqkTcgDZuqHG8IKJsOe2KrieguWg32e82tI0APWfrl3dFcAxl
98GoOz28OxnbIs6uXioxHghcSqwjh+zifdhIPu9uXEuJpLvJtTi7W6I8NFX6+QjgQ72Z5bsz2AyZ
+0FvlG+xuj27GN01+xt9IDy9f74RK6uLh5IHZ5MfeLwJqI6iHNzdxjvfYdjb7o+0K4H4QHB0UN//
E/qR77F2Sou9l9OLX89+GmEv8B4HxXAzZAzkv697r5bR/sj8TG0Hdc252QzdjRJma0fA1pU4/slo
ZC2K/U1LaYHZplw3HT/6fPQfAAAA//8DAINfyMNmCQAA
headers:
Access-Control-Expose-Headers:
- X-Request-ID
CF-RAY:
- 99336a7dbe6ceb26-SJC
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Thu, 23 Oct 2025 18:50:08 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=DjysHB9qTMZORX7QYyklZkQ1gpCLqiF_4Oc3s4I8ipY-1761245408-1.0.1.1-o1.0znf3QrMBHHkWGdL6H8DlcQnOUBlYMBnIgPIQbfD4x_sGH1NYYRKZdaDWYYgKSCKsA55Y_WKWdc3JL2YOUVOAxVcxpifd7KTjej8UtC0;
path=/; expires=Thu, 23-Oct-25 19:20:08 GMT; domain=.api.openai.com; HttpOnly;
Secure; SameSite=None
- _cfuvid=EoJIYMSxi_5wB664HTnmjMc0JkyL5rOMzF69BXv6NQw-1761245408465-0.0.1.1-604800000;
path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Transfer-Encoding:
- chunked
X-Content-Type-Options:
- nosniff
alt-svc:
- h3=":443"; ma=86400
cf-cache-status:
- DYNAMIC
openai-organization:
- future-house-xr4tdh
openai-processing-ms:
- "25008"
openai-project:
- proj_RpeV6PrPclPHBb5GlExPXSBj
openai-version:
- "2020-10-01"
x-envoy-upstream-service-time:
- "25087"
x-openai-proxy-wasm:
- v0.1
x-ratelimit-limit-requests:
- "15000"
x-ratelimit-limit-tokens:
- "40000000"
x-ratelimit-remaining-requests:
- "14999"
x-ratelimit-remaining-tokens:
- "39999976"
x-ratelimit-reset-requests:
- 4ms
x-ratelimit-reset-tokens:
- 0s
x-request-id:
- req_79da4032ef5c40fda551af38c74aa897
status:
code: 200
message: OK
version: 1
Loading