mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-25 02:34:29 +00:00
203 lines
6.4 KiB
Python
203 lines
6.4 KiB
Python
import sys, os
|
|
import traceback
|
|
import pytest
|
|
from dotenv import load_dotenv
|
|
import openai
|
|
|
|
load_dotenv()
|
|
|
|
sys.path.insert(
|
|
0, os.path.abspath("../..")
|
|
) # Adds the parent directory to the system path
|
|
import litellm
|
|
from litellm import embedding, completion
|
|
|
|
litellm.set_verbose = False
|
|
|
|
def test_openai_embedding():
|
|
try:
|
|
litellm.set_verbose=True
|
|
response = embedding(
|
|
model="text-embedding-ada-002",
|
|
input=["good morning from litellm", "this is another item"],
|
|
metadata = {"anything": "good day"}
|
|
)
|
|
litellm_response = dict(response)
|
|
litellm_response_keys = set(litellm_response.keys())
|
|
litellm_response_keys.discard('_response_ms')
|
|
|
|
print(litellm_response_keys)
|
|
print("LiteLLM Response\n")
|
|
# print(litellm_response)
|
|
|
|
# same request with OpenAI 1.0+
|
|
import openai
|
|
client = openai.OpenAI(api_key=os.environ['OPENAI_API_KEY'])
|
|
response = client.embeddings.create(
|
|
model="text-embedding-ada-002", input=["good morning from litellm", "this is another item"]
|
|
)
|
|
|
|
response = dict(response)
|
|
openai_response_keys = set(response.keys())
|
|
print(openai_response_keys)
|
|
assert litellm_response_keys == openai_response_keys # ENSURE the Keys in litellm response is exactly what the openai package returns
|
|
assert len(litellm_response["data"]) == 2 # expect two embedding responses from litellm_response since input had two
|
|
print(openai_response_keys)
|
|
except Exception as e:
|
|
pytest.fail(f"Error occurred: {e}")
|
|
# test_openai_embedding()
|
|
|
|
def test_openai_azure_embedding_simple():
|
|
try:
|
|
response = embedding(
|
|
model="azure/azure-embedding-model",
|
|
input=["good morning from litellm"],
|
|
)
|
|
print(response)
|
|
response_keys = set(dict(response).keys())
|
|
response_keys.discard('_response_ms')
|
|
assert set(["usage", "model", "object", "data"]) == set(response_keys) #assert litellm response has expected keys from OpenAI embedding response
|
|
|
|
except Exception as e:
|
|
pytest.fail(f"Error occurred: {e}")
|
|
|
|
# test_openai_azure_embedding_simple()
|
|
|
|
|
|
def test_openai_azure_embedding_timeouts():
|
|
try:
|
|
response = embedding(
|
|
model="azure/azure-embedding-model",
|
|
input=["good morning from litellm"],
|
|
timeout=0.00001
|
|
)
|
|
print(response)
|
|
except openai.APITimeoutError:
|
|
print("Good job got timeout error!")
|
|
pass
|
|
except Exception as e:
|
|
pytest.fail(f"Expected timeout error, did not get the correct error. Instead got {e}")
|
|
|
|
# test_openai_azure_embedding_timeouts()
|
|
|
|
def test_openai_embedding_timeouts():
|
|
try:
|
|
response = embedding(
|
|
model="text-embedding-ada-002",
|
|
input=["good morning from litellm"],
|
|
timeout=0.00001
|
|
)
|
|
print(response)
|
|
except openai.APITimeoutError:
|
|
print("Good job got OpenAI timeout error!")
|
|
pass
|
|
except Exception as e:
|
|
pytest.fail(f"Expected timeout error, did not get the correct error. Instead got {e}")
|
|
# test_openai_embedding_timeouts()
|
|
|
|
def test_openai_azure_embedding():
|
|
try:
|
|
api_key = os.environ['AZURE_API_KEY']
|
|
api_base = os.environ['AZURE_API_BASE']
|
|
api_version = os.environ['AZURE_API_VERSION']
|
|
|
|
os.environ['AZURE_API_VERSION'] = ""
|
|
os.environ['AZURE_API_BASE'] = ""
|
|
os.environ['AZURE_API_KEY'] = ""
|
|
|
|
response = embedding(
|
|
model="azure/azure-embedding-model",
|
|
input=["good morning from litellm", "this is another item"],
|
|
api_key=api_key,
|
|
api_base=api_base,
|
|
api_version=api_version,
|
|
)
|
|
print(response)
|
|
|
|
|
|
os.environ['AZURE_API_VERSION'] = api_version
|
|
os.environ['AZURE_API_BASE'] = api_base
|
|
os.environ['AZURE_API_KEY'] = api_key
|
|
|
|
except Exception as e:
|
|
pytest.fail(f"Error occurred: {e}")
|
|
|
|
# test_openai_azure_embedding()
|
|
|
|
# test_openai_embedding()
|
|
|
|
def test_cohere_embedding():
|
|
try:
|
|
# litellm.set_verbose=True
|
|
response = embedding(
|
|
model="embed-english-v2.0", input=["good morning from litellm", "this is another item"]
|
|
)
|
|
print(f"response:", response)
|
|
except Exception as e:
|
|
pytest.fail(f"Error occurred: {e}")
|
|
|
|
# test_cohere_embedding()
|
|
|
|
def test_cohere_embedding3():
|
|
try:
|
|
litellm.set_verbose=True
|
|
response = embedding(
|
|
model="embed-english-v3.0",
|
|
input=["good morning from litellm", "this is another item"],
|
|
)
|
|
print(f"response:", response)
|
|
except Exception as e:
|
|
pytest.fail(f"Error occurred: {e}")
|
|
|
|
# test_cohere_embedding3()
|
|
|
|
def test_bedrock_embedding():
|
|
try:
|
|
response = embedding(
|
|
model="amazon.titan-embed-text-v1", input=["good morning from litellm, attempting to embed data",
|
|
"lets test a second string for good measure"]
|
|
)
|
|
print(f"response:", response)
|
|
except Exception as e:
|
|
pytest.fail(f"Error occurred: {e}")
|
|
# test_bedrock_embedding()
|
|
|
|
# comment out hf tests - since hf endpoints are unstable
|
|
def test_hf_embedding():
|
|
try:
|
|
# huggingface/microsoft/codebert-base
|
|
# huggingface/facebook/bart-large
|
|
response = embedding(
|
|
model="huggingface/sentence-transformers/all-MiniLM-L6-v2", input=["good morning from litellm", "this is another item"]
|
|
)
|
|
print(f"response:", response)
|
|
except Exception as e:
|
|
pytest.fail(f"Error occurred: {e}")
|
|
# test_hf_embedding()
|
|
|
|
# test async embeddings
|
|
def test_aembedding():
|
|
import asyncio
|
|
async def embedding_call():
|
|
try:
|
|
response = await litellm.aembedding(
|
|
model="text-embedding-ada-002",
|
|
input=["good morning from litellm", "this is another item"]
|
|
)
|
|
print(response)
|
|
except:
|
|
print(f"error occurred: {traceback.format_exc()}")
|
|
pass
|
|
asyncio.run(embedding_call())
|
|
|
|
# test_aembedding()
|
|
|
|
# def test_custom_openai_embedding():
|
|
# litellm.set_verbose=True
|
|
# response = embedding(
|
|
# model="openai/custom_embedding",
|
|
# input=["good morning from litellm"],
|
|
# api_base="http://0.0.0.0:8000/"
|
|
# )
|
|
# print(response)
|
|
# test_custom_openai_embedding()
|