https://github.com/balisujohn/litellm
Soft fork of LiteLLM for localwriter.
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (9.4%) to scientific vocabulary
Repository
Soft fork of LiteLLM for localwriter.
Basic Info
- Host: GitHub
- Owner: balisujohn
- License: other
- Language: Python
- Default Branch: master
- Size: 170 MB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
- Releases: 0
Metadata Files
README.md
LiteLLM
<p align="center">
<p align="center">
<a href="https://render.com/deploy?repo=https://github.com/BerriAI/litellm" target="_blank" rel="nofollow"><img src="https://render.com/images/deploy-to-render-button.svg" alt="Deploy to Render"></a>
<a href="https://railway.app/template/HLP0Ub?referralCode=jch2ME">
<img src="https://railway.app/button.svg" alt="Deploy on Railway">
</a>
</p>
<p align="center">Call all LLM APIs using the OpenAI format [Bedrock, Huggingface, VertexAI, TogetherAI, Azure, OpenAI, Groq etc.]
<br>
</p>
LiteLLM Proxy Server (LLM Gateway) | Hosted Proxy (Preview) | Enterprise Tier
This is a soft fork of LiteLLM for localwriter. It has the enterprise directory removed from version control, and will be updated on an as-needed basis
LiteLLM manages:
- Translate inputs to provider's
completion,embedding, andimage_generationendpoints - Consistent output, text responses will always be available at
['choices'][0]['message']['content'] - Retry/fallback logic across multiple deployments (e.g. Azure/OpenAI) - Router
- Set Budgets & Rate limits per project, api key, model LiteLLM Proxy Server (LLM Gateway)
Jump to LiteLLM Proxy (LLM Gateway) Docs
Jump to Supported LLM Providers
Stable Release: Use docker images with the -stable tag. These have undergone 12 hour load tests, before being published. More information about the release cycle here
Support for more providers. Missing a provider or LLM Platform, raise a feature request.
Usage (Docs)
[!IMPORTANT] LiteLLM v1.0.0 now requires
openai>=1.0.0. Migration guide here
LiteLLM v1.40.14+ now requirespydantic>=2.0.0. No changes required.
shell
pip install litellm
```python from litellm import completion import os
set ENV variables
os.environ["OPENAIAPIKEY"] = "your-openai-key" os.environ["ANTHROPICAPIKEY"] = "your-anthropic-key"
messages = [{ "content": "Hello, how are you?","role": "user"}]
openai call
response = completion(model="openai/gpt-4o", messages=messages)
anthropic call
response = completion(model="anthropic/claude-sonnet-4-20250514", messages=messages) print(response) ```
Response (OpenAI Format)
json
{
"id": "chatcmpl-1214900a-6cdd-4148-b663-b5e2f642b4de",
"created": 1751494488,
"model": "claude-sonnet-4-20250514",
"object": "chat.completion",
"system_fingerprint": null,
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "Hello! I'm doing well, thank you for asking. I'm here and ready to help with whatever you'd like to discuss or work on. How are you doing today?",
"role": "assistant",
"tool_calls": null,
"function_call": null
}
}
],
"usage": {
"completion_tokens": 39,
"prompt_tokens": 13,
"total_tokens": 52,
"completion_tokens_details": null,
"prompt_tokens_details": {
"audio_tokens": null,
"cached_tokens": 0
},
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
}
}
Call any model supported by a provider, with model=<provider_name>/<model_name>. There might be provider-specific details here, so refer to provider docs for more information
Async (Docs)
```python from litellm import acompletion import asyncio
async def testgetresponse(): usermessage = "Hello, how are you?" messages = [{"content": usermessage, "role": "user"}] response = await acompletion(model="openai/gpt-4o", messages=messages) return response
response = asyncio.run(testgetresponse()) print(response) ```
Streaming (Docs)
liteLLM supports streaming the model response back, pass stream=True to get a streaming iterator in response.
Streaming is supported for all models (Bedrock, Huggingface, TogetherAI, Azure, OpenAI, etc.)
```python from litellm import completion response = completion(model="openai/gpt-4o", messages=messages, stream=True) for part in response: print(part.choices[0].delta.content or "")
claude sonnet 4
response = completion('anthropic/claude-sonnet-4-20250514', messages, stream=True) for part in response: print(part) ```
Response chunk (OpenAI Format)
json
{
"id": "chatcmpl-fe575c37-5004-4926-ae5e-bfbc31f356ca",
"created": 1751494808,
"model": "claude-sonnet-4-20250514",
"object": "chat.completion.chunk",
"system_fingerprint": null,
"choices": [
{
"finish_reason": null,
"index": 0,
"delta": {
"provider_specific_fields": null,
"content": "Hello",
"role": "assistant",
"function_call": null,
"tool_calls": null,
"audio": null
},
"logprobs": null
}
],
"provider_specific_fields": null,
"stream_options": null,
"citations": null
}
Logging Observability (Docs)
LiteLLM exposes pre defined callbacks to send data to Lunary, MLflow, Langfuse, DynamoDB, s3 Buckets, Helicone, Promptlayer, Traceloop, Athina, Slack
```python from litellm import completion
set env variables for logging tools (when using MLflow, no API key set up is required)
os.environ["LUNARYPUBLICKEY"] = "your-lunary-public-key" os.environ["HELICONEAPIKEY"] = "your-helicone-auth-key" os.environ["LANGFUSEPUBLICKEY"] = "" os.environ["LANGFUSESECRETKEY"] = "" os.environ["ATHINAAPIKEY"] = "your-athina-api-key"
os.environ["OPENAIAPIKEY"] = "your-openai-key"
set callbacks
litellm.success_callback = ["lunary", "mlflow", "langfuse", "athina", "helicone"] # log input/output to lunary, langfuse, supabase, athina, helicone etc
openai call
response = completion(model="openai/gpt-4o", messages=[{"role": "user", "content": "Hi - i'm openai"}]) ```
LiteLLM Proxy Server (LLM Gateway) - (Docs)
Track spend + Load Balance across multiple projects
The proxy provides:
Proxy Endpoints - Swagger Docs
Quick Start Proxy - CLI
shell
pip install 'litellm[proxy]'
Step 1: Start litellm proxy
```shell $ litellm --model huggingface/bigcode/starcoder
INFO: Proxy running on http://0.0.0.0:4000
```
Step 2: Make ChatCompletions Request to Proxy
```python import openai # openai v1.0.0+ client = openai.OpenAI(apikey="anything",baseurl="http://0.0.0.0:4000") # set proxy to base_url
request sent to model set on litellm proxy, litellm --model
response = client.chat.completions.create(model="gpt-3.5-turbo", messages = [ { "role": "user", "content": "this is a test request, write a short poem" } ])
print(response) ```
Proxy Key Management (Docs)
Connect the proxy with a Postgres DB to create proxy keys
```bash
Get the code
git clone https://github.com/BerriAI/litellm
Go to folder
cd litellm
Add the master key - you can change this after setup
echo 'LITELLMMASTERKEY="sk-1234"' > .env
Add the litellm salt key - you cannot change this after adding a model
It is used to encrypt / decrypt your LLM API Key credentials
We recommend - https://1password.com/password-generator/
password generator to get a random hash for litellm salt key
echo 'LITELLMSALTKEY="sk-1234"' >> .env
source .env
Start
docker-compose up ```
UI on /ui on your proxy server
Set budgets and rate limits across multiple projects
POST /key/generate
Request
shell
curl 'http://0.0.0.0:4000/key/generate' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data-raw '{"models": ["gpt-3.5-turbo", "gpt-4", "claude-2"], "duration": "20m","metadata": {"user": "ishaan@berri.ai", "team": "core-infra"}}'
Expected Response
shell
{
"key": "sk-kdEXbIqZRwEeEiHwdg7sFA", # Bearer token
"expires": "2023-11-19T01:38:25.838000+00:00" # datetime object
}
Supported Providers (Docs)
| Provider | Completion | Streaming | Async Completion | Async Streaming | Async Embedding | Async Image Generation | |-------------------------------------------------------------------------------------|---------------------------------------------------------|---------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|-------------------------------------------------------------------------------|-------------------------------------------------------------------------| | openai | | | | | | | | Meta - Llama API | | | | | | | | azure | | | | | | | | AI/ML API | | | | | | | | aws - sagemaker | | | | | | | | aws - bedrock | | | | | | | | google - vertex_ai | | | | | | | | google - palm | | | | | | | | google AI Studio - gemini | | | | | | | | mistral ai api | | | | | | | | cloudflare AI Workers | | | | | | | | cohere | | | | | | | | anthropic | | | | | | | | empower | | | | | | huggingface | | | | | | | | replicate | | | | | | | | together_ai | | | | | | | | openrouter | | | | | | | | ai21 | | | | | | | | baseten | | | | | | | | vllm | | | | | | | | nlp_cloud | | | | | | | | aleph alpha | | | | | | | | petals | | | | | | | | ollama | | | | | | | | deepinfra | | | | | | | | perplexity-ai | | | | | | | | Groq AI | | | | | | | | Deepseek | | | | | | | | anyscale | | | | | | | | IBM - watsonx.ai | | | | | | | | voyage ai | | | | | | | | xinference [Xorbits Inference] | | | | | | | | FriendliAI | | | | | | | | Galadriel | | | | | | | | Novita AI | | | | | | | | Featherless AI | | | | | | | | Nebius AI Studio | | | | | | |
Contributing
Interested in contributing? Contributions to LiteLLM Python SDK, Proxy Server, and LLM integrations are both accepted and highly encouraged!
Quick start: git clone make install-dev make format make lint make test-unit
See our comprehensive Contributing Guide (CONTRIBUTING.md) for detailed instructions.
Enterprise
For companies that need better security, user management and professional support
This covers: - Features under the LiteLLM Commercial License: - Feature Prioritization - Custom Integrations - Professional Support - Dedicated discord + slack - Custom SLAs - Secure access with Single Sign-On
Contributing
We welcome contributions to LiteLLM! Whether you're fixing bugs, adding features, or improving documentation, we appreciate your help.
Quick Start for Contributors
bash
git clone https://github.com/BerriAI/litellm.git
cd litellm
make install-dev # Install development dependencies
make format # Format your code
make lint # Run all linting checks
make test-unit # Run unit tests
For detailed contributing guidelines, see CONTRIBUTING.md.
Code Quality / Linting
LiteLLM follows the Google Python Style Guide.
Our automated checks include: - Black for code formatting - Ruff for linting and code quality - MyPy for type checking - Circular import detection - Import safety checks
Run all checks locally:
bash
make lint # Run all linting (matches CI)
make format-check # Check formatting only
All these checks must pass before your PR can be merged.
Support / talk with founders
- Schedule Demo
- Community Discord
- Community Slack
- Our numbers +1 (770) 8783-106 / +1 (412) 618-6238
- Our emails ishaan@berri.ai / krrish@berri.ai
Why did we build this
- Need for simplicity: Our code started to get extremely complicated managing & translating calls between Azure, OpenAI and Cohere.
Contributors
Run in Developer mode
Services
- Setup .env file in root
- Run dependant services
docker-compose up db prometheus
Backend
- (In root) create virtual environment
python -m venv .venv - Activate virtual environment
source .venv/bin/activate - Install dependencies
pip install -e ".[all]" - Start proxy backend
uvicorn litellm.proxy.proxy_server:app --host localhost --port 4000 --reload
Frontend
- Navigate to
ui/litellm-dashboard - Install dependencies
npm install - Run
npm run devto start the dashboard
Owner
- Name: John Balis
- Login: balisujohn
- Kind: user
- Website: https://balisujohn.github.io/
- Twitter: johnubalis
- Repositories: 8
- Profile: https://github.com/balisujohn
Pursuing a Doctorate of Computer Sciences at UW Madison. Interested in reinforcement learning. My focus is primarily sim2real RL for robotics.
GitHub Events
Total
- Delete event: 2
- Push event: 3
- Pull request event: 1
- Create event: 4
Last Year
- Delete event: 2
- Push event: 3
- Pull request event: 1
- Create event: 4
Committers
Last synced: 12 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| John U. Balis | p****s@g****m | 3 |
Issues and Pull Requests
Last synced: 12 months ago
Dependencies
- actions/checkout v3 composite
- ./.github/actions/helm-oci-chart-releaser * composite
- actions/checkout v4 composite
- actions/github-script v6 composite
- christian-draeger/increment-semantic-version 1.1.0 composite
- docker/build-push-action v5 composite
- docker/build-push-action 4976231911ebf5f32aad765192d35f942aa48cb8 composite
- docker/build-push-action f2a1d5e99d037542a71f64918e516c093c6f3fc4 composite
- docker/login-action 65b78e6e13532edd9afa3aa52ac7964289d1a9c1 composite
- docker/login-action v3 composite
- docker/metadata-action 9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 composite
- docker/setup-buildx-action v3 composite
- docker/setup-buildx-action edfb0fe6204400c56fbfd3feba3fe9ad1adfa345 composite
- docker/setup-qemu-action e0e4588fad221d38ee467c0bffd91115366dc0c5 composite
- docker/setup-qemu-action v3 composite
- ./.github/actions/helm-oci-chart-releaser * composite
- WyriHaximus/github-action-get-previous-tag v1.3.0 composite
- actions/checkout v4 composite
- christian-draeger/increment-semantic-version 1.1.0 composite
- docker/login-action 65b78e6e13532edd9afa3aa52ac7964289d1a9c1 composite
- actions/checkout v2 composite
- azure/setup-helm v1 composite
- actions-ecosystem/action-add-labels v1 composite
- actions/cache v3 composite
- actions/checkout v4 composite
- actions/setup-python v5 composite
- actions/upload-artifact v4 composite
- snok/install-poetry v1 composite
- BerriAI/locust-github-action master composite
- actions/checkout v1 composite
- actions/setup-python v2 composite
- xresloader/upload-to-github-release v1 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- peter-evans/create-pull-request v5 composite
- postgres 14 docker
- actions/checkout v2 composite
- actions/setup-python v2 composite
- actions/checkout v3 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- actions/stale v8 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- snok/install-poetry v1 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- snok/install-poetry v1 composite
- $LITELLM_BUILD_IMAGE latest build
- $LITELLM_RUNTIME_IMAGE latest build
- ollama/ollama latest build
- ghcr.io/berriai/litellm main-stable
- postgres 16
- prom/prometheus latest
- python 3.14.0a3-slim build
- node 20.18.1-alpine3.20 build
- 1308 dependencies
- @docusaurus/module-type-aliases 3.8.1 development
- dotenv ^16.4.5 development
- @docusaurus/core 3.8.1
- @docusaurus/plugin-google-gtag 3.8.1
- @docusaurus/plugin-ideal-image 3.8.1
- @docusaurus/preset-classic 3.8.1
- @inkeep/cxkit-docusaurus ^0.5.89
- @mdx-js/react ^3.0.0
- clsx ^1.2.1
- prism-react-renderer ^1.3.5
- react ^18.0.0 || ^19.0.0
- react-dom ^18.0.0 || ^19.0.0
- sharp ^0.32.6
- uuid ^9.0.1
- @cloudflare/workers-types ^4.20240208.0 development
- wrangler ^3.32.0 development
- hono ^4.1.4
- openai ^4.29.2
- @esbuild/aix-ppc64 0.19.12 development
- @esbuild/android-arm 0.19.12 development
- @esbuild/android-arm64 0.19.12 development
- @esbuild/android-x64 0.19.12 development
- @esbuild/darwin-arm64 0.19.12 development
- @esbuild/darwin-x64 0.19.12 development
- @esbuild/freebsd-arm64 0.19.12 development
- @esbuild/freebsd-x64 0.19.12 development
- @esbuild/linux-arm 0.19.12 development
- @esbuild/linux-arm64 0.19.12 development
- @esbuild/linux-ia32 0.19.12 development
- @esbuild/linux-loong64 0.19.12 development
- @esbuild/linux-mips64el 0.19.12 development
- @esbuild/linux-ppc64 0.19.12 development
- @esbuild/linux-riscv64 0.19.12 development
- @esbuild/linux-s390x 0.19.12 development
- @esbuild/linux-x64 0.19.12 development
- @esbuild/netbsd-x64 0.19.12 development
- @esbuild/openbsd-x64 0.19.12 development
- @esbuild/sunos-x64 0.19.12 development
- @esbuild/win32-arm64 0.19.12 development
- @esbuild/win32-ia32 0.19.12 development
- @esbuild/win32-x64 0.19.12 development
- @types/node 20.11.30 development
- esbuild 0.19.12 development
- fsevents 2.3.3 development
- get-tsconfig 4.7.3 development
- resolve-pkg-maps 1.0.0 development
- tsx 4.7.1 development
- undici-types 5.26.5 development
- @hono/node-server 1.10.1
- hono 4.6.5
- @types/node ^20.11.17 development
- tsx ^4.7.1 development
- @hono/node-server ^1.10.1
- hono ^4.6.5
- @types/prop-types 15.7.12 development
- @types/react 18.2.73 development
- @types/react-copy-to-clipboard 5.0.7 development
- csstype 3.1.3 development
- @prisma/debug 5.17.0
- @prisma/engines 5.17.0
- @prisma/engines-version 5.17.0-31.393aa359c9ad4a4bb28630fb5613f9c281cde053
- @prisma/fetch-engine 5.17.0
- @prisma/get-platform 5.17.0
- @types/prismjs 1.26.5
- clsx 2.1.1
- copy-to-clipboard 3.3.3
- js-tokens 4.0.0
- loose-envify 1.4.0
- object-assign 4.1.1
- prism-react-renderer 2.4.1
- prisma 5.17.0
- prop-types 15.8.1
- react 18.2.0
- react-copy-to-clipboard 5.1.0
- react-is 16.13.1
- toggle-selection 1.0.6
- @types/react-copy-to-clipboard ^5.0.7 development
- prism-react-renderer ^2.4.1
- prisma ^5.17.0
- react-copy-to-clipboard ^5.1.0
- @playwright/test 1.47.2 development
- @types/node 22.5.5 development
- fsevents 2.3.2 development
- playwright 1.47.2 development
- playwright-core 1.47.2 development
- undici-types 6.19.8 development
- @playwright/test ^1.47.2 development
- @types/node ^22.5.5 development
- 472 dependencies
- @testing-library/jest-dom ^6.0.0 development
- @testing-library/react ^14.0.0 development
- @types/jest ^29.5.0 development
- @types/react ^18.2.0 development
- @types/react-dom ^18.2.0 development
- identity-obj-proxy ^3.0.0 development
- jest ^29.5.0 development
- jest-environment-jsdom ^29.5.0 development
- ts-jest ^29.1.0 development
- typescript ^5.0.0 development
- @ant-design/icons ^5.0.0
- antd ^5.12.5
- react ^18.2.0
- react-dom ^18.2.0
- anthropic *
- cohere *
- fastapi-sso ==0.16.0
- google-cloud-aiplatform ==1.43.0
- importlib_metadata *
- mcp ==1.10.1
- openai ==1.81.0
- orjson ==3.10.12
- pydantic ==2.10.2
- python-dotenv *
- redis ==5.2.1
- redisvl ==0.4.1
- semantic_router ==0.1.10
- tiktoken *
- uvloop ==0.21.0
- litellm ==1.61.15
- ddtrace ==2.19.0
- langfuse *
- litellm ==1.67.4.dev1
- prisma *
- prometheus_client *
- python >=3.8.1,<4.0, !=3.9.7
- 191 dependencies
- black ^23.12.0 develop
- flake8 ^6.1.0 develop
- langfuse ^2.45.0 develop
- mypy ^1.0 develop
- opentelemetry-api 1.25.0 develop
- opentelemetry-exporter-otlp 1.25.0 develop
- opentelemetry-sdk 1.25.0 develop
- pytest ^7.4.3 develop
- pytest-asyncio ^0.21.1 develop
- pytest-mock ^3.12.0 develop
- requests-mock ^1.12.1 develop
- responses ^0.25.7 develop
- respx ^0.22.0 develop
- ruff ^0.1.0 develop
- types-PyYAML * develop
- types-redis * develop
- types-requests * develop
- types-setuptools * develop
- azure-identity ^1.15.0 proxy-dev
- hypercorn ^0.15.0 proxy-dev
- opentelemetry-api 1.25.0 proxy-dev
- opentelemetry-exporter-otlp 1.25.0 proxy-dev
- opentelemetry-sdk 1.25.0 proxy-dev
- prisma 0.11.0 proxy-dev
- prometheus-client 0.20.0 proxy-dev
- PyJWT ^2.8.0
- aiohttp >=3.10
- apscheduler ^3.10.4
- azure-identity ^1.15.0
- azure-keyvault-secrets ^4.8.0
- azure-storage-blob ^12.25.1
- backoff *
- boto3 1.34.34
- click *
- cryptography ^43.0.1
- diskcache ^5.6.1
- fastapi ^0.115.5
- fastapi-sso ^0.16.0
- google-cloud-kms ^2.21.3
- gunicorn ^23.0.0
- httpx >=0.23.0
- importlib-metadata >=6.8.0
- jinja2 ^3.1.2
- jsonschema ^4.22.0
- litellm-enterprise 0.1.16
- litellm-proxy-extras 0.2.12
- mcp 1.10.0
- numpydoc *
- openai >=1.68.2
- orjson ^3.9.7
- polars ^1.31.0
- prisma 0.11.0
- pydantic ^2.5.0
- pynacl ^1.5.0
- python >=3.8.1,<4.0, !=3.9.7
- python-dotenv >=0.2.0
- python-multipart ^0.0.18
- pyyaml ^6.0.1
- redisvl ^0.4.1
- resend ^0.8.0
- rich 13.7.1
- rq *
- semantic-router *
- tiktoken >=0.7.0
- tokenizers *
- uvicorn ^0.29.0
- uvloop ^0.21.0
- websockets ^13.1.0
- Pillow ==11.0.0
- aioboto3 ==12.3.0
- aiohttp ==3.10.11
- anthropic ==0.54.0
- anyio ==4.8.0
- apscheduler ==3.10.4
- async_generator ==1.10.0
- azure-ai-contentsafety ==1.0.0
- azure-identity ==1.16.1
- azure-keyvault ==4.2.0
- azure-storage-file-datalake ==12.20.0
- backoff ==2.2.1
- boto3 ==1.34.34
- click ==8.1.7
- cryptography ==43.0.1
- ddtrace ==2.19.0
- detect-secrets ==1.5.0
- fastapi ==0.115.5
- fastapi-sso ==0.16.0
- google-cloud-aiplatform ==1.47.0
- google-genai ==1.22.0
- google-generativeai ==0.5.0
- gunicorn ==23.0.0
- httpx ==0.28.1
- importlib-metadata ==6.8.0
- jinja2 ==3.1.6
- jsonschema ==4.22.0
- langfuse ==2.59.7
- litellm-enterprise ==0.1.16
- litellm-proxy-extras ==0.2.12
- mangum ==0.17.0
- mcp ==1.10.1
- openai ==1.81.0
- opentelemetry-api ==1.25.0
- opentelemetry-exporter-otlp ==1.25.0
- opentelemetry-sdk ==1.25.0
- orjson ==3.10.12
- polars ==1.31.0
- prisma ==0.11.0
- prometheus_client ==0.20.0
- pydantic ==2.10.2
- pyjwt ==2.9.0
- pynacl ==1.5.0
- python-dotenv ==1.0.1
- python-multipart ==0.0.18
- pyyaml ==6.0.2
- redis ==5.2.1
- rich ==13.7.1
- sentry_sdk ==2.21.0
- tenacity ==8.2.3
- tiktoken ==0.8.0
- tokenizers ==0.20.2
- tzdata ==2025.1
- uvicorn ==0.29.0
- uvloop ==0.21.0
- websockets ==13.1.0
- rspec >= 0
- ruby-openai >= 0
- base64 0.2.0
- bundler 2.6.5
- diff-lcs 1.6.0
- event_stream_parser 1.0.0
- faraday 2.8.1
- faraday-multipart 1.1.0
- faraday-net_http 3.0.2
- multipart-post 2.4.1
- rspec 3.13.0
- rspec-core 3.13.3
- rspec-expectations 3.13.3
- rspec-mocks 3.13.2
- rspec-support 3.13.2
- ruby-openai 7.4.0
- ruby2_keywords 0.0.5