forked from phoenix/litellm-mirror
(test) proxy - custom logger
This commit is contained in:
parent
88c1d6649f
commit
8c628b64e0
2 changed files with 68 additions and 0 deletions
|
@ -17,6 +17,8 @@ class MyCustomHandler(CustomLogger):
|
||||||
|
|
||||||
self.async_completion_kwargs_fail = None # type: ignore
|
self.async_completion_kwargs_fail = None # type: ignore
|
||||||
self.async_embedding_kwargs_fail = None # type: ignore
|
self.async_embedding_kwargs_fail = None # type: ignore
|
||||||
|
|
||||||
|
self.streaming_response_obj = None # type: ignore
|
||||||
blue_color_code = "\033[94m"
|
blue_color_code = "\033[94m"
|
||||||
reset_color_code = "\033[0m"
|
reset_color_code = "\033[0m"
|
||||||
print(f"{blue_color_code}Initialized LiteLLM custom logger")
|
print(f"{blue_color_code}Initialized LiteLLM custom logger")
|
||||||
|
@ -57,6 +59,10 @@ class MyCustomHandler(CustomLogger):
|
||||||
self.async_success_embedding = True
|
self.async_success_embedding = True
|
||||||
self.async_embedding_kwargs = kwargs
|
self.async_embedding_kwargs = kwargs
|
||||||
self.async_embedding_response = response_obj
|
self.async_embedding_response = response_obj
|
||||||
|
if kwargs.get("stream") == True:
|
||||||
|
self.streaming_response_obj = response_obj
|
||||||
|
|
||||||
|
|
||||||
self.async_completion_kwargs = kwargs
|
self.async_completion_kwargs = kwargs
|
||||||
|
|
||||||
model = kwargs.get("model", None)
|
model = kwargs.get("model", None)
|
||||||
|
|
|
@ -87,6 +87,68 @@ def test_chat_completion(client):
|
||||||
pytest.fail("LiteLLM Proxy test failed. Exception", e)
|
pytest.fail("LiteLLM Proxy test failed. Exception", e)
|
||||||
|
|
||||||
|
|
||||||
|
def test_chat_completion_stream(client):
|
||||||
|
try:
|
||||||
|
# Your test data
|
||||||
|
import json
|
||||||
|
print("initialized proxy")
|
||||||
|
# import the initialized custom logger
|
||||||
|
print(litellm.callbacks)
|
||||||
|
|
||||||
|
assert len(litellm.callbacks) == 1 # assert litellm is initialized with 1 callback
|
||||||
|
my_custom_logger = litellm.callbacks[0]
|
||||||
|
|
||||||
|
assert my_custom_logger.streaming_response_obj == None # no streaming response obj is set pre call
|
||||||
|
|
||||||
|
test_data = {
|
||||||
|
"model": "Azure OpenAI GPT-4 Canada",
|
||||||
|
"messages": [
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": "write 1 line poem about LiteLLM"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"max_tokens": 40,
|
||||||
|
"stream": True # streaming call
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
response = client.post("/chat/completions", json=test_data, headers=headers)
|
||||||
|
print("made request", response.status_code, response.text)
|
||||||
|
complete_response = ""
|
||||||
|
for line in response.iter_lines():
|
||||||
|
if line:
|
||||||
|
# Process the streaming data line here
|
||||||
|
print("\n\n Line", line)
|
||||||
|
print(line)
|
||||||
|
line = str(line)
|
||||||
|
|
||||||
|
json_data = line.replace('data: ', '')
|
||||||
|
|
||||||
|
# Parse the JSON string
|
||||||
|
data = json.loads(json_data)
|
||||||
|
|
||||||
|
print("\n\n decode_data", data)
|
||||||
|
|
||||||
|
# Access the content of choices[0]['message']['content']
|
||||||
|
content = data['choices'][0]['delta']['content'] or ""
|
||||||
|
|
||||||
|
# Process the content as needed
|
||||||
|
print("Content:", content)
|
||||||
|
|
||||||
|
complete_response+= content
|
||||||
|
|
||||||
|
print("\n\nHERE is the complete streaming response string", complete_response)
|
||||||
|
print("\n\nHERE IS the streaming Response from callback\n\n")
|
||||||
|
print(my_custom_logger.streaming_response_obj)
|
||||||
|
|
||||||
|
streamed_response = my_custom_logger.streaming_response_obj
|
||||||
|
assert complete_response == streamed_response["choices"][0]["message"]["content"]
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
pytest.fail("LiteLLM Proxy test failed. Exception", e)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def test_embedding(client):
|
def test_embedding(client):
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue