The project is in a healthy, maintained state
OpenTelemetry Semantic Conventions Extension for Large Language Models
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

For Ruby

Open-source observability for your LLM application

OpenLLMetry is a set of extensions built on top of OpenTelemetry that gives you complete observability over your LLM application. Because it uses OpenTelemetry under the hood, it can be connected to your existing observability solutions - Datadog, Honeycomb, and others.

It's built and maintained by Traceloop under the Apache 2.0 license.

The repo contains standard OpenTelemetry instrumentations for LLM providers and Vector DBs, as well as a Traceloop SDK that makes it easy to get started with OpenLLMetry, while still outputting standard OpenTelemetry data that can be connected to your observability stack. If you already have OpenTelemetry instrumented, you can just add any of our instrumentations directly.

๐Ÿš€ Getting Started

The easiest way to get started is to use our SDK. For a complete guide, go to our docs.

Install the SDK:

gem install traceloop-sdk

Then, to start instrumenting your code, just add this line to your code:

require "traceloop/sdk"

traceloop = Traceloop::SDK::Traceloop.new

That's it. You're now tracing your code with OpenLLMetry!

Now, you need to decide where to export the traces to.

โซ Supported (and tested) destinations

See our docs for instructions on connecting to each one.

๐Ÿช— What do we instrument?

OpenLLMetry is in early-alpha exploratory stage, and we're still figuring out what to instrument. As opposed to other languages, there aren't many official LLM libraries (yet?), so for now you'll have to manually log prompts:

require "openai"

client = OpenAI::Client.new

traceloop.llm_call() do |tracer|
  tracer.log_prompt(model="gpt-3.5-turbo", user_prompt="Tell me a joke about OpenTelemetry")
  response = client.chat(
    parameters: {
      model: "gpt-3.5-turbo",
      messages: [{ role: "user", content: "Tell me a joke about OpenTelemetry" }]
    })
  tracer.log_response(response)
end

๐ŸŒฑ Contributing

Whether it's big or small, we love contributions โค๏ธ Check out our guide to see how to get started.

Not sure where to get started? You can:

๐Ÿ’š Community & Support

  • Slack (For live discussion with the community and the Traceloop team)
  • GitHub Discussions (For help with building and deeper conversations about features)
  • GitHub Issues (For any bugs and errors you encounter using OpenLLMetry)
  • Twitter (Get news fast)

๐Ÿ™ Special Thanks

To @patrickdebois, who suggested the great name we're now using for this repo!