| # Helicone Tutorial | |
| [Helicone](https://helicone.ai/) is an open source observability platform that proxies your OpenAI traffic and provides you key insights into your spend, latency and usage. | |
| ## Use Helicone to log requests across all LLM Providers (OpenAI, Azure, Anthropic, Cohere, Replicate, PaLM) | |
| liteLLM provides `success_callbacks` and `failure_callbacks`, making it easy for you to send data to a particular provider depending on the status of your responses. | |
| In this case, we want to log requests to Helicone when a request succeeds. | |
| ### Approach 1: Use Callbacks | |
| Use just 1 line of code, to instantly log your responses **across all providers** with helicone: | |
| ``` | |
| litellm.success_callback=["helicone"] | |
| ``` | |
| Complete code | |
| ```python | |
| from litellm import completion | |
| ## set env variables | |
| os.environ["HELICONE_API_KEY"] = "your-helicone-key" | |
| os.environ["OPENAI_API_KEY"], os.environ["COHERE_API_KEY"] = "", "" | |
| # set callbacks | |
| litellm.success_callback=["helicone"] | |
| #openai call | |
| response = completion(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hi π - i'm openai"}]) | |
| #cohere call | |
| response = completion(model="command-nightly", messages=[{"role": "user", "content": "Hi π - i'm cohere"}]) | |
| ``` | |
| ### Approach 2: [OpenAI + Azure only] Use Helicone as a proxy | |
| Helicone provides advanced functionality like caching, etc. Helicone currently supports this for Azure and OpenAI. | |
| If you want to use Helicone to proxy your OpenAI/Azure requests, then you can - | |
| - Set helicone as your base url via: `litellm.api_url` | |
| - Pass in helicone request headers via: `litellm.headers` | |
| Complete Code | |
| ``` | |
| import litellm | |
| from litellm import completion | |
| litellm.api_base = "https://oai.hconeai.com/v1" | |
| litellm.headers = {"Helicone-Auth": f"Bearer {os.getenv('HELICONE_API_KEY')}"} | |
| response = litellm.completion( | |
| model="gpt-3.5-turbo", | |
| messages=[{"role": "user", "content": "how does a court case get to the Supreme Court?"}] | |
| ) | |
| print(response) | |
| ``` | |