Skip to content

Instantly share code, notes, and snippets.

@filippotoso
Last active July 23, 2023 09:08
Show Gist options
  • Save filippotoso/6f93ddad14cc1e2b20d9deafc2c1f17a to your computer and use it in GitHub Desktop.
Save filippotoso/6f93ddad14cc1e2b20d9deafc2c1f17a to your computer and use it in GitHub Desktop.
Monkey Patching to intercept real usage data of OpenAI calls
from openai import Embedding, ChatCompletion, Completion
class Usage:
def __init__(self):
self.__usage = []
self.__old_embedding_create = Embedding.create
Embedding.create = self.__new_embedding_create
self.__old_completion_create = Completion.create
Completion.create = self.__new_completion_create
self.__old_chat_completion_create = ChatCompletion.create
ChatCompletion.create = self.__new_chat_completion_create
def __new_embedding_create(self, *args, **kwargs):
result = self.__old_embedding_create(*args, **kwargs)
self.__usage.append(
{
"model": result.get("model"),
"tokens": result.get("usage"),
}
)
return result
def __new_completion_create(self, *args, **kwargs):
result = self.__old_completion_create(*args, **kwargs)
self.__usage.append(
{
"model": result.get("model"),
"tokens": result.get("usage"),
}
)
return result
def __new_chat_completion_create(self, *args, **kwargs):
result = self.__old_chat_completion_create(*args, **kwargs)
self.__usage.append(
{
"model": result.get("model"),
"tokens": result.get("usage"),
}
)
return result
def get(self):
return self.__usage
# Sample code
usage = Usage()
# Execute LangChain / LlamaIndex calls
print(usage.get())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment