pass in api key via params

This commit is contained in:
Krrish Dholakia 2023-08-02 15:15:33 -07:00
parent acb6781317
commit 548fcfdff9
9 changed files with 46 additions and 67 deletions

View file

@ -63,7 +63,7 @@ def completion(
temperature=1, top_p=1, n=1, stream=False, stop=None, max_tokens=float('inf'), temperature=1, top_p=1, n=1, stream=False, stop=None, max_tokens=float('inf'),
presence_penalty=0, frequency_penalty=0, logit_bias={}, user="", presence_penalty=0, frequency_penalty=0, logit_bias={}, user="",
# Optional liteLLM function params # Optional liteLLM function params
*, force_timeout=60, azure=False, logger_fn=None, verbose=False *, api_key=None, force_timeout=60, azure=False, logger_fn=None, verbose=False
): ):
try: try:
# check if user passed in any of the OpenAI optional params # check if user passed in any of the OpenAI optional params
@ -77,7 +77,7 @@ def completion(
openai.api_type = "azure" openai.api_type = "azure"
openai.api_base = os.environ.get("AZURE_API_BASE") openai.api_base = os.environ.get("AZURE_API_BASE")
openai.api_version = os.environ.get("AZURE_API_VERSION") openai.api_version = os.environ.get("AZURE_API_VERSION")
openai.api_key = os.environ.get("AZURE_API_KEY") openai.api_key = api_key if api_key is not None else os.environ.get("AZURE_API_KEY")
## LOGGING ## LOGGING
logging(model=model, input=messages, azure=azure, logger_fn=logger_fn) logging(model=model, input=messages, azure=azure, logger_fn=logger_fn)
## COMPLETION CALL ## COMPLETION CALL
@ -90,10 +90,9 @@ def completion(
openai.api_type = "openai" openai.api_type = "openai"
openai.api_base = "https://api.openai.com/v1" openai.api_base = "https://api.openai.com/v1"
openai.api_version = None openai.api_version = None
openai.api_key = os.environ.get("OPENAI_API_KEY") openai.api_key = api_key if api_key is not None else os.environ.get("OPENAI_API_KEY")
## LOGGING ## LOGGING
logging(model=model, input=messages, azure=azure, logger_fn=logger_fn) logging(model=model, input=messages, azure=azure, logger_fn=logger_fn)
## COMPLETION CALL ## COMPLETION CALL
response = openai.ChatCompletion.create( response = openai.ChatCompletion.create(
model=model, model=model,
@ -104,7 +103,7 @@ def completion(
openai.api_type = "openai" openai.api_type = "openai"
openai.api_base = "https://api.openai.com/v1" openai.api_base = "https://api.openai.com/v1"
openai.api_version = None openai.api_version = None
openai.api_key = os.environ.get("OPENAI_API_KEY") openai.api_key = api_key if api_key is not None else os.environ.get("OPENAI_API_KEY")
prompt = " ".join([message["content"] for message in messages]) prompt = " ".join([message["content"] for message in messages])
## LOGGING ## LOGGING
logging(model=model, input=prompt, azure=azure, logger_fn=logger_fn) logging(model=model, input=prompt, azure=azure, logger_fn=logger_fn)
@ -119,6 +118,8 @@ def completion(
if not os.environ.get("REPLICATE_API_TOKEN") and os.environ.get("REPLICATE_API_KEY"): if not os.environ.get("REPLICATE_API_TOKEN") and os.environ.get("REPLICATE_API_KEY"):
replicate_api_token = os.environ.get("REPLICATE_API_KEY") replicate_api_token = os.environ.get("REPLICATE_API_KEY")
os.environ["REPLICATE_API_TOKEN"] = replicate_api_token os.environ["REPLICATE_API_TOKEN"] = replicate_api_token
elif api_key:
os.environ["REPLICATE_API_TOKEN"] = api_key
prompt = " ".join([message["content"] for message in messages]) prompt = " ".join([message["content"] for message in messages])
input = {"prompt": prompt} input = {"prompt": prompt}
if max_tokens != float('inf'): if max_tokens != float('inf'):
@ -148,6 +149,8 @@ def completion(
response = new_response response = new_response
elif model in litellm.anthropic_models: elif model in litellm.anthropic_models:
#anthropic defaults to os.environ.get("ANTHROPIC_API_KEY") #anthropic defaults to os.environ.get("ANTHROPIC_API_KEY")
if api_key:
os.environ["ANTHROPIC_API_KEY"] = api_key
prompt = f"{HUMAN_PROMPT}" prompt = f"{HUMAN_PROMPT}"
for message in messages: for message in messages:
if "role" in message: if "role" in message:
@ -187,7 +190,7 @@ def completion(
print_verbose(f"new response: {new_response}") print_verbose(f"new response: {new_response}")
response = new_response response = new_response
elif model in litellm.cohere_models: elif model in litellm.cohere_models:
cohere_key = os.environ.get("COHERE_API_KEY") cohere_key = api_key if api_key is not None else os.environ.get("COHERE_API_KEY")
co = cohere.Client(cohere_key) co = cohere.Client(cohere_key)
prompt = " ".join([message["content"] for message in messages]) prompt = " ".join([message["content"] for message in messages])
## LOGGING ## LOGGING
@ -210,32 +213,6 @@ def completion(
], ],
} }
response = new_response response = new_response
elif model in litellm.open_ai_chat_completion_models:
openai.api_type = "openai"
openai.api_base = "https://api.openai.com/v1"
openai.api_version = None
openai.api_key = os.environ.get("OPENAI_API_KEY")
## LOGGING
logging(model=model, input=messages, azure=azure, logger_fn=logger_fn)
## COMPLETION CALL
response = openai.ChatCompletion.create(
model=model,
messages = messages
)
elif model in litellm.open_ai_text_completion_models:
openai.api_type = "openai"
openai.api_base = "https://api.openai.com/v1"
openai.api_version = None
openai.api_key = os.environ.get("OPENAI_API_KEY")
prompt = " ".join([message["content"] for message in messages])
## LOGGING
logging(model=model, input=prompt, azure=azure, logger_fn=logger_fn)
## COMPLETION CALL
response = openai.Completion.create(
model=model,
prompt = prompt
)
else: else:
logging(model=model, input=messages, azure=azure, logger_fn=logger_fn) logging(model=model, input=messages, azure=azure, logger_fn=logger_fn)
args = locals() args = locals()

Binary file not shown.

BIN
dist/litellm-0.1.218.tar.gz vendored Normal file

Binary file not shown.

View file

@ -1,6 +1,6 @@
Metadata-Version: 2.1 Metadata-Version: 2.1
Name: litellm Name: litellm
Version: 0.1.217 Version: 0.1.218
Summary: Library to easily interface with LLM API providers Summary: Library to easily interface with LLM API providers
Author: BerriAI Author: BerriAI
License-File: LICENSE License-File: LICENSE

View file

@ -63,7 +63,7 @@ def completion(
temperature=1, top_p=1, n=1, stream=False, stop=None, max_tokens=float('inf'), temperature=1, top_p=1, n=1, stream=False, stop=None, max_tokens=float('inf'),
presence_penalty=0, frequency_penalty=0, logit_bias={}, user="", presence_penalty=0, frequency_penalty=0, logit_bias={}, user="",
# Optional liteLLM function params # Optional liteLLM function params
*, force_timeout=60, azure=False, logger_fn=None, verbose=False *, api_key=None, force_timeout=60, azure=False, logger_fn=None, verbose=False
): ):
try: try:
# check if user passed in any of the OpenAI optional params # check if user passed in any of the OpenAI optional params
@ -77,7 +77,7 @@ def completion(
openai.api_type = "azure" openai.api_type = "azure"
openai.api_base = os.environ.get("AZURE_API_BASE") openai.api_base = os.environ.get("AZURE_API_BASE")
openai.api_version = os.environ.get("AZURE_API_VERSION") openai.api_version = os.environ.get("AZURE_API_VERSION")
openai.api_key = os.environ.get("AZURE_API_KEY") openai.api_key = api_key if api_key is not None else os.environ.get("AZURE_API_KEY")
## LOGGING ## LOGGING
logging(model=model, input=messages, azure=azure, logger_fn=logger_fn) logging(model=model, input=messages, azure=azure, logger_fn=logger_fn)
## COMPLETION CALL ## COMPLETION CALL
@ -90,10 +90,9 @@ def completion(
openai.api_type = "openai" openai.api_type = "openai"
openai.api_base = "https://api.openai.com/v1" openai.api_base = "https://api.openai.com/v1"
openai.api_version = None openai.api_version = None
openai.api_key = os.environ.get("OPENAI_API_KEY") openai.api_key = api_key if api_key is not None else os.environ.get("OPENAI_API_KEY")
## LOGGING ## LOGGING
logging(model=model, input=messages, azure=azure, logger_fn=logger_fn) logging(model=model, input=messages, azure=azure, logger_fn=logger_fn)
## COMPLETION CALL ## COMPLETION CALL
response = openai.ChatCompletion.create( response = openai.ChatCompletion.create(
model=model, model=model,
@ -104,7 +103,7 @@ def completion(
openai.api_type = "openai" openai.api_type = "openai"
openai.api_base = "https://api.openai.com/v1" openai.api_base = "https://api.openai.com/v1"
openai.api_version = None openai.api_version = None
openai.api_key = os.environ.get("OPENAI_API_KEY") openai.api_key = api_key if api_key is not None else os.environ.get("OPENAI_API_KEY")
prompt = " ".join([message["content"] for message in messages]) prompt = " ".join([message["content"] for message in messages])
## LOGGING ## LOGGING
logging(model=model, input=prompt, azure=azure, logger_fn=logger_fn) logging(model=model, input=prompt, azure=azure, logger_fn=logger_fn)
@ -119,6 +118,8 @@ def completion(
if not os.environ.get("REPLICATE_API_TOKEN") and os.environ.get("REPLICATE_API_KEY"): if not os.environ.get("REPLICATE_API_TOKEN") and os.environ.get("REPLICATE_API_KEY"):
replicate_api_token = os.environ.get("REPLICATE_API_KEY") replicate_api_token = os.environ.get("REPLICATE_API_KEY")
os.environ["REPLICATE_API_TOKEN"] = replicate_api_token os.environ["REPLICATE_API_TOKEN"] = replicate_api_token
elif api_key:
os.environ["REPLICATE_API_TOKEN"] = api_key
prompt = " ".join([message["content"] for message in messages]) prompt = " ".join([message["content"] for message in messages])
input = {"prompt": prompt} input = {"prompt": prompt}
if max_tokens != float('inf'): if max_tokens != float('inf'):
@ -148,6 +149,8 @@ def completion(
response = new_response response = new_response
elif model in litellm.anthropic_models: elif model in litellm.anthropic_models:
#anthropic defaults to os.environ.get("ANTHROPIC_API_KEY") #anthropic defaults to os.environ.get("ANTHROPIC_API_KEY")
if api_key:
os.environ["ANTHROPIC_API_KEY"] = api_key
prompt = f"{HUMAN_PROMPT}" prompt = f"{HUMAN_PROMPT}"
for message in messages: for message in messages:
if "role" in message: if "role" in message:
@ -187,7 +190,7 @@ def completion(
print_verbose(f"new response: {new_response}") print_verbose(f"new response: {new_response}")
response = new_response response = new_response
elif model in litellm.cohere_models: elif model in litellm.cohere_models:
cohere_key = os.environ.get("COHERE_API_KEY") cohere_key = api_key if api_key is not None else os.environ.get("COHERE_API_KEY")
co = cohere.Client(cohere_key) co = cohere.Client(cohere_key)
prompt = " ".join([message["content"] for message in messages]) prompt = " ".join([message["content"] for message in messages])
## LOGGING ## LOGGING
@ -210,32 +213,6 @@ def completion(
], ],
} }
response = new_response response = new_response
elif model in litellm.open_ai_chat_completion_models:
openai.api_type = "openai"
openai.api_base = "https://api.openai.com/v1"
openai.api_version = None
openai.api_key = os.environ.get("OPENAI_API_KEY")
## LOGGING
logging(model=model, input=messages, azure=azure, logger_fn=logger_fn)
## COMPLETION CALL
response = openai.ChatCompletion.create(
model=model,
messages = messages
)
elif model in litellm.open_ai_text_completion_models:
openai.api_type = "openai"
openai.api_base = "https://api.openai.com/v1"
openai.api_version = None
openai.api_key = os.environ.get("OPENAI_API_KEY")
prompt = " ".join([message["content"] for message in messages])
## LOGGING
logging(model=model, input=prompt, azure=azure, logger_fn=logger_fn)
## COMPLETION CALL
response = openai.Completion.create(
model=model,
prompt = prompt
)
else: else:
logging(model=model, input=messages, azure=azure, logger_fn=logger_fn) logging(model=model, input=messages, azure=azure, logger_fn=logger_fn)
args = locals() args = locals()

View file

@ -0,0 +1,25 @@
#### What this tests ####
# This tests the ability to set api key's via the params instead of as environment variables
import sys, os
import traceback
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 logger_fn(model_call_object: dict):
print(f"model call details: {model_call_object}")
user_message = "Hello, how are you?"
messages = [{ "content": user_message,"role": "user"}]
temp_key = os.environ.get("OPENAI_API_KEY")
os.environ["OPENAI_API_KEY"] = "bad-key"
# test on openai completion call
try:
response = completion(model="gpt-3.5-turbo", messages=messages, logger_fn=logger_fn, api_key=temp_key)
except:
print(f"error occurred: {traceback.format_exc()}")
pass

View file

@ -19,7 +19,7 @@ messages = [{ "content": user_message,"role": "user"}]
# test on openai completion call # test on openai completion call
try: try:
response = completion(model="gpt-3.5-turbo", messages=messages) response = completion(model="gpt-3.5-turbo", messages=messages, logger_fn=logger_fn)
score +=1 score +=1
except: except:
print(f"error occurred: {traceback.format_exc()}") print(f"error occurred: {traceback.format_exc()}")

View file

@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup( setup(
name='litellm', name='litellm',
version='0.1.217', version='0.1.218',
description='Library to easily interface with LLM API providers', description='Library to easily interface with LLM API providers',
author='BerriAI', author='BerriAI',
packages=[ packages=[