# Aider chat conversation:
USER: what does `python -m pytest -vv --junitxml=test-results/junit.xml` do?
ASSISTANT: This command runs the pytest testing tool for Python in a specific way. Here's a breakdown of what each part does:
- `python -m pytest`: This runs pytest as a module using the Python interpreter. Pytest is a testing framework that allows you to easily create small, simple tests, as well as complex, functional testing for applications and libraries.
- `-vv`: This is an option for pytest that increases verbosity. Pytest without any `-v` is silent except for failures. One `-v` makes it print the test function names, and `-vv` also prints the individual test cases within those functions.
- `--junitxml=test-results/junit.xml`: This is an option for pytest that tells it to generate a test report in the form of an XML file in the JUnit format. This is useful for integrating the test results into tools that understand JUnit test reports, like many continuous integration servers. The `test-results/junit.xml` part specifies the location and name of the report file to generate.
So, in summary, this command runs all the pytest tests in the current directory and its subdirectories, prints detailed output about what tests are being run and their results, and generates a JUnit-format XML report of the test results.
USER: `.circleci/config.yml`
ASSISTANT: I'm sorry, but your request is not clear. Could you please provide more details about what you want to do with the `.circleci/config.yml` file? Are there any specific changes you want to make or any issues you're facing with it?
USER: how do i modify the pytest to only run test_logging.py
ASSISTANT: To modify the pytest command to only run `test_logging.py`, you need to specify the file name in the command. Here is how you can do it:
```yaml
.circleci/config.yml
<<<<<<< HEAD
- run:
name: Run tests
command: |
python -m pytest -vv --junitxml=test-results/junit.xml
no_output_timeout: 30m
=======
- run:
name: Run tests
command: |
python -m pytest -vv test_logging.py --junitxml=test-results/junit.xml
no_output_timeout: 30m
>>>>>>> updated
```
This change will make pytest only run the tests in the `test_logging.py` file. If `test_logging.py` is not in the root directory, you should provide the relative path to it from the root directory. For example, if it's in a `tests` directory, you would use `tests/test_logging.py`.
|
||
|---|---|---|
| .circleci | ||
| .github | ||
| cookbook | ||
| dist | ||
| docs/my-website | ||
| litellm | ||
| proxy-server@f99c49e224 | ||
| .all-contributorsrc | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| LICENSE | ||
| model_prices_and_context_window.json | ||
| poetry.lock | ||
| pyproject.toml | ||
| README.md | ||
🚅 LiteLLM
Call all LLM APIs using the OpenAI format [Anthropic, Huggingface, Cohere, TogetherAI, Azure, OpenAI, etc.]
Bug Report
·
Feature Request
| Docs | 100+ Supported Models | Demo Video |
LiteLLM manages
- Translating inputs to the provider's completion and embedding endpoints
- Guarantees consistent output, text responses will always be available at
['choices'][0]['message']['content'] - Exception mapping - common exceptions across providers are mapped to the OpenAI exception types
05/10/2023: LiteLLM is adopting Semantic Versioning for all commits. Learn more
Usage
pip install litellm
from litellm import completion
import os
## set ENV variables
os.environ["OPENAI_API_KEY"] = "your-openai-key"
os.environ["COHERE_API_KEY"] = "your-cohere-key"
messages = [{ "content": "Hello, how are you?","role": "user"}]
# openai call
response = completion(model="gpt-3.5-turbo", messages=messages)
# cohere call
response = completion(model="command-nightly", messages=messages)
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 OpenAI, Azure, Anthropic, Huggingface models
response = completion(model="gpt-3.5-turbo", messages=messages, stream=True)
for chunk in response:
print(chunk['choices'][0]['delta'])
# claude 2
result = completion('claude-2', messages, stream=True)
for chunk in result:
print(chunk['choices'][0]['delta'])
Caching (Docs)
LiteLLM supports caching completion() and embedding() calls for all LLMs. Hosted Cache LiteLLM API
import litellm
from litellm.caching import Cache
import os
litellm.cache = Cache()
os.environ['OPENAI_API_KEY'] = ""
# add to cache
response1 = litellm.completion(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "why is LiteLLM amazing?"}],
caching=True
)
# returns cached response
response2 = litellm.completion(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "why is LiteLLM amazing?"}],
caching=True
)
print(f"response1: {response1}")
print(f"response2: {response2}")
OpenAI Proxy Server (Docs)
Spin up a local server to translate openai api calls to any non-openai model (e.g. Huggingface, TogetherAI, Ollama, etc.)
This works for async + streaming as well.
litellm --model <model_name>
Running your model locally or on a custom endpoint ? Set the --api-base parameter see how
Supported Provider (Docs)
| Provider | Completion | Streaming | Async Completion | Async Streaming |
|---|---|---|---|---|
| openai | ✅ | ✅ | ✅ | ✅ |
| cohere | ✅ | ✅ | ✅ | ✅ |
| anthropic | ✅ | ✅ | ✅ | ✅ |
| replicate | ✅ | ✅ | ✅ | ✅ |
| huggingface | ✅ | ✅ | ✅ | ✅ |
| together_ai | ✅ | ✅ | ✅ | ✅ |
| openrouter | ✅ | ✅ | ✅ | ✅ |
| vertex_ai | ✅ | ✅ | ✅ | ✅ |
| palm | ✅ | ✅ | ✅ | ✅ |
| ai21 | ✅ | ✅ | ✅ | ✅ |
| baseten | ✅ | ✅ | ✅ | ✅ |
| azure | ✅ | ✅ | ✅ | ✅ |
| sagemaker | ✅ | ✅ | ✅ | ✅ |
| bedrock | ✅ | ✅ | ✅ | ✅ |
| vllm | ✅ | ✅ | ✅ | ✅ |
| nlp_cloud | ✅ | ✅ | ✅ | ✅ |
| aleph alpha | ✅ | ✅ | ✅ | ✅ |
| petals | ✅ | ✅ | ✅ | ✅ |
| ollama | ✅ | ✅ | ✅ | ✅ |
| deepinfra | ✅ | ✅ | ✅ | ✅ |
Contributing
To contribute: Clone the repo locally -> Make a change -> Submit a PR with the change.
Here's how to modify the repo locally: Step 1: Clone the repo
git clone https://github.com/BerriAI/litellm.git
Step 2: Navigate into the project, and install dependencies:
cd litellm
poetry install
Step 3: Test your change:
cd litellm/tests # pwd: Documents/litellm/litellm/tests
pytest .
Step 4: Submit a PR with your changes! 🚀
- push your fork to your GitHub repo
- submit a PR from there
Learn more on how to make a PR
Support / talk with founders
- Schedule Demo 👋
- Community Discord 💭
- 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, Cohere