File size: 4,380 Bytes
395201c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#### What this tests ####
#    This tests chaos monkeys - if random parts of the system are broken / things aren't sent correctly - what happens.
#    Expect to add more edge cases to this over time.

import sys, os
import traceback
import pytest
sys.path.insert(
    0, os.path.abspath("../..")
)  # Adds the parent directory to the system path
import litellm
from litellm import embedding, completion
from litellm.utils import Message


# litellm.set_verbose = True
user_message = "Hello, how are you?"
messages = [{"content": user_message, "role": "user"}]
model_val = None

def test_completion_with_no_model():
    # test on empty
    with pytest.raises(ValueError):
        response = completion(messages=messages)


def test_completion_with_empty_model():
    # test on empty
    try:
        response = completion(model=model_val, messages=messages)
    except Exception as e:
        print(f"error occurred: {e}")
        pass

# def test_completion_catch_nlp_exception():
# TEMP commented out NLP cloud API is unstable
#     try: 
#         response = completion(model="dolphin", messages=messages, functions=[
#             {
#             "name": "get_current_weather",
#             "description": "Get the current weather in a given location",
#             "parameters": {
#                 "type": "object",
#                 "properties": {
#                 "location": {
#                     "type": "string",
#                     "description": "The city and state, e.g. San Francisco, CA"
#                 },
#                 "unit": {
#                     "type": "string",
#                     "enum": ["celsius", "fahrenheit"]
#                 }
#                 },
#                 "required": ["location"]
#             }
#             }
#         ])

#     except Exception as e: 
#         if "Function calling is not supported by nlp_cloud" in str(e): 
#             pass
#         else:
#             pytest.fail(f'An error occurred {e}')

# test_completion_catch_nlp_exception() 

def test_completion_invalid_param_cohere():
    try: 
        response = completion(model="command-nightly", messages=messages, top_p=1)
        print(f"response: {response}")
    except Exception as e: 
        if "Unsupported parameters passed: top_p" in str(e): 
            pass
        else: 
            pytest.fail(f'An error occurred {e}')

# test_completion_invalid_param_cohere()

def test_completion_function_call_cohere():
    try: 
        response = completion(model="command-nightly", messages=messages, functions=["TEST-FUNCTION"])
        pytest.fail(f'An error occurred {e}')
    except Exception as e: 
        print(e)
        pass
            

# test_completion_function_call_cohere()

def test_completion_function_call_openai(): 
    try: 
        messages = [{"role": "user", "content": "What is the weather like in Boston?"}]
        response = completion(model="gpt-3.5-turbo", messages=messages, functions=[
            {
            "name": "get_current_weather",
            "description": "Get the current weather in a given location",
            "parameters": {
                "type": "object",
                "properties": {
                "location": {
                    "type": "string",
                    "description": "The city and state, e.g. San Francisco, CA"
                },
                "unit": {
                    "type": "string",
                    "enum": ["celsius", "fahrenheit"]
                }
                },
                "required": ["location"]
            }
            }
        ])
        print(f"response: {response}")
    except: 
        pass

# test_completion_function_call_openai() 

def test_completion_with_no_provider():
    # test on empty
    try:
        model = "cerebras/btlm-3b-8k-base"
        response = completion(model=model, messages=messages)
    except Exception as e:
        print(f"error occurred: {e}")
        pass

# test_completion_with_no_provider()
# # bad key
# 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)
#     print(f"response: {response}")
# except:
#     print(f"error occurred: {traceback.format_exc()}")
#     pass
# os.environ["OPENAI_API_KEY"] = str(temp_key)  # this passes linting#5