diff --git a/.editorconfig b/.editorconfig index 96c99acd5..d7ea973ce 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,3 +1,15 @@ +# http://editorconfig.org + +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + # Specific settings for the .mdx file you want to format as JavaScript [pages/_app.mdx] language = javascript \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..7c8eef53f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,29 @@ +name: "CI" + +on: + pull_request: + merge_group: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - uses: pnpm/action-setup@v4 + id: pnpm-install + with: + version: 9.5.0 + run_install: false + + - uses: actions/setup-node@v4 + with: + node-version: 20 + + - run: pnpm install + + - name: Build next.js app + # change this if your site requires a custom build command + run: pnpm build diff --git a/.github/workflows/nextjs_bundle_analysis.yml b/.github/workflows/nextjs_bundle_analysis.yml index 304bdccb5..fbbfa6553 100644 --- a/.github/workflows/nextjs_bundle_analysis.yml +++ b/.github/workflows/nextjs_bundle_analysis.yml @@ -106,11 +106,11 @@ jobs: id: fc with: issue-number: ${{ github.event.number }} - body-includes: "" + body-includes: " + + +``` + +`macros` and `default_replica_*` configuration should be covered by the Helm chart without any further configuration. + +Set the following environment variables to connect to your ClickHouse instance assuming that Langfuse runs within the same Cluster and Namespace: + +```yaml +CLICKHOUSE_URL=http://-clickhouse:8123 +CLICKHOUSE_MIGRATION_URL=clickhouse://-clickhouse:9000 +CLICKHOUSE_USER=default +CLICKHOUSE_PASSWORD=changeme +``` + +### Docker + +You can run ClickHouse in a single [Docker](https://hub.docker.com/r/clickhouse/clickhouse-server) container for development purposes. +As there is no redundancy, this is **not recommended for production workloads**. + +#### Example Configuration + +Start the container with + +```bash +docker run --name clickhouse-server \ + -e CLICKHOUSE_DB=default \ + -e CLICKHOUSE_USER=clickhouse \ + -e CLICKHOUSE_PASSWORD=clickhouse \ + -d --ulimit nofile=262144:262144 \ + -p 8123:8123 \ + -p 9000:9000 \ + -p 9009:9009 \ + clickhouse/clickhouse-server +``` + +Set the following environment variables to connect to your ClickHouse instance: + +```yaml +CLICKHOUSE_URL=http://localhost:8123 +CLICKHOUSE_MIGRATION_URL=clickhouse://localhost:9000 +CLICKHOUSE_USER=clickhouse +CLICKHOUSE_PASSWORD=clickhouse +CLICKHOUSE_CLUSTER_ENABLED=false +``` diff --git a/pages/docs/deployment/v3/components/redis.mdx b/pages/docs/deployment/v3/components/redis.mdx new file mode 100644 index 000000000..7359a2dac --- /dev/null +++ b/pages/docs/deployment/v3/components/redis.mdx @@ -0,0 +1,105 @@ +--- +description: How Langfuse uses Redis or Valkey +--- + +# Redis / Valkey + +Langfuse uses Redis/Valkey (referred to as Redis going forward) as a caching layer and as a queue. +It is used to accept new events quickly on the API and defer their processing and insertion. +This allows Langfuse to handle request peaks gracefully. +This guide covers how to configure Redis within Langfuse and what to keep in mind when bringing your own Redis. + +## Configuration + +Langfuse accepts the following environment variables to fine-tune your Redis usage. +They need to be provided for the Langfuse Web and Langfuse Worker containers. + +| Variable | Required / Default | Description | +| -------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `REDIS_CONNECTION_STRING` | Required | Redis connection string with format `redis[s]://[[username][:password]@][host][:port][/db-number]` | + +OR + +| Variable | Required / Default | Description | +| ------------ | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `REDIS_HOST` | Required | Redis host name. | +| `REDIS_PORT` | `6379` | Port of the Redis instance. | +| `REDIS_AUTH` | | Authentication string for the Redis instance. | + +## Deployment Options + +This section covers different deployment options and provides example environment variables. + +### Managed Redis by Cloud Providers + +[Amazon ElastiCache](https://aws.amazon.com/de/elasticache/redis/), [Azure Cache for Redis](https://azure.microsoft.com/de-de/products/cache/), and [GCP Memorystore](https://cloud.google.com/memorystore/?hl=en) are fully managed Redis services. +Langfuse handles failovers between read-replicas, but does not support Redis cluster mode for now, i.e. there is no sharding support. +To connect your cloud provider manager Redis instance, set the environment variables as defined above. +Ensure that your Langfuse container can reach your Redis instance within the VPC. + +#### Example Configuration + +You must set the parameter `maxmemory-policy` to `noeviction` to ensure that the queue jobs are not evicted from the cache. + +### Redis on Kubernetes (Helm) + +Bitnami offers Helm Charts for [Redis](https://github.com/bitnami/charts/tree/main/bitnami/redis) and [Valkey](https://github.com/bitnami/charts/tree/main/bitnami/valkey). +We use the Valkey chart as a dependency for [Langfuse K8s](https://github.com/bitnami/charts/tree/main/bitnami/clickhouse). +See [Langfuse on Kubernetes (Helm)](/docs/deployment/v3/guides/kubernetes-helm) for more details on how to deploy Langfuse on Kubernetes. + +#### Example Configuration + +For a minimum production setup, we recommend to use the following values.yaml overwrites when deploying the Clickhouse Helm chart: + +```yaml +valkey: + deploy: true + architecture: standalone + primary: + extraFlags: + - "--maxmemory-policy noeviction" # Necessary to handle queue jobs correctly + auth: + password: changeme +``` + +Set the following environment variables to connect to your Redis instance: + +```yaml +REDIS_CONNECTION_STRING=redis://default:changeme@-valkey-master:6379/0 +``` + +### Docker + +You can run Redis in a single [Docker](https://hub.docker.com/_/redis/) container. +As there is no redundancy, this is **not recommended for production workloads**. + +#### Example Configuration + +Start the container with +```bash +docker run --name redis \ + -p 6379:6379 \ + redis --requirepass myredissecret --maxmemory-policy noeviction +``` + +Set the following environment variables to connect to your Redis instance: + +```yaml +REDIS_HOST=localhost +REDIS_PORT=6379 +REDIS_AUTH=myredissecret +``` + +## Sizing Recommendations + +Langfuse uses Redis mainly for queuing event metadata that should be processed by the worker. +In most cases, the worker can process the queue quickly to keep events from piling up. +For every ~100000 events per minute we recommend about 1GB of memory for the Redis instance. + +## Valkey vs Redis + +Valkey was created as an open source (BSD) alternative to Redis. +It is a drop-in replacement for Redis and is compatible with the Redis protocol. +According to the maintainers their major version 8.0.0 retains compatibility to Redis v7 in most instances. +We do not extensively test new Langfuse releases with Valkey, but have not encountered any issues in internal experiments using it. +Therefore, you can consider Valkey as an option, but you may hit compatibility issues in case its behaviour diverges from Redis. diff --git a/pages/docs/deployment/v3/guides/_meta.tsx b/pages/docs/deployment/v3/guides/_meta.tsx new file mode 100644 index 000000000..1cd340766 --- /dev/null +++ b/pages/docs/deployment/v3/guides/_meta.tsx @@ -0,0 +1,4 @@ +export default { + "docker-compose": "Docker Compose", + "kubernetes-helm": "Kubernetes (Helm)", +}; diff --git a/pages/docs/deployment/v3/guides/docker-compose.mdx b/pages/docs/deployment/v3/guides/docker-compose.mdx new file mode 100644 index 000000000..e7ec6fb37 --- /dev/null +++ b/pages/docs/deployment/v3/guides/docker-compose.mdx @@ -0,0 +1,103 @@ +--- +description: Step-by-step guide to run Langfuse on a cloud provider using docker compose. +--- + +# Self-hosted deployment - Docker Compose + +This guide will walk you through the steps to deploy Langfuse on a cloud provider using Docker Compose. +You will need access to a cloud provider like AWS, GCP, or Azure to deploy the application with permissions to deploy a virtual machine. +While the Docker Compose setup can be highly effective for development environments, we recommend to **not use it in production**. +There is no high-availability, no automatic restarts, no scaling, and no backup. + +## Start a new instance + +Enter your cloud provider interface and navigate to the VM instance section. +This is EC2 on AWS, Compute Engine on GCP, and Virtual Machines on Azure. +Create a new instance. +We recommend that you use at least 4 cores and 16 GiB of memory, e.g. a t3.xlarge on AWS. +Assign a public IP address in case you want to send traces from external sources. +As observability data tends to be large in volume, choose a sufficient amount of storage, e.g. 100GiB. + +The rest of this guide will assume that you have an Ubuntu OS running on your VM and are connected via SSH. + +## Install Docker and Docker Compose + +Install docker (see [official guide](https://docs.docker.com/engine/install/ubuntu/) as well). + +Setup Docker's apt repository: +```bash +# Add Docker's official GPG key: +sudo apt-get update +sudo apt-get install ca-certificates curl +sudo install -m 0755 -d /etc/apt/keyrings +sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc +sudo chmod a+r /etc/apt/keyrings/docker.asc + +# Add the repository to Apt sources: +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt-get update +``` + +Install Docker packages: +```bash +sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin +``` + +Verify installlation: +```bash +sudo docker run hello-world +``` + +## Clone Langfuse Repository + +Get a copy of the latest Langfuse repository: +```bash +git clone https://github.com/langfuse/langfuse.git + +cd langfuse +``` + +## Start the application + +For local experimentation, the pre-configured variables in the docker-compose file are usually sufficient. +If you send _any_ kind of sensitive data to the application or intend to keep it up for longer, we recommend that +you modify the docker-compose file and overwrite the following environment variables: + +- **SALT**: A random string used to hash passwords. It should be at least 32 characters long. +- **ENCRYPTION_KEY**: Generate this via `openssl rand -base64 32`. +- **NEXTAUTH_SECRET**: A random string used to sign JWT tokens. +- **NEXTAUTH_URL**: The URL where the application is hosted. Used for redirects after signup. + +In addition, you should change any database or storage credential. + +Run the docker compose file for Langfuse v3 (preview): +```bash +docker compose -f docker-compose.v3preview.yml up +``` + +Watch the containers being started and the logs flowing in. +After about 2-3 minutes, the langfuse-web-1 container should log "Ready". +At this point you can proceed to the next step. + +## Smoke test UI + +You should be able to load the Langfuse UI, by opening `http://:3000/` in your browser. +Go ahead and register, create a new organization, project, and explore Langfuse. + +## Shutdown + +You can stop the containers by hitting `Ctrl+C` in the terminal. +If you started docker-compose in the background (`-d` flag), you can stop all instance using: +```bash +docker compose -f docker-compose.v3preview.yml down +``` +Adding the `-v` flag will also remove the volumes. + +Ensure to stop the VM instance in your cloud provider interface to avoid unnecessary costs. + +## How to Upgrade + +To upgrade Langfuse, you can stop all instances and run `docker compose -f docker-compose.v3preview.yml up --pull always`. diff --git a/pages/docs/deployment/v3/guides/kubernetes-helm.mdx b/pages/docs/deployment/v3/guides/kubernetes-helm.mdx new file mode 100644 index 000000000..3df089375 --- /dev/null +++ b/pages/docs/deployment/v3/guides/kubernetes-helm.mdx @@ -0,0 +1,88 @@ +--- +description: Step-by-step guide to run Langfuse on Kubernetes via Helm. +--- + +# Self-hosted deployment - Kubernetes (Helm) + +This guide will walk you through the steps to deploy Langfuse on Kubernetes using the Helm package manager. +You will need access to a Kubernetes cluster and Helm installed on your local machine. +For the purposes of this guide, we will use a local minikube instance, but each step should extend to a managed Kubernetes service like GKE, EKS, or AKS. + + + This guide covers a developer preview which is **not suitable for production use**. + v3 is under active development and we plan to ship a production-ready version by the end of November 2024. + We share this information to gather feedback from our awesome developer community. + + If you are interested in contributing to our Kubernetes deployment guide or Helm chart, + please reach out to us on [Discord](/discord), contact the maintainers at support@langfuse.com, + or join the [GitHub Discussion](https://github.com/orgs/langfuse/discussions/1902). + + +## Fetch the Helm chart and customize values + +Fetch the `langfuse-k8s` GitHub repository to your local machine to install the v3 preview using Helm. +```bash +git clone https://github.com/langfuse/langfuse-k8s.git + +cd langfuse-k8s/charts/langfuse +``` + +Checkout the `lfe-1348-v3-chart` branch that we use to develop the chart for v3. +```bash +git checkout lfe-1348-v3-chart +``` + +For local experimentation, the pre-configured variables in the values.yaml file are usually sufficient. +If you send _any_ kind of sensitive data to the application or intend to keep it up for longer, we recommend that +you modify the values.yaml file and overwrite the following environment variables using the `additionalEnv` field: + +- **SALT**: A random string used to hash passwords. It should be at least 32 characters long. +- **ENCRYPTION_KEY**: Generate this via `openssl rand -base64 32`. +- **NEXTAUTH_SECRET**: A random string used to sign JWT tokens. +- **NEXTAUTH_URL**: The URL where the application is hosted. Used for redirects after signup. + +## Deploy the helm chart + +Create a new namespace for the Langfuse deployment, e.g.: +```bash +kubectl create namespace langfuse-v3-preview +``` + +Download the Helm chart dependencies: +```bash +helm dependency update +``` + +Install the Helm chart to our demo namespace: +```bash +helm install langfuse . -n langfuse-v3-preview +``` +Our chart assumes that it's installed as `langfuse`. +If you want to install it with a different name, you will have to adjust the Redis hostname in the `values.yaml` accordingly. + +At this point, Kubernetes will start to deploy the Langfuse application and its dependencies. +This can take up to 5 minutes. +You can monitor the progress by checking `kubectl get pods -n langfuse-v3-preview` - we expect all pods to be Running. + +## Smoke test UI + +The Langfuse UI will be served on a NodePort service. +Use `kubectl get services -n langfuse-v3-preview` and search for `langfuse-web` to see the port mapping. +You can access the Langfuse UI by visiting `http://:` in your browser. +Go ahead and register, create a new organization, project, and explore Langfuse. + +## Shutdown + +You can delete the Helm release and the namespace to clean up the resources: +```bash +helm uninstall langfuse -n langfuse-v3-preview +kubectl delete namespace langfuse-v3-preview +``` + +## How to Upgrade + +Run the following commands to upgrade the Helm chart to the latest version: +```bash +helm dependency update +helm upgrade langfuse . -n langfuse-v3-preview +``` diff --git a/pages/docs/deployment/v3/migrate-v2-to-v3.mdx b/pages/docs/deployment/v3/migrate-v2-to-v3.mdx new file mode 100644 index 000000000..3ebc9685e --- /dev/null +++ b/pages/docs/deployment/v3/migrate-v2-to-v3.mdx @@ -0,0 +1,220 @@ +--- +description: A guide to upgrade a Langfuse v2 setup to v3. +--- + +# Migrate Langfuse v2 to v3 + + + This guide covers a developer preview which is **not suitable for production use**. + v3 is under active development and we plan to ship a production-ready version by the end of November 2024. + We share this information to gather feedback from our awesome developer community. + + For a production-ready setup, follow the [self-hosting guide](/docs/deployment/self-host) + or consider using [Langfuse Cloud](https://cloud.langfuse.com) maintained by the Langfuse team. + + If you want to get started on v3, please follow our [v3 Self-Host Guide](/docs/deployment/self-host-v3). + + +To learn more about our reasons for the architectural changes, jump to the [Reasoning](#reasoning) section. + +## SDK compatibility and API changes + +While we aim to keep our SDKs and APIs fully backwards compatible, we have to introduce backwards incompatible changes with our update to v3. +Certain APIs in SDK versions below version 2.0.0 are not compatible with our new backend architecture. +Please upgrade and benefit from many performance improvements or features such as [prompt caching](/changelog/2024-02-05-sdk-level-prompt-caching). + +**Upgrade options**: +- Default SDK upgrade: We wrote documentation on how to upgrade from 1.x.x to 2.x.x ([Python](/docs/sdk/python/low-level-sdk#upgrading-from-v1xx-to-v2xx), [JS](/docs/sdk/typescript/guide#upgrade1to2)). For the JS SDK, we also have an upgrade path [from 2.x.x to 3.x.x](/docs/sdk/typescript/guide#upgrade2to3). The upgrade is straightforward and should not take much time. +- Improved integrations: Since the first major version, we built many new ways to integrate your code with Langfuse such as [Decorators](/docs/sdk/python/decorators) for Python. We would recommend to check out our [quickstart](/docs/get-started) to see whether there is a more convenient integration available for you. + +**Background**: Langfuse v3 relies on an event driven backend architecture. +This means, that we acknowledge HTTP requests from the SDKs, queue the HTTP bodies in the backend, and process them asynchronously. +This allows us to scale the backend more easily and handle more requests without overloading the database. +The SDKs below 2.0.0 send the events to our server and expect a synchronous response containing the database representation of the event. +If you rely on this data and access it in the code, your SDK will break as of Nov. 11th, 2024 for the cloud version and post-upgrade for self-hosted versions. + +### API Changes + +#### POST /api/public/ingestion + +The `/api/public/ingestion` endpoint is now asynchronous. +It will accept all events as they come in and queue them for processing before returning a 207 status code. +This means that events will _not_ be available immediately after acceptance by the backend and instead will appear +eventually in subsequent read requests. + +The individual events accepted a `metadata` property within their body of type `string | string[] | Record`. +Only the `Record` type is supported within our UI and endpoints to perform queries and filter events. +Therefore, we enforce an object type for `metadata` going forward. +All incoming events with `{ metadata: string | string[] }` will have their metadata mapped to an object with key `metadata`, +i.e. `{ event: { body: { metadata: "test" } } }` will be transformed to `{ event: { body: { metadata: { metadata: "test" } } } }`. + +#### POST /api/public/scores + +The `/api/public/scores` endpoint is now asynchronous. +It behaves exactly as the `/api/public/ingestion` endpoint, but will return a 200 status code with a body of `{ id: string }` type. +Before, the endpoint returned the created score object directly. +This change is inline with our [API reference](https://api.reference.langfuse.com/#post-/api/public/scores) and therefore not considered breaking. + +#### Deprecated endpoints + +The following endpoints are deprecated since our v2 release. +We continue to accept requests to these endpoints and will remove them in a future release. +Their API behavior changes to be asynchronous and the endpoints will only return the id of the created object instead of the full updated record. + +- POST /api/public/events +- POST /api/public/generations +- PATCH /api/public/generations +- POST /api/public/spans +- PATCH /api/public/spans +- POST /api/public/traces + +## Migration Steps + +We tried to make the version upgrade as seamless as possible. +If you encounter any issues please reach out to our support team or open an issue on our GitHub repository. + +### Before you start the upgrade + +Before starting your upgrade, make sure you are familiar with the contents of [our v3 hosting guide](/docs/deployment/v3/overview). +In addition, we recommend that you perform a backup of your Postgres database before you start the upgrade. +Also, ensure that you run a recent version of Langfuse, ideally a version later than v2.80.0. + +For a zero-downtime upgrade, we recommend that you provision new instances of the Langfuse web and worker containers +and move your traffic after validating that the new instances are working as expected. + +### Upgrade Steps + +#### 1. Provision new infrastructure + +Ensure that you deploy all required storage components ([Clickhouse](/docs/deployment/v3/components/clickhouse), Redis, S3/Blob Store) and have the connection information handy. +You can reuse your existing Postgres instance for the new deployment. +Ensure that you also have your Postgres connection details ready. + +#### 2. Start new Langfuse containers. + +Deploy the Langfuse web and worker containers with the settings from our self-hosting guide. +Ensure that you set the environment variables for the new storage components and the Postgres connection details. + +At this point, you can start to test the new Langfuse instance. +The UI should load as expected, but there should not be any traces, observations, or scores. +This is expected, as data is being read from Clickhouse while those elements still reside in Postgres. + +#### 3. Shift traffic from v2 to v3 + +Point the traffic to the new Langfuse instance by updating your DNS records or your Loadbalancer configuration. +All new events will be stored in Clickhouse and should appear within the UI within a few seconds of being ingested. + +#### 4. Wait for historic data migration to complete + +We have introduced background migrations as part of the migration to v3. +Those allow Langfuse to schedule longer-running migrations without impacting the availability of the service. +As part of the v3 release, we have introduced four migrations that will run once you deploy the new stack. + +1. **Cost backfill**: We calculate costs for all events and store them in the Postgres database. Before, those were calculated on read which had a negative impact on read performance. +2. **Traces migration**: We migrate all traces in batches from Postgres to Clickhouse. We start with most recent traces, i.e. those should show within your dashboard soon after starting the migration. +3. **Observations migration**: We migrate all observations in batches from Postgres to Clickhouse. We start with most recent observations, i.e. those should show within your dashboard soon after starting the migration. +4. **Scores migration**: We migrate all scores in batches from Postgres to Clickhouse. We start with most recent scores, i.e. those should show within your dashboard soon after starting the migration. + +Each migration has to finish, before the next one starts. +Depending on the size of your event tables, this process may take multiple hours. + +You need to set `LANGFUSE_ENABLE_BACKGROUND_MIGRATIONS=true` to enable background migrations and start the migration of data from Postgres to ClickHouse. + +[//]: # (TODO: Reference to new UI to monitor background migrations) + +#### 5. Stop the old Langfuse containers + +After you have verified that new events are being stored in Clickhouse and are shown in the UI, you can stop the old Langfuse containers. + +## Reasoning + +Langfuse has gained significant traction over the last month, both in our Cloud environment and in self-hosted setups. +With v3 we introduce changes that allow our backend to handle hundreds of events per second with higher reliability. +To achieve this scale, we introduce a second Langfuse container and additional storage services like S3/Blob store, Clickhouse, and Redis. +We explain why we chose each element of the stack and why we believe that they help us achieve best in class scale. + +### Why Clickhouse + +We made the strategic decision to migrate our traces, observations, and scores table from Postgres to Clickhouse. +Both us and our self-hosters observed bottlenecks in Postgres when dealing with millions of rows of tracing data, +both on ingestion and retrieval of information. +Our core requirement was a database that could handle massive volumes of trace and event data with exceptional query speed and efficiency +while also being available for free to self-hosters. + +#### Limitations of Postgres + +Initially, Postgres was an excellent choice due to its robustness, flexibility, and the extensive tooling available. +As our platform grew, we encountered performance bottlenecks with complex aggregations and time-series data. +The row-based storage model of PostgreSQL becomes increasingly inefficient when dealing with billions of rows of tracing data, +leading to slow query times and high resource consumption. + +#### Our requirements + +- Analytical queries: all queries for our dashboards (e.g. sum of LLM tokens consumed over time) +- Table queries: Finding tracing data based on filtering and ordering selected via tables in our UI. +- Select by ID: Quickly locating a specific trace by its ID. +- High write throughput while allowing for updates. Our tracing data can be updated from the SKDs. Hence, we need an option to update rows in the database. +- Self-hosting: We needed a database that is free to use for self-hosters, avoiding dependencies on specific cloud providers. +- Low operational effort: As a small team, we focus on building features for our users. We try to keep operational efforts as low as possible. + +#### Why Clickhouse is great + +- Optimized for Analytical Queries: ClickHouse is a modern OLAP database capable of ingesting data at high rates and querying it with low latency. It handles billions of rows efficiently. +- Rich feature-set: Clickhouse offers different Table Engines, Materialized views, different types of Indices, and many integrations which helps us to build fast and achieve low latency read queries. +- Our self-hosters can use the official Clickhouse Helm Charts and Docker Images for deploying in the cloud infrastructure of their choice. +- Clickhouse Cloud: Clickhouse Cloud is a database as a SaaS service which allows us to reduce operational efforts on our side. + +When talking to other companies and looking at their code bases, we learned that Clickhouse is a popular choice these days for analytical workloads. +Many modern observability tools, such as [Signoz](https://signoz.io/) or [Posthog](https://posthog.com/), as well as established companies like [Cloudflare](https://blog.cloudflare.com/http-analytics-for-6m-requests-per-second-using-clickhouse/), use Clickhouse for their analytical workloads. + +#### Clickhouse vs. others + +We think there are many great OLAP databases out there and are sure that we could have chosen an alternative and would also succeed with it. However, here are some thoughts on alternatives: +- Druid: Unlike Druid's [modular architecture](https://posthog.com/blog/clickhouse-vs-druid), ClickHouse provides a more straightforward, unified instance approach. Hence, it is easier for teams to manage Clickhouse in production as there are fewer moving parts. This reduces the operational burden especially for our self-hosters. +- StarRocks: We think StarRocks is great but early. The vast amount of features in Clickhouse help us to remain flexible with our requirements while benefiting from the performance of an OLAP database. + +#### Building an adapter and support multiple databases + +We explored building a multi-database adapter to support Postgres for smaller self-hosted deployments. +After talking to engineers and reviewing some of PostHog's [Clickhouse implementation](https://github.com/PostHog/posthog), +we decided against this path due to its complexity and maintenance overhead. +This allows us to focus our resources on building user features instead. + +### Why Redis + +We added a Redis instance to serve cache and queue use-cases within our stack. +With its open source license, broad native support my major cloud vendors, and ubiquity in the industry, Redis was a natural choice for us. + +### Why S3/Blob Store + +Observability data for LLM application tends to contain large, semi-structured bodies of data to represent inputs and outputs. +We chose S3/Blob Store as a scalable, secure, and cost-effective solution to store these large objects. +It allows us to store all incoming events for further processing and acts as a native backup solution, as the full state +can be restored based on the events stored there. + +### Why Worker Container + +When processing observability data for LLM applications, there are many CPU-heavy operations which block the main loop in our Node.js backend, +e.g. tokenization and other parsing of event bodies. +To achieve high availability and low latencies across client applications, we decided to move the heavy processing into an asynchronous worker container. +It accepts events from a Redis queue and ensures that they are eventually being upserted into Clickhouse. + +## Support + +If you experience any issues, please join us on [Discord](/discord) or contact the maintainers at support@langfuse.com. + +For support with production deployments, the Langfuse team provides dedicated enterprise support. To learn more, reach out to enterprise@langfuse.com or [schedule a demo](/schedule-demo). + +Alternatively, you may consider using [Langfuse Cloud](/docs/deployment/cloud), which is a fully managed version of Langfuse. You can find information about its security and privacy [here](/docs/data-security-privacy). + +## FAQ + +import { FaqPreview } from "@/components/faq/FaqPreview"; + + + +## GitHub Discussions + +import { GhDiscussionsPreview } from "@/components/gh-discussions/GhDiscussionsPreview"; + + diff --git a/pages/docs/deployment/v3/overview.mdx b/pages/docs/deployment/v3/overview.mdx new file mode 100644 index 000000000..e4e953226 --- /dev/null +++ b/pages/docs/deployment/v3/overview.mdx @@ -0,0 +1,427 @@ +--- +description: Step-by-step guide to run Langfuse on your local machine using docker compose. +--- + +import { Callout } from "nextra/components"; + +# Self-hosted deployment - v3 Preview - Open Source LLM Observability + + + This guide covers a developer preview which is **not suitable for production use**. + v3 is under active development and we plan to ship a production-ready version by the end of November 2024. + We share this information to gather feedback from our awesome developer community. + + For a production-ready setup, follow the [self-hosting guide](/docs/deployment/self-host) + or consider using [Langfuse Cloud](https://cloud.langfuse.com) maintained by the Langfuse team. + + If you are on a v2 setup and want to migrate to the v3 developer preview (not recommended in production environments), take a look at our [migration guide](/docs/deployment/v3/migrate-v2-to-v3). + + If you face any questions or issues, please reach out to us on [Discord](/discord), contact the maintainers at support@langfuse.com, + or join the [GitHub Discussion](https://github.com/orgs/langfuse/discussions/1902). + + +## Components + +Langfuse consists of multiple storage components and two Docker containers: + +- **Langfuse Web**: The main web application serving the Langfuse UI and APIs. +- **Langfuse Worker**: A worker that asynchronously processes events. +- **Postgres**: The main database for transactional workloads. +- **Redis**: A fast in-memory data structure store. Used for queue and cache operations. +- **S3/Blob Store**: Object storage to persist all incoming events, multi-modal inputs, and large exports. +- **Clickhouse**: High-performance OLAP database which stores traces, observations, and scores. + +See the chart below for an overview of the components and their interactions: + +```mermaid +flowchart TB + subgraph clients["Clients"] + Browser["Browser"] + JS["JavaScript SDK"] + Python["Python SDK"] + end + + subgraph storage["Storage"] + DB[Postgres Database] + Redis[Redis Cache/Queue] + Clickhouse[Clickhouse Database] + S3[S3/Blob Store] + end + + subgraph app["Langfuse Containers"] + subgraph web["Langfuse Web"] + TRPC["TRPC API"] + REST["Public API"] + Frontend["React Frontend"] + Backend["Backend"] + end + + subgraph worker["Langfuse Worker"] + QueueProcessor["Queue Processor"] + end + end + + Browser --> Frontend + Frontend --> TRPC + JS --> REST + Python --> REST + + TRPC --> Backend + REST --> Backend + + Backend --> S3 + Backend --> DB + Backend --> Redis + Backend --> Clickhouse + + Redis --> QueueProcessor + QueueProcessor --> Clickhouse + QueueProcessor --> DB + QueueProcessor --> S3 +``` + +### Postgres Database + +Langfuse requires a persistent Postgres database to store its state. +You can use a managed service on AWS, Azure, or GCP, or host it yourself. +At least version 12 is required. + +### Redis + +Langfuse uses Redis for caching and queue operations. +You can use a managed service on AWS, Azure, or GCP, or host it yourself. +At least version 7 is required and the instance must have `maxmemory-policy=noeviction` configured. +You may use Valkey instead of Redis, but there is no active support from the Langfuse team as of now. +See [Redis](/docs/deployment/v3/components/redis) for more details on how to connect Redis to Langfuse. + +### S3/Blob Store + +Langfuse requires an S3-compatible blob store to persist all incoming events, multi-modal inputs, and large exports. +You can use a managed service on AWS, Azure, or GCP, or host it yourself using MinIO. +See [S3/Blob Store](/docs/deployment/v3/components/blobstorage) for more details on how to connect a blob store to Langfuse. + +### Clickhouse + +Langfuse uses Clickhouse as an OLAP database to store traces, observations, and scores. +You can use the managed service by Clickhouse Cloud, or host it yourself. +See [ClickHouse](/docs/deployment/v3/components/clickhouse) for more details on how to connect ClickHouse to Langfuse. + +## Deploying Langfuse + +Deploy the application container to your infrastructure. +You can use managed services like AWS ECS, Azure Container Instances, or GCP Cloud Run, or host it yourself. + +During the container startup, all database migrations will be applied automatically. +This can be optionally disabled via environment variables. + + + We recommend that you test V3 using the latest release candidate. + You can find the newest tag in our [GitHub Releases](https://github.com/langfuse/langfuse/releases?q=v3.0.0-rc&expanded=true). + + +### Run Langfuse Web + +```bash +docker run --name langfuse-web \ + -e DATABASE_URL=postgresql://hello \ + -e NEXTAUTH_URL=http://localhost:3000 \ + -e NEXTAUTH_SECRET=mysecret \ + -e SALT=mysalt \ + -e ENCRYPTION_KEY=0000000000000000000000000000000000000000000000000000000000000000 \ # generate via: openssl rand -hex 32 + -e CLICKHOUSE_URL=http://clickhouse:8123 \ + -e CLICKHOUSE_USER=clickhouse \ + -e CLICKHOUSE_PASSWORD=clickhouse \ + -e CLICKHOUSE_MIGRATION_URL=clickhouse://clickhouse:9000 \ + -e REDIS_HOST=localhost \ + -e REDIS_PORT=6379 \ + -e REDIS_AUTH=redis \ + -e LANGFUSE_S3_EVENT_UPLOAD_ENABLED=true \ + -e LANGFUSE_S3_EVENT_UPLOAD_BUCKET=my-bucket \ + -e LANGFUSE_S3_EVENT_UPLOAD_REGION=us-east-1 \ + -e LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE \ + -e LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY=bPxRfiCYEXAMPLEKEY \ + # Temp env variables during migration + -e LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=true \ + -e LANGFUSE_ASYNC_INGESTION_PROCESSING=true \ + -e LANGFUSE_ASYNC_CLICKHOUSE_INGESTION_PROCESSING=true \ + -e LANGFUSE_READ_DASHBOARDS_FROM_CLICKHOUSE=true \ + -e LANGFUSE_READ_FROM_POSTGRES_ONLY=false \ + -e LANGFUSE_RETURN_FROM_CLICKHOUSE=true \ + -p 3000:3000 \ + -a STDOUT \ +langfuse/langfuse:3.0.0-rc.1 +``` + +### Run Langfuse Worker + +```bash +docker run --name langfuse-worker \ + -e DATABASE_URL=postgresql://hello \ + -e SALT=mysalt \ + -e ENCRYPTION_KEY=0000000000000000000000000000000000000000000000000000000000000000 \ # generate via: openssl rand -hex 32 + -e CLICKHOUSE_URL=http://clickhouse:8123 \ + -e CLICKHOUSE_USER=clickhouse \ + -e CLICKHOUSE_PASSWORD=clickhouse \ + -e REDIS_HOST=localhost \ + -e REDIS_PORT=6379 \ + -e REDIS_AUTH=redis \ + -e LANGFUSE_S3_EVENT_UPLOAD_ENABLED=true \ + -e LANGFUSE_S3_EVENT_UPLOAD_BUCKET=my-bucket \ + -e LANGFUSE_S3_EVENT_UPLOAD_REGION=us-east-1 \ + -e LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE \ + -e LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY=bPxRfiCYEXAMPLEKEY \ + # Temp env variables during migration + -e LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=true \ + -e LANGFUSE_ASYNC_INGESTION_PROCESSING=true \ + -e LANGFUSE_ASYNC_CLICKHOUSE_INGESTION_PROCESSING=true \ + -p 3030:3030 \ + -a STDOUT \ +langfuse/langfuse-worker:3.0.0-rc.1 +``` + +### Recommended sizing + +For production environments, we recommend to use at least 2 CPUs and 4 GB of RAM for all containers. +You should have at least two instances of the Langfuse Web container for high availability. +For auto-scaling, we recommend to add instances once the CPU utilization exceeds 50% on either container. + +### Environment Variables + +Langfuse accepts additional environment variables to fine-tune your deployment. +You can use the same environment variables for the Langfuse Web and Langfuse Worker containers. + +| Variable | Required / Default | Description | +| ---------------------------------------------------------------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `DATABASE_URL` | Required | Connection string of your Postgres database. Instead of `DATABASE_URL`, you can also use `DATABASE_HOST`, `DATABASE_USERNAME`, `DATABASE_PASSWORD` and `DATABASE_NAME`. | +| `DIRECT_URL` | `DATABASE_URL` | Connection string of your Postgres database used for database migrations. Use this if you want to use a different user for migrations or use connection pooling on `DATABASE_URL`. **For large deployments**, configure the database user with long timeouts as migrations might need a while to complete. | +| `SHADOW_DATABASE_URL` | | If your database user lacks the `CREATE DATABASE` permission, you must create a shadow database and configure the "SHADOW_DATABASE_URL". This is often the case if you use a Cloud database. Refer to the [Prisma docs](https://www.prisma.io/docs/orm/prisma-migrate/understanding-prisma-migrate/shadow-database#cloud-hosted-shadow-databases-must-be-created-manually) for detailed instructions. | +| `CLICKHOUSE_MIGRATION_URL` | Required | Migration URL (TCP protocol) for the clickhouse instance. Pattern: `clickhouse://:(9000/9440)` | +| `CLICKHOUSE_MIGRATION_SSL` | `false` | Set to true to establish an SSL connection to Clickhouse for the database migration. | +| `CLICKHOUSE_URL` | Required | Hostname of the clickhouse instance. Pattern: `http(s)://:8123` | +| `CLICKHOUSE_USER` | Required | Username of the clickhouse database. Needs SELECT, ALTER, INSERT, CREATE, DELETE grants. | +| `CLICKHOUSE_PASSWORD` | Required | Password of the clickhouse user. | +| `CLICKHOUSE_CLUSTER_ENABLED` | `true` | Whether to run ClickHouse commands `ON CLUSTER`. Set to `false` for single-container setups. | +| `LANGFUSE_AUTO_CLICKHOUSE_MIGRATION_DISABLED` | `false` | Whether to disable the cluster mode in ClickHouse migrations. | +| `REDIS_CONNECTION_STRING` | Required | Connection string of your redis instance. Instead of `REDIS_CONNECTION_STRING`, you can also use `REDIS_HOST`, `REDIS_PORT`, and `REDIS_AUTH`. | +| `LANGFUSE_S3_EVENT_UPLOAD_ENABLED`
`LANGFUSE_S3_EVENT_UPLOAD_BUCKET`
`LANGFUSE_S3_EVENT_UPLOAD_REGION`
`LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID`
`LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY`
`LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT`
`LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE` | Required | S3 configuration to upload incoming events into S3. `LANGFUSE_S3_EVENT_UPLOAD_BUCKET` is required for Langfuse to accept events. The other variables are optional if you use the default credentials on AWS instances and must be supplied in other cloud environments. | +| `NEXTAUTH_URL` | Required | URL of your Langfuse web deployment, e.g. `https://yourdomain.com` or `http://localhost:3000`. Required for successful authentication via OAUTH. | +| `NEXTAUTH_SECRET` | Required | Used to validate login session cookies, generate secret with at least 256 entropy using `openssl rand -base64 32`. | +| `SALT` | Required | Used to salt hashed API keys, generate secret with at least 256 entropy using `openssl rand -base64 32`. | +| `ENCRYPTION_KEY` | Required | Used to encrypt sensitive data. Must be 256 bits, 64 string characters in hex format, generate via: `openssl rand -hex 32`. | +| `LANGFUSE_CSP_ENFORCE_HTTPS` | `false` | Set to `true` to set CSP headers to only allow HTTPS connections. | +| `PORT` | `3000` / `3030` | Port the server listens on. 3000 for web, 3030 for worker. | +| `HOSTNAME` | `localhost` | In some environments it needs to be set to `0.0.0.0` to be accessible from outside the container (e.g. Google Cloud Run). | +| `LANGFUSE_DEFAULT_ORG_ID` | | Configure optional default organization for new users. When users create an account they will be automatically added to this organization. | +| `LANGFUSE_DEFAULT_ORG_ROLE` | `VIEWER` | Role of the user in the default organization (if set). Possible values are `OWNER`, `ADMIN`, `MEMBER`, `VIEWER`. See [roles](/docs/rbac) for details. | +| `LANGFUSE_DEFAULT_PROJECT_ID` | | Configure optional default project for new users. When users create an account they will be automatically added to this project. | +| `LANGFUSE_DEFAULT_PROJECT_ROLE` | `VIEWER` | Role of the user in the default project (if set). Possible values are `OWNER`, `ADMIN`, `MEMBER`, `VIEWER`. See [roles](/docs/rbac) for details. | +| `SMTP_CONNECTION_URL` | | Configure optional SMTP server connection for transactional email. Connection URL is passed to Nodemailer ([docs](https://nodemailer.com/smtp)). | +| `EMAIL_FROM_ADDRESS` | | Configure from address for transactional email. Required if `SMTP_CONNECTION_URL` is set. | +| `S3_ENDPOINT`
`S3_ACCESS_KEY_ID`
`S3_SECRET_ACCESS_KEY`
`S3_BUCKET_NAME`
`S3_REGION` | | Optional S3 configuration for enabling large exports from the UI. `S3_BUCKET_NAME` is required to enable exports. The other variables are optional and will use the default provider credential chain if not specified. | +| `DB_EXPORT_PAGE_SIZE` | `1000` | Optional page size for streaming exports to S3 to avoid memory issues. The page size can be adjusted if needed to optimize performance. | +| `LANGFUSE_AUTO_POSTGRES_MIGRATION_DISABLED` | `false` | Set to `true` to disable automatic database migrations on docker startup. | +| `LANGFUSE_LOG_LEVEL` | `info` | Set the log level for the application. Possible values are `trace`, `debug`, `info`, `warn`, `error`, `fatal`. | +| `LANGFUSE_LOG_FORMAT` | `text` | Set the log format for the application. Possible values are `text`, `json`. | +| `NEXT_PUBLIC_BASE_PATH` | | Set the base path for the application. This is useful if you want to deploy Langfuse on a subpath, especially when integrating Langfuse into existing infrastructure. Refer to the [section](#custom-base-path) below for details. | + +### Authentication + +#### Email/Password [#auth-email-password] + +Email/password authentication is enabled by default. Users can sign up and log in using their email and password. + +To disable email/password authentication, set `AUTH_DISABLE_USERNAME_PASSWORD=true`. In this case, you need to set up [SSO](#sso) instead. + +If you want to provision a default user for your Langfuse instance, you can use the [`LANGFUSE_INIT_*`](#initialization) environment variables. + +**Password Reset** + +- **If transactional emails are configured** on your instance via the `SMTP_CONNECTION_URL` and `EMAIL_FROM_ADDRESS` environments, users can reset their password by using the "Forgot password" link on the login page. + +- **If transactional emails are not set up**, passwords can be reset by following these steps: +1. Update the email associated with your user account in database, such as by adding a prefix. +2. You can then sign up again with a new password. +3. Reassign any organizations you were associated with via the `organization_memberships` table in database. +4. Finally, remove the old user account from the `users` table in database. + +#### SSO + +To enable OAuth/SSO provider sign-in for Langfuse, add the following environment variables: + +| Provider | Variables | OAuth Redirect URL | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | +| [Google](https://next-auth.js.org/providers/google) | `AUTH_GOOGLE_CLIENT_ID`
`AUTH_GOOGLE_CLIENT_SECRET`

`AUTH_GOOGLE_ALLOW_ACCOUNT_LINKING=true` (optional)
`AUTH_GOOGLE_ALLOWED_DOMAINS=langfuse.com,google.com`(optional, list of allowed domains based on [`hd` OAuth claim](https://developers.google.com/identity/openid-connect/openid-connect#an-id-tokens-payload)) | `/api/auth/callback/google` | +| [GitHub](https://next-auth.js.org/providers/github) | `AUTH_GITHUB_CLIENT_ID`
`AUTH_GITHUB_CLIENT_SECRET`

`AUTH_GITHUB_ALLOW_ACCOUNT_LINKING=true` (optional) | `/api/auth/callback/github` | +| [GitLab](https://next-auth.js.org/providers/gitlab) | `AUTH_GITLAB_CLIENT_ID`
`AUTH_GITLAB_CLIENT_SECRET`

`AUTH_GITLAB_ISSUER` (optional)
`AUTH_GITLAB_ALLOW_ACCOUNT_LINKING=true` (optional) | `/api/auth/callback/gitlab` | +| [AzureAD/Entra ID](https://next-auth.js.org/providers/azure-ad) | `AUTH_AZURE_AD_CLIENT_ID`
`AUTH_AZURE_AD_CLIENT_SECRET`
`AUTH_AZURE_AD_TENANT_ID`

`AUTH_AZURE_ALLOW_ACCOUNT_LINKING=true` (optional) | `/api/auth/callback/azure-ad` | +| [Okta](https://next-auth.js.org/providers/okta) | `AUTH_OKTA_CLIENT_ID`
`AUTH_OKTA_CLIENT_SECRET`
`AUTH_OKTA_ISSUER`

`AUTH_OKTA_ALLOW_ACCOUNT_LINKING=true` (optional) | `/api/auth/callback/okta` | +| [Auth0](https://next-auth.js.org/providers/auth0) | `AUTH_AUTH0_CLIENT_ID`
`AUTH_AUTH0_CLIENT_SECRET`
`AUTH_AUTH0_ISSUER`

`AUTH_AUTH0_ALLOW_ACCOUNT_LINKING=true` (optional) | `/api/auth/callback/auth0` | +| [AWS Cognito](https://next-auth.js.org/providers/cognito) | `AUTH_COGNITO_CLIENT_ID`
`AUTH_COGNITO_CLIENT_SECRET`
`AUTH_COGNITO_ISSUER`

`AUTH_COGNITO_ALLOW_ACCOUNT_LINKING=true` (optional) | `/api/auth/callback/cognito` | +| [Custom OAuth](https://next-auth.js.org/configuration/providers/oauth#using-a-custom-provider) ([source](https://github.com/langfuse/langfuse/blob/main/web/src/server/auth.ts)) | `AUTH_CUSTOM_CLIENT_ID`
`AUTH_CUSTOM_CLIENT_SECRET`
`AUTH_CUSTOM_ISSUER`
`AUTH_CUSTOM_NAME` (any, used only in UI)

`AUTH_CUSTOM_ALLOW_ACCOUNT_LINKING=true` (optional)

`AUTH_CUSTOM_SCOPE` (optional, defaults to `"openid email profile"`) | `/api/auth/callback/custom` | + +Use `*_ALLOW_ACCOUNT_LINKING` to allow merging accounts with the same email address. This is useful when users sign in with different providers or email/password but have the same email address. You need to be careful with this setting as it can lead to security issues if the emails are not verified. + +Need another provider? Langfuse uses Auth.js, which integrates with [many providers](https://next-auth.js.org/providers/). Add a [feature request on GitHub](/ideas) if you want us to add support for a specific provider. + +#### Additional configuration + +| Variable | Description | +| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `AUTH_DOMAINS_WITH_SSO_ENFORCEMENT` | Comma-separated list of domains that are only allowed to sign in using SSO. Email/password sign in is disabled for these domains. E.g. `domain1.com,domain2.com` | +| `AUTH_DISABLE_SIGNUP` | Set to `true` to disable sign up for new users. Only existing users can sign in. This affects all new users that try to sign up, also those who received an invite to a project and have no account yet. | +| `AUTH_SESSION_MAX_AGE` | Set the maximum age of the session (JWT) in minutes. The default is 30 days (`43200`). The value must be greater than 5 minutes, as the front-end application refreshes its session every 5 minutes. | + +### Headless Initialization [#initialization] + +By default, you need to create a user account, organization and project via the Langfuse UI before being able to use the API. You can find the API keys in the project settings within the UI. + +If you want to automatically initialize these resources, you can optionally use the following `LANGFUSE_INIT_*` environment variables. When these variables are set, Langfuse will automatically create the specified resources on startup if they don't already exist. This allows for easy integration with infrastructure-as-code and automated deployment pipelines. + +| Environment Variable | Description | Required to Create Resource | Example | +| ---------------------------------- | -------------------------------------- | --------------------------- | ------------------ | +| `LANGFUSE_INIT_ORG_ID` | Unique identifier for the organization | Yes | `my-org` | +| `LANGFUSE_INIT_ORG_NAME` | Name of the organization | No | `My Org` | +| `LANGFUSE_INIT_PROJECT_ID` | Unique identifier for the project | Yes | `my-project` | +| `LANGFUSE_INIT_PROJECT_NAME` | Name of the project | No | `My Project` | +| `LANGFUSE_INIT_PROJECT_PUBLIC_KEY` | Public API key for the project | Yes | `lf_pk_1234567890` | +| `LANGFUSE_INIT_PROJECT_SECRET_KEY` | Secret API key for the project | Yes | `lf_sk_1234567890` | +| `LANGFUSE_INIT_USER_EMAIL` | Email address of the initial user | Yes | `user@example.com` | +| `LANGFUSE_INIT_USER_NAME` | Name of the initial user | No | `John Doe` | +| `LANGFUSE_INIT_USER_PASSWORD` | Password for the initial user | Yes | `password123` | + +The different resources depend on each other in the following way. You can e.g. intialize an organization and a user wihtout having to also initialize a project and API keys, but you cannot initialize a project without also initializing an organization. + +``` +Organization +├── Project (part of organization) +│ └── API Keys (set for project) +└── User (owner of organization) +``` + +Troubleshooting: + +- If you use `LANGFUSE_INIT_*` in Docker Compose, do not double-quote the values ([GitHub issue](https://github.com/langfuse/langfuse/issues/3398)). +- The resources depend on one another (see note above). For example, you must create an organization to initialize a project. + +### Configuring the Enterprise Edition [#ee] + +The Enterprise Edition ([compare versions](/docs/deployment/feature-overview)) of Langfuse includes additional optional configuration options that can be set via environment variables. + +| Variable | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `LANGFUSE_ALLOWED_ORGANIZATION_CREATORS` | Comma-separated list of allowlisted users that can create new organizations. By default, all users can create organizations. E.g. `user1@langfuse.com,user2@langfuse.com`. | +| `LANGFUSE_UI_API_HOST` | Customize the hostname that is referenced in the settings. Defaults to `window.origin`. | +| `LANGFUSE_UI_DOCUMENTATION_HREF` | Customize the documentation link reference in the menu and settings. | +| `LANGFUSE_UI_SUPPORT_HREF` | Customize the support link reference in the menu and settings. | +| `LANGFUSE_UI_FEEDBACK_HREF` | Replace the default feedback widget with your own feedback link. | +| `LANGFUSE_UI_LOGO_DARK_MODE_HREF`
`LANGFUSE_UI_LOGO_LIGHT_MODE_HREF` | Co-brand the Langfuse interface with your own logo. Langfuse adapts to the logo width, with a maximum aspect ratio of 1:3. Narrower ratios (e.g., 2:3, 1:1) also work. The logo is fitted into a bounding box, so there are no specific pixel constraints. For reference, the example logo is 160px x 400px. | +| `LANGFUSE_UI_DEFAULT_MODEL_ADAPTER` | Set the default model adapter for the LLM playground and evals. Options: `OpenAI`, `Anthropic`, `Azure`. Example: `Anthropic` | +| `LANGFUSE_UI_DEFAULT_BASE_URL_OPENAI` | Set the default base URL for OpenAI API in the LLM playground and evals. Example: `https://api.openai.com/v1` | +| `LANGFUSE_UI_DEFAULT_BASE_URL_ANTHROPIC` | Set the default base URL for Anthropic API in the LLM playground and evals. Example: `https://api.anthropic.com` | +| `LANGFUSE_UI_DEFAULT_BASE_URL_AZURE_OPENAI` | Set the default base URL for Azure OpenAI API in the LLM playground and evals. Example: `https://{instanceName}.openai.azure.com/openai/deployments` | + +### Health and Readiness Check Endpoint + +Langfuse web includes a health check endpoint at `/api/public/health` and a readiness check endpoint at `/api/public/ready` and the +Langfuse worker a health check endpoint at `/api/health`. +The health check endpoint indicates if the application is alive and the readiness check endpoint indicates if the application is ready to serve traffic. + +Access the health and readiness check endpoints: + +```bash +curl http://localhost:3000/api/public/health +curl http://localhost:3000/api/public/ready +curl http://localhost:3030/api/health +``` + +The potential responses from the health check endpoint are: + +- `200 OK`: Both the API is functioning normally and a successful connection to the database was made. +- `503 Service Unavailable`: Either the API is not functioning or it couldn't establish a connection to the database. + +The potential responses from the readiness check endpoint are: + +- `200 OK`: The application is ready to serve traffic. +- `500 Internal Server Error`: The application received a SIGTERM or SIGINT and should not receive traffic. + +Applications and monitoring services can call this endpoint periodically for health updates. + +Per default, the Langfuse web healthcheck endpoint does not validate if the database is reachable, as there are cases where the +database is unavailable, but the application still serves traffic. +If you want to run database healthchecks, you can add `?failIfDatabaseUnavailable=true` to the healthcheck endpoint. + +### Encryption + +#### Encryption in transit (HTTPS) [#https] + +For encryption in transit, HTTPS is strongly recommended. +Langfuse itself does not handle HTTPS directly. +Instead, HTTPS is typically managed at the infrastructure level. +There are two main approaches to handle HTTPS for Langfuse: + +1. Load Balancer Termination: +In this approach, HTTPS is terminated at the load balancer level. +The load balancer handles the SSL/TLS certificates and encryption, then forwards the decrypted traffic to the Langfuse container over HTTP. +This is a common and straightforward method, especially in cloud environments. + +- Pros: Simplifies certificate management as it is usually a fully managed service (e.g. AWS ALB), offloads encryption overhead from application servers. +- Cons: Traffic between load balancer and Langfuse container is unencrypted (though typically within a secure network). + +2. Service Mesh Sidecar: +This method involves using a service mesh like Istio or Linkerd. +A sidecar proxy is deployed alongside each Langfuse container, handling all network traffic including HTTPS. + +- Pros: Provides end-to-end encryption (mutual TLS), offers advanced traffic management and observability. +- Cons: Adds complexity to the deployment, requires understanding of service mesh concepts. + +Once HTTPS is enabled, you can configure add `LANGFUSE_CSP_ENFORCE_HTTPS=true` to ensure browser only allow HTTPS connections when using Langfuse. + +#### Encryption at rest (database) [#encryption-at-rest] + +All Langfuse data is stored in your Postgres database, Clickhouse, Redis, or S3/Blob Store. +Database-level encryption is recommended for a secure production deployment and available across cloud providers. + +The Langfuse team has implemented this for Langfuse Cloud and it is fully ISO27001, SOC2 Type 2 and GDPR compliant ([security page](/docs/security)). + +#### Additional application-level encryption [#application-level-encryption] + +In addition to in-transit and at-rest encryption, sensitive data is also encrypted or hashed at the application level. + +| Data | Encryption | +| ----------------------------------------- | ------------------------------------------------------------------------------------ | +| API keys | Hashed using `SALT` | +| Langfuse Console JWTs | Encrypted via `NEXTAUTH_SECRET` | +| LLM API credentials stored in Langfuse | Encrypted using `ENCRYPTION_KEY` | +| Integration credentials (e.g. PostHog) | Encrypted using `ENCRYPTION_KEY` | +| Input/Outputs of LLM Calls, Traces, Spans | Work in progress, reach out to enterprise@langfuse.com if you are interested in this | + +## Deployment Guides + +The Langfuse team and our community maintain a collection of deployment guides to illustrate how you can run Langfuse in various environments. +This section is work in progress and relies on community contributions. +If you have successfully deployed Langfuse on a specific platform, consider contributing a guide either via a GitHub [PR/Issue](https://github.com/langfuse/langfuse-docs) +or by [reaching out](#contact) to the maintainers. +Please also let us know if one of these guides does not work anymore or if you have a better solution. + +- [Docker Compose](/docs/deployment/v3/guides/docker-compose) +- [Kubernetes (Helm)](/docs/deployment/v3/guides/kubernetes-helm) + +## Support + +If you experience any issues, please join us on [Discord](/discord) or contact the maintainers at support@langfuse.com. + +For support with production deployments, the Langfuse team provides dedicated enterprise support. To learn more, reach out to enterprise@langfuse.com or [schedule a demo](/schedule-demo). + +Alternatively, you may consider using [Langfuse Cloud](/docs/deployment/cloud), which is a fully managed version of Langfuse. You can find information about its security and privacy [here](/docs/data-security-privacy). + +## FAQ + +import { FaqPreview } from "@/components/faq/FaqPreview"; + + + +## GitHub Discussions + +import { GhDiscussionsPreview } from "@/components/gh-discussions/GhDiscussionsPreview"; + + diff --git a/pages/docs/deployment/v3/troubleshooting.mdx b/pages/docs/deployment/v3/troubleshooting.mdx new file mode 100644 index 000000000..8fa66ce1d --- /dev/null +++ b/pages/docs/deployment/v3/troubleshooting.mdx @@ -0,0 +1,49 @@ +--- +description: Learn how to troubleshoot common issues with self-hosted Langfuse. +--- + +# Troubleshooting + +This guide covers common issues that Langfuse self-hosters observe and how to address them. +If you encounter an issue that is not covered here, please [open an issue](https://github.com/langfuse/langfuse/issues) or start a [discussion](https://github.com/orgs/langfuse/discussions). + +## Missing Events After POST /api/public/ingestion + +If you are not seeing events after posting them to `/api/public/ingestion`, it is likely that the events are not being ingested correctly. +Events do not appear immediately in the UI, as they are being processed asynchronously. +If your events are not shown after a few minutes, you can check the following: + +- **Check the Langfuse Web logs**: Look for any errors in the Langfuse Web container around the time that you ingested the events. + Any errors you observe indicate that the event is malformatted or that either [Redis](/docs/deployment/v3/components/redis) or [S3](/docs/deployment/v3/components/blobstorage) are not available. + In this case, you should also see non-207 status codes within your application. +- **Check the S3/Blob Storage bucket**: Validate that the event was uploaded correctly into your blob storage. + It should be available in a path like `////.json`. + If the event was accepted in the Langfuse Web container, but is not available in S3, it indicates an issue with your S3 configuration. +- **Check the Langfuse Worker logs**: Look for any errors in the Langfuse Worker container about within 0-60 seconds of ingesting your event. + If no events at all are being processed, it usually indicates a configuration issue around Redis or S3. +- **Check ClickHouse tables**: If the previous processing looks correct, validate whether you can find the event in ClickHouse in the `traces`, `observations`, or `scores` table. + Search for the respective `projectId` and `eventId`. + If you cannot find the event in ClickHouse, but the worker indicates it was processed or if you can find it in ClickHouse and it is not returned via the API, please [open an issue](https://github.com/langfuse/langfuse/issues). + +## Intermittent 502 and 504 network errors + +If you are experiencing intermittent 502 and 504 network errors, this is likely related to your Loadbalancer and keep-alive configuration. +It is recommended to have the keep-alive of a server set to a higher value than the idle timeout on a Loadbalancer. + +As an example, the AWS Application Loadbalancer has a default idle timeout of 60 seconds. +If your service closes a connection after 45 seconds, the Loadbalancer will attempt to reuse the connection which it still believes to be alive which will result in a 502 error. + +Hence, we recommend that you configure `KEEP_ALIVE_TIMEOUT` on the Langfuse Web container to be at least 5 seconds higher than your Loadbalancer idle timeout. + +## JavaScript heap out of memory + +If you are experiencing JavaScript heap out of memory errors within your applications, it indicates that the application thinks it has less memory available than it does. +An example case is that your container has 2 GiB of memory, whereas the Node.js application uses the default max-old-space-size of 1.7 GiB. +This would surface as an error message like + +> FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory + +To address this issue, we recommend that you configure `NODE_OPTIONS=--max-old-space-size=${var.memory}` on the Langfuse Web and the Langfuse Worker containers. +Use the available memory in MiB as the value for `var.memory`, e.g. 4096 for 4 GiB of memory. +The value should be equal or above the memory limit of the container. +This ensures that your container orchestrator kills the pod gracefully if the memory limit is exceeded, instead of the application terminating abruptly. diff --git a/pages/docs/fine-tuning.mdx b/pages/docs/fine-tuning.mdx index e29f0fb29..9157edd88 100644 --- a/pages/docs/fine-tuning.mdx +++ b/pages/docs/fine-tuning.mdx @@ -15,10 +15,11 @@ Available export formats: - CSV - JSON - - ![Download generations in Langfuse - UI](https://static.langfuse.com/changelog-2023-09-18-export-generations.gif) - + ## SDKs/API diff --git a/pages/docs/get-started.mdx b/pages/docs/get-started.mdx index 6043eafc7..4d1f66fbb 100644 --- a/pages/docs/get-started.mdx +++ b/pages/docs/get-started.mdx @@ -285,7 +285,6 @@ This was a very brief introduction to get started with Langfuse. Explore all Lan **Test** - diff --git a/pages/docs/index.mdx b/pages/docs/index.mdx index 9d80410bb..7bedbdc83 100644 --- a/pages/docs/index.mdx +++ b/pages/docs/index.mdx @@ -6,79 +6,32 @@ faq-tags: [security] import { ProductUpdateSignup } from "@/components/productUpdateSignup"; -# What is Langfuse? +# Langfuse -> Langfuse is an open-source LLM engineering platform that helps teams collaboratively debug, analyze, and iterate on their LLM applications. +> Langfuse is an **open-source LLM engineering platform** ([GitHub](https://github.com/langfuse/langfuse)) that helps teams collaboratively debug, analyze, and iterate on their LLM applications. All platform features are natively integrated to accelerate the development workflow. -## Overview: Core platform features +
+Why Langfuse? -### Develop - -- **Observability:** Instrument your app and start ingesting traces to Langfuse ([Quickstart](/docs/get-started), [Tracing](/docs/tracing)) - - Track all LLM calls and all other relevant logics in your app - - [Async SDKs](/docs/sdk) for Python and JS/TS - - [`@observe()` decorator](/docs/sdk/python/decorators) for Python - - [Integrations](/docs/integrations/overview) for OpenAI SDK, Langchain, LlamaIndex, LiteLLM, Flowise and Langflow - - [API](https://api.reference.langfuse.com) -- **Langfuse UI:** Inspect and debug complex logs and user sessions ([Demo](/docs/demo), [Tracing](/docs/tracing), [Sessions](/docs/tracing-features/sessions)) -- **Prompt Management:** Manage, version and deploy prompts from within Langfuse ([Prompt Management](/docs/prompts/get-started)) -- **Prompt Engineering:** Test and iterate on your prompts with the [LLM Playground](/docs/playground) - - - -### Monitor - -- **Analytics:** Track metrics (LLM cost, latency, quality) and gain insights from dashboards & data exports ([Analytics](/docs/analytics), [Daily Metrics API](/docs/analytics/daily-metrics-api)) -- **Evals:** Collect and calculate scores for your LLM completions ([Evaluations](/docs/scores)) - - Run [model-based evaluations](/docs/scores/model-based-evals/overview) within Langfuse - - Collect [user feedback](/docs/scores/user-feedback) - - [Annotate](/docs/scores/annotation) observations in Langfuse - -### Test - -- **Experiments:** Track and test app behaviour before deploying a new version - - [Datasets](/docs/datasets/overview) let you test expected in and output pairs and benchmark performance before deployiong - - Track versions and releases in your application ([Experimentation](/docs/experimentation), [Prompt Management](/docs/prompts/get-started)) - -## Get started - - - - ![Quickstart icon (rocket)](/images/cards/code.svg) - - - ![Quickstart icon (rocket)](/images/cards/rocket.svg) - - - ![Interactive demo](/images/cards/robot.svg) - - - -## Why Langfuse? - -import { Callout } from "nextra/components"; - - - We wrote a concise manifesto on: [Why Langfuse?](/why) - - -- Open-source +- Most used open-source LLMOps platform ([blog post](/blog/2024-11-most-used-oss-llmops)) - Model and framework agnostic - Built for production -- Incrementally adoptable - start with a single LLM call or integration, then expand to full tracing of complex chains/agents -- Use the GET API to build downstream use cases +- Incrementally adoptable, start with one feature and expand to the full platform over time +- API-first, all features are available via API for custom integrations +- Optionally, Langfuse can be easily self-hosted -
+[Learn more](/why) about why teams choose Langfuse. -

- Challenges of building LLM applications and how Langfuse helps -

+
+ +
+Challenges of building LLM applications In implementing popular LLM use cases – such as retrieval augmented generation, agents using internal tools & APIs, or background extraction/classification jobs – developers face a unique set of challenges that is different from traditional software engineering: **Tracing & Control Flow**: Many valuable LLM apps rely on complex, repeated, chained or agentic calls to a foundation model. This makes debugging these applications hard as it is difficult to pinpoint the root cause of an issue in an extended control flow. -_With Langfuse_, it is simple to capture the full context of an LLM application. Our client SDKs and integrations are model and framework agnostic and able to capture the full context of an execution. Users commonly track LLM inference, embedding retrieval, API usage and any other interaction with internal systems that helps pinpoint problems. Users of frameworks such as Langchain benefit from automated instrumentation, otherwise the SDKs offer an ergonomic way to define the steps to be tracked by Langfuse. +_With Langfuse_, it is simple to capture the full context of an LLM application. Our client SDKs and integrations are model and framework agnostic and able to capture the full context of an execution. Users commonly track LLM inference, embedding retrieval, API usage and any other interaction with internal systems that helps pinpoint problems. Users of frameworks such as LangChain benefit from automated instrumentation, otherwise the SDKs offer an ergonomic way to define the steps to be tracked by Langfuse. **Output quality**: In traditional software engineering, developers are used to testing for the absence of exceptions and compliance with test cases. LLM-based applications are non-deterministic and there rarely is a hard-and-fast standard to assess quality. Understanding the quality of an application, especially at scale, and what ‘good’ evaluation looks like is a main challenge. This problem is accelerated by changes to hosted models that are outside of the user’s control. @@ -89,10 +42,19 @@ This poses a challenge: teams build and test their app with their own mental mod _With Langfuse_, users can classify inputs as part of their application and ingest this additional context to later analyze their users behavior in-depth. +
+ +
+Langfuse features along the development lifecycle + +Langfuse is a set of tools that helps accelerate the development workflow for LLM applications. You can use the features individually or collectively to build, test, and iterate on your applications. + +_Simplified lifecycle from PoC to production:_ + ![Langfuse Features along the development lifecycle](/images/docs/features-light.png) @@ -100,28 +62,137 @@ _With Langfuse_, users can classify inputs as part of their application and inge ![Langfuse Features along the development lifecycle](/images/docs/features-dark.png) -_Langfuse features along the development lifecycle_ - +
-## Updates + + +Find an overview of all Langfuse features below. For details, refer to the individual documentation pages. + + + +## LLM Application Observability + +Instrument your app and start ingesting traces to Langfuse, thereby tracking LLM calls and other relevant logic in your app such as retrieval, embedding, or agent actions. Inspect and debug complex logs and user sessions. + +[Learn more](/docs/tracing) about tracing in Langfuse or play with the [interactive demo](/docs/demo). + +
+Key benefits + +- **Full context:** Capture the complete execution flow including API calls, context, prompts, parallelism and more +- **Conversation/session view:** In multi-turn conversations, group interactions into sessions +- **User tracking:** Add your own identifiers to inspect traces from specific users +- **Cost tracking:** Monitor model usage and costs across your application +- **Quality insights:** Collect user feedback and identify low-quality outputs +- **Low overhead:** Designed for production with minimal performance impact +- **Best-in-class SDKs:** We offer best-in-class SDKs for Python, JS/TS for easy integration +- **Framework support:** Integrated with popular frameworks like OpenAI SDK, LangChain, and LlamaIndex +- **Multi-modal:** Support for tracing text, images and other modalities +- **Open source:** Fully open source with public API for custom integrations -Langfuse evolves quickly, check out the [changelog](/changelog) for the latest updates. +
+ +import TracingOverview from "@/components-mdx/tracing-overview-gifs.mdx"; + +
+ + +## Prompt Management + +[Langfuse Prompt Management](/docs/prompts) helps you centrally manage, version control, and collaboratively iterate on your prompts. + +
+Key benefits + +- **Decoupled from code:** Deploy new prompts without application redeployment +- **Version control:** Track changes and quickly rollback when needed +- **Performance optimized:** Client-side caching prevents latency or availability issues +- **Multi-format support:** Works with both text and chat prompts +- **Flexible access:** Edit via UI, SDKs, or API +- **Non-technical friendly:** Business users can update prompts via Console + +
+ +import PromptOverview from "@/components-mdx/prompt-overview-gifs.mdx"; + +
+ + +## Evaluations + +[Evaluations](/docs/scores) are the most important part of the LLM Application development workflow. Langfuse adapts to your needs and supports: + +- **LLM-as-a-judge:** Fully managed evaluators run on production or development traces within Langfuse +- **User feedback:** Collect feedback from your users and add it to traces in Langfuse +- **Manual labeling:** Annotate traces with human feedback in managed workflows +- **Custom:** Build your own evaluation pipelines via Langfuse APIs/SDKs for full flexibility + +import EvaluationOverview from "@/components-mdx/evaluation-overview-gifs.mdx"; + +
+ + +## Datasets + +Via [Langfuse Datasets](/docs/datasets) you can create test sets and benchmarks to evaluate the performance of your LLM application. + +- **Continuous improvement:** Create datasets from production edge cases to improve your application +- **Pre-deployment testing:** Benchmark new releases before deploying to production +- **Structured testing:** Run experiments on collections of inputs and expected outputs +- **Flexible evaluation:** Add custom evaluation metrics or use llm-as-a-judge +- **Integration ready:** Works with popular frameworks like LangChain and LlamaIndex + +import DatasetsOverview from "@/components-mdx/datasets-overview-gif.mdx"; + +
+ + +## Playground + +The [LLM Playground](/docs/playground) is a tool for testing and iterating on your prompts and model configurations, shortening the feedback loop and accelerating development. + +
+Key features + +- **Integrated:** Jump to the playground from prompt management and observability +- **Supports variables:** Use variables in your prompts to dynamically change the input +- **Broad model support:** OpenAI, Anthropic, Azure OpenAI, and Amazon Bedrock +- **Custom model configurations:** You can configure custom model endpoints and credentials + +
+ +
+ + +## Get started + + + + + + + +## Updates -Subscribe to the **mailing list** to get notified about new major features: +Langfuse evolves quickly, check out the [changelog](/changelog) for the latest updates. Subscribe to the **mailing list** to get notified about new major features: - + ## Get in touch -We actively develop Langfuse in [open source](/docs/open-source): +We actively develop Langfuse in [open source](/docs/open-source) together with our community: -- Contribute to and vote on the Langfuse [roadmap](/docs/roadmap). -- Ask questions through [GitHub Discussions](/gh-support) or private [support channels](/support). -- Report bugs using [GitHub Issues](/issue). +- Contribute and vote on the Langfuse [roadmap](/docs/roadmap). +- Ask questions on [GitHub Discussions](/gh-support) or private [support channels](/support). +- Report bugs via [GitHub Issues](/issue). - Chat with the Langfuse maintainers and community on [Discord](/discord). diff --git a/pages/docs/integrations/_meta.tsx b/pages/docs/integrations/_meta.tsx index 16cfec6cc..065be7159 100644 --- a/pages/docs/integrations/_meta.tsx +++ b/pages/docs/integrations/_meta.tsx @@ -17,5 +17,6 @@ export default { "mistral-sdk": "Mistral SDK", promptfoo: "Promptfoo", openwebui: "OpenWebUI", + lobechat: "LobeChat", other: "More Ways to Integrate", }; diff --git a/pages/docs/integrations/amazon-bedrock.md b/pages/docs/integrations/amazon-bedrock.md index 0cebf0230..489702444 100644 --- a/pages/docs/integrations/amazon-bedrock.md +++ b/pages/docs/integrations/amazon-bedrock.md @@ -1,6 +1,7 @@ --- title: Observability and Metrics for Amazon Bedrock description: Open source observability for Amazon Bedrock applications and the Bedrock SDK. +category: Integrations --- # Amazon Bedrock Integration diff --git a/pages/docs/integrations/dspy.md b/pages/docs/integrations/dspy.md index e62d71148..d1654f945 100644 --- a/pages/docs/integrations/dspy.md +++ b/pages/docs/integrations/dspy.md @@ -9,7 +9,7 @@ This cookbook demonstrates how to use [DSPy](https://github.com/stanfordnlp/dspy Langfuse can help with running DSPy projects by providing a centralized observability platform for debugging and monitoring. -**Note**: This is a community contributed integration ([initial PR](https://github.com/stanfordnlp/dspy/pull/1186) by [@xucailiang](https://github.com/xucailiang)). DSPy documentation covering the integration can be found [here](https://dspy-docs.vercel.app/api/language_model_clients/langfuse). If you encounter issues or want to contribute to the integration, please open an issue or PR. +**Note**: This is a community contributed integration ([initial PR](https://github.com/stanfordnlp/dspy/pull/1186) by [@xucailiang](https://github.com/xucailiang)). DSPy documentation can be found [here](https://dspy-docs.vercel.app/intro/). If you encounter issues or want to contribute to the integration, please open an issue or PR. --- diff --git a/pages/docs/integrations/langchain/tracing.mdx b/pages/docs/integrations/langchain/tracing.mdx index 01388f83f..4640edf06 100644 --- a/pages/docs/integrations/langchain/tracing.mdx +++ b/pages/docs/integrations/langchain/tracing.mdx @@ -11,7 +11,7 @@ import GetStartedLangchainJsEnv from "@/components-mdx/get-started-langchain-js- # Observability & Tracing for Langchain (Python & JS/TS) -[Langfuse Tracing](/docs/tracing) integrates with Langchain using Langchain Callbacks ([Python](https://python.langchain.com/docs/modules/callbacks/), [JS](https://js.langchain.com/docs/modules/callbacks/)). Thereby, the Langfuse SDK automatically creates a nested trace for every run of your Langchain applications. This allows you to log, analyze and debug your LangChain application. +[Langfuse Tracing](/docs/tracing) integrates with Langchain using Langchain Callbacks ([Python](https://python.langchain.com/docs/how_to/#callbacks), [JS](https://js.langchain.com/docs/how_to/#callbacks)). Thereby, the Langfuse SDK automatically creates a nested trace for every run of your Langchain applications. This allows you to log, analyze and debug your LangChain application. ```typescript @@ -460,7 +461,8 @@ const llm = new AzureChatOpenAI({ azureOpenAIApiDeploymentName: "my-gpt-4o-deployment", model: "gpt-4o", }); -``` +```` + diff --git a/pages/docs/integrations/langflow.mdx b/pages/docs/integrations/langflow.mdx index 61ea95a89..783099353 100644 --- a/pages/docs/integrations/langflow.mdx +++ b/pages/docs/integrations/langflow.mdx @@ -1,21 +1,33 @@ --- title: Observability and Tracing for Langflow -description: Open source observability for Langflow applications. Automatically capture detailed traces and metrics for every request. +description: Enhance your Langflow applications with open-source observability and tracing using Langfuse. Automatically capture detailed traces and metrics for every request to optimize and debug your Langchain application flows. --- # ⛓️ Langflow Integration -**Langflow** ([GitHub](https://github.com/logspace-ai/langflow)) is a UI for LangChain, designed with react-flow to provide an effortless way to experiment and prototype flows. +**[Langflow](https://www.langflow.org/)** ([GitHub](https://github.com/logspace-ai/langflow)) is a UI for LangChain, designed with react-flow to provide an effortless way to experiment and prototype flows. With the native integration (since langflow v1.0.17), you can use Langflow to quickly create complex LLM applications in no-code and then use Langfuse to monitor and improve them. ## Integration + +_[Video](https://www.youtube.com/watch?v=SA9gGbzwNGU) guide on how to integrate Langflow with Langfuse (published by Langflow)_ + -### Obtain Langfuse API keys +### Get Langfuse API keys - + 1. Create account and project on @@ -40,23 +52,24 @@ With the native integration (since langflow v1.0.17), you can use Langflow to qu ```sh # API keys from project settings in Langfuse -export LANGFLOW_LANGFUSE_SECRET_KEY=secret_key -export LANGFLOW_LANGFUSE_PUBLIC_KEY=public_key +export LANGFUSE_SECRET_KEY=sk-lf... +export LANGFUSE_PUBLIC_KEY=pk-lf... -# Optionally, set the host, defaults to Langfuse Cloud -# LANGFLOW_LANGFUSE_HOST=http://localhost:3000 +export LANGFUSE_HOST="https://cloud.langfuse.com" # 🇪🇺 for EU data region +# export LANGFUSE_HOST="https://cloud.langfuse.com" # 🇺🇸 for US data region +# export LANGFUSE_HOST="http://localhost:3000" # 🏠 for self-hosters # Install Langflow pip install langflow -# Run Langflow -langflow run +# Start Langflow in the same terminal or environment where you set the environment variables: +python -m langflow run ``` Alternatively, you can run the Langflow CLI command with the environment variables set: ``` -LANGFLOW_LANGFUSE_SECRET_KEY=secret_key LANGFLOW_LANGFUSE_PUBLIC_KEY=public_key langflow +LANGFUSE_SECRET_KEY=secret_key LANGFUSE_PUBLIC_KEY=public_key LANGFUSE_HOST="http://localhost:3000" langflow ``` @@ -82,8 +95,9 @@ services: ports: - "7860:7860" environment: -+ - LANGFLOW_LANGFUSE_SECRET_KEY=secret_key -+ - LANGFLOW_LANGFUSE_PUBLIC_KEY=public_key ++ - LANGFUSE_SECRET_KEY=secret_key ++ - LANGFUSE_PUBLIC_KEY=public_key ++ - LANGFUSE_HOST="https://cloud.langfuse.com" command: langflow run --host 0.0.0.0 ``` @@ -97,9 +111,13 @@ docker-compose up --build -### Monitoring in Langfuse +### See your traces in Langfuse Now, when you use Langflow's chat or API, you can view the trace of your conversations in Langfuse. + +![Langflow traces in Langfuse](/images/blog/langflow-langfuse/langflow-example-trace.png) + +_[Example Langflow trace in the Langfuse UI](https://cloud.langfuse.com/project/cm0nywmaa005c3ol2msoisiho/traces/f016ae6d-4527-43f5-93ba-9d78388cd3d9?timestamp=2024-11-15T10%3A22%3A56.378Z&observation=c3680212-31f0-46e2-9310-add4352e4cc7)_ @@ -120,9 +138,9 @@ services: - "7860:7860" environment: + # Tokens are to be created in Langfuse, then copy-pasted here. Then restart docker-compose. -+ - LANGFLOW_LANGFUSE_SECRET_KEY=sk-lf-... -+ - LANGFLOW_LANGFUSE_PUBLIC_KEY=pk-lf-... -+ - LANGFLOW_LANGFUSE_HOST=http://langfuse-server:3000 ++ - LANGFUSE_SECRET_KEY=sk-lf-... ++ - LANGFUSE_PUBLIC_KEY=pk-lf-... ++ - LANGFUSE_HOST="http://langfuse-server:3000" command: langflow run --host 0.0.0.0 # https://github.com/langfuse/langfuse/blob/main/docker-compose.yml @@ -159,7 +177,7 @@ volumes: To test the connectivity between Langflow and Langfuse, run the following command: ```sh -docker compose exec langflow python -c "import requests, os; addr = os.environ.get('LANGFLOW_LANGFUSE_HOST'); print(addr); res = requests.get(addr, timeout=5); print(res.status_code)" +docker compose exec langflow python -c "import requests, os; addr = os.environ.get('LANGFUSE_HOST'); print(addr); res = requests.get(addr, timeout=5); print(res.status_code)" # which should output the following: # http://langfuse-server:3000 diff --git a/pages/docs/integrations/llama-index/deprecated-llama-index-callback.mdx b/pages/docs/integrations/llama-index/deprecated-llama-index-callback.mdx index 11cd89302..e8f906e0d 100644 --- a/pages/docs/integrations/llama-index/deprecated-llama-index-callback.mdx +++ b/pages/docs/integrations/llama-index/deprecated-llama-index-callback.mdx @@ -6,8 +6,9 @@ description: Open source observability for LlamaIndex. Automatically capture det # (Deprecated) Callback-based LlamaIndex Integration - This integration is deprecated. We recommend using the new instrumentation-based - integration with Langfuse as described [here](/docs/integrations/llama-index/get-started). + This integration is deprecated. We recommend using the new + instrumentation-based integration with Langfuse as described + [here](/docs/integrations/llama-index/get-started). ## Add Langfuse to your LlamaIndex application @@ -69,16 +70,16 @@ Learn more about queuing and batching of events [here](/docs/tracing). You can update trace parameters at any time to add additional context to a trace, such as a user ID, session ID, or tags. See the [Python SDK Trace documentation](/docs/sdk/python#traces) for more information. All _subsequent_ traces will include these set parameters. -| Property | Description | -| ------------- | ------------------------------------------------------------------------- | -| `name` | Identify a specific type of trace, e.g. a use case or functionality. | -| `metadata` | Additional information that you want to see in Langfuse. Can be any JSON. | -| `session_id` | The current [session](/docs/tracing-features/sessions). | -| `user_id` | The current [user_id](/docs/tracing-features/users). | -| `tags` | [Tags](/docs/tracing-features/tags) to categorize and filter traces. | -| `version` | The specified version to trace [experiments](/docs/experimentation). | -| `release` | The specified release to trace [experiments](/docs/experimentation). | -| `sample_rate` | [Sample rate](/docs/tracing-features/sampling) for tracing. | +| Property | Description | +| ------------- | -------------------------------------------------------------------------------------- | +| `name` | Identify a specific type of trace, e.g. a use case or functionality. | +| `metadata` | Additional information that you want to see in Langfuse. Can be any JSON. | +| `session_id` | The current [session](/docs/tracing-features/sessions). | +| `user_id` | The current [user_id](/docs/tracing-features/users). | +| `tags` | [Tags](/docs/tracing-features/tags) to categorize and filter traces. | +| `release` | The [release](/docs/tracing-features/releases-and-versioning) tag of your application. | +| `version` | The [version](/docs/tracing-features/releases-and-versioning) of your application. | +| `sample_rate` | [Sample rate](/docs/tracing-features/sampling) for tracing. | ```python {11-15} from llama_index.core import Settings @@ -176,4 +177,4 @@ def my_func(): > - If you run this in a Jupyter Notebook, you need to run `set_root` in the same cell as your LlamaIndex code. - \ No newline at end of file + diff --git a/pages/docs/integrations/llama-index/example-python-instrumentation-module.md b/pages/docs/integrations/llama-index/example-python-instrumentation-module.md index 14a998568..6874a2273 100644 --- a/pages/docs/integrations/llama-index/example-python-instrumentation-module.md +++ b/pages/docs/integrations/llama-index/example-python-instrumentation-module.md @@ -13,12 +13,14 @@ This is a simple cookbook that demonstrates how to use the [LlamaIndex Langfuse Make sure you have both `llama-index` and `langfuse` installed. + ```python %pip install langfuse llama_index --upgrade ``` Initialize the integration. Get your API keys from the Langfuse project settings. This example uses OpenAI for embeddings and chat completions. You can also use any other model supported by LlamaIndex. + ```python import os @@ -35,6 +37,7 @@ os.environ["OPENAI_API_KEY"] = "" Register the Langfuse `LlamaIndexInstrumentor`: + ```python from langfuse.llama_index import LlamaIndexInstrumentor @@ -44,6 +47,7 @@ instrumentor.start() ## Index + ```python # Example context, thx ChatGPT from llama_index.core import Document @@ -56,6 +60,7 @@ Throughout his career, Silverstein has been celebrated for his diverse range of """) ``` + ```python # Example index construction + LLM query from llama_index.core import VectorStoreIndex @@ -65,6 +70,7 @@ index = VectorStoreIndex.from_documents([doc1,doc2]) ## Query + ```python # Query response = index.as_query_engine().query("What did he do growing up?") @@ -73,8 +79,10 @@ print(response) He made home movies using a Super 8 camera. + Example trace: https://cloud.langfuse.com/project/cloramnkj0002jz088vzn1ja4/traces/d933c7cc-20bf-4db3-810d-bab1c8d9a2a1 + ```python # Chat response = index.as_chat_engine().chat("What did he do growing up?") @@ -83,6 +91,7 @@ print(response) He made home movies using a Super 8 camera growing up. + Example trace: https://cloud.langfuse.com/project/cloramnkj0002jz088vzn1ja4/traces/4e285b8f-9789-4cf0-a8b4-45473ac420f1 ![LlamaIndex Chat Engine Trace in Langfuse (via instrumentation module)](https://langfuse.com/images/cookbook/integration_llama-index_instrumentation_chatengine_trace.png) @@ -91,6 +100,7 @@ Example trace: https://cloud.langfuse.com/project/cloramnkj0002jz088vzn1ja4/trac You can use the `instrumentor.observe` context manager to manage trace IDs, set custom trace properties, and access the trace client for later scoring. + ```python with instrumentor.observe(user_id='my-user', session_id='my-session') as trace: response = index.as_query_engine().query("What did he do growing up?") diff --git a/pages/docs/integrations/llama-index/get-started.mdx b/pages/docs/integrations/llama-index/get-started.mdx index 5e5329904..82ad780c3 100644 --- a/pages/docs/integrations/llama-index/get-started.mdx +++ b/pages/docs/integrations/llama-index/get-started.mdx @@ -11,7 +11,7 @@ description: Open source observability for LlamaIndex. Automatically capture det Langfuse offers a simple integration for automatic capture of [traces](/docs/tracing) and metrics generated in LlamaIndex applications. **Any feedback?** Let us know on Discord or GitHub. This is a new integration, and we'd love to hear your thoughts. -This integration is based on the [LlamaIndex instrumentation module](https://docs.llamaindex.ai/en/stable/module_guides/observability/instrumentation/) which allows for seamless instrumentation of LlamaIndex applications. In particular, one can handle events and track spans using both custom logic as well as those offered in the module. Users can also define their own events and specify where and when in the code logic that they should be emitted. +This integration is based on the [LlamaIndex instrumentation module](https://docs.llamaindex.ai/en/stable/module_guides/observability/instrumentation/) which allows for seamless instrumentation of LlamaIndex applications. In particular, one can handle events and track spans using both custom logic as well as those offered in the module. Users can also define their own events and specify where and when in the code logic that they should be emitted. If you are interested in the deprecated callback-based integration, see the [deprecated LlamaIndex callback integration](/docs/integrations/llama-index/deprecated-llama-index-callback). @@ -26,10 +26,7 @@ If you are interested in the deprecated callback-based integration, see the [dep aspectRatio={16 / 9.86} gifStyle /> - - _Example LlamaIndex trace in Langfuse. See a full video demo - [here](/guides/videos/llama-index)._ - +_Example LlamaIndex trace in Langfuse._ ## Add Langfuse to your LlamaIndex application @@ -47,18 +44,24 @@ At the root of your LlamaIndex application, register Langfuse's `LlamaIndexInstr from langfuse.llama_index import LlamaIndexInstrumentor # Get your keys from the Langfuse project settings page and set them as environment variables + # or pass them as arguments when initializing the instrumentor + instrumentor = LlamaIndexInstrumentor() # Automatically trace all LlamaIndex operations + instrumentor.start() # ... your LlamaIndex index creation ... + index.as_query_engine().query("What is the capital of France?") # Flush events to langfuse + instrumentor.flush() -``` + +```` @@ -80,9 +83,9 @@ trace.score(name="my-score", value=0.5) # Flush events to langfuse instrumentor.flush() -``` - +```` + @@ -121,17 +124,17 @@ Learn more about queuing and batching of events [here](/docs/tracing). ### Custom trace parameters -You can update trace parameters at any time via the `observe` context manager to set a custom trace ID or add additional context to the trace, such as a user ID, session ID, or tags. See the [Python SDK Trace documentation](/docs/sdk/python#traces) for more information. +You can update trace parameters at any time via the `observe` context manager to set a custom trace ID or add additional context to the trace, such as a user ID, session ID, or tags. See the [Python SDK Trace documentation](/docs/sdk/python#traces) for more information. -| Property | Description | -| ------------- | ------------------------------------------------------------------------- | -| `name` | Identify a specific type of trace, e.g. a use case or functionality. | -| `metadata` | Additional information that you want to see in Langfuse. Can be any JSON. | -| `session_id` | The current [session](/docs/tracing-features/sessions). | -| `user_id` | The current [user_id](/docs/tracing-features/users). | -| `tags` | [Tags](/docs/tracing-features/tags) to categorize and filter traces. | -| `version` | The specified version to trace [experiments](/docs/experimentation). | -| `release` | The specified release to trace [experiments](/docs/experimentation). | +| Property | Description | +| ------------ | -------------------------------------------------------------------------------------- | +| `name` | Identify a specific type of trace, e.g. a use case or functionality. | +| `metadata` | Additional information that you want to see in Langfuse. Can be any JSON. | +| `session_id` | The current [session](/docs/tracing-features/sessions). | +| `user_id` | The current [user_id](/docs/tracing-features/users). | +| `tags` | [Tags](/docs/tracing-features/tags) to categorize and filter traces. | +| `release` | The [release](/docs/tracing-features/releases-and-versioning) tag of your application. | +| `version` | The [version](/docs/tracing-features/releases-and-versioning) of your application. | ```python from langfuse.llama_index import LlamaIndexInstrumentor @@ -182,11 +185,11 @@ def llama_index_fn(question: str): return response ``` + -If you have an existing Langfuse trace or span object, you can set it as the root observation for your `LlamaIndexInstrumentor`. - +If you have an existing Langfuse trace or span object, you can set it as the root observation for your `LlamaIndexInstrumentor`. ```python from langfuse import Langfuse @@ -236,6 +239,31 @@ trace.update(metadata={"my-key": "my-value"}) instrumentor.flush() ``` +## Troubleshooting + +### Streamed OpenAI responses and token usage + +OpenAI returns token usage only if `stream_options={"include_usage": True}` is passed in the streamed completion query. LlamaIndex does not pass this option by default. If you miss the token usage on your streamed responses, please instantiate the OpenAI client as follows: + +```python +from llama_index.llms.openai import OpenAI +from langfuse.llama_index import LlamaIndexInstrumentor + +instrumentor = LlamaIndexInstrumentor() + +llm = OpenAI(additional_kwargs={"stream_options": {"include_usage": True}}) + +with instrumentor.observe(): + # ... your LlamaIndex index creation ... + + index.as_query_engine(llm=llm).query("What is the capital of France?") + +# Flush events to langfuse +instrumentor.flush() +``` + +The streamed token usage should now be captured on the generation. + ## GitHub Discussions import { GhDiscussionsPreview } from "@/components/gh-discussions/GhDiscussionsPreview"; diff --git a/pages/docs/integrations/lobechat.mdx b/pages/docs/integrations/lobechat.mdx new file mode 100644 index 000000000..ef1681eda --- /dev/null +++ b/pages/docs/integrations/lobechat.mdx @@ -0,0 +1,84 @@ +--- +title: Observability and Tracing for LobeChat +description: Enhance your LobeChat applications with open-source observability and tracing using Langfuse. Automatically capture detailed traces and metrics for every request to optimize and debug your chats. +--- + +# Langfuse Integration with LobeChat + +## What is LobeChat? + +[LobeChat](https://lobehub.com/) is an **[open-source](https://github.com/lobehub/lobe-chat) LLM chat platform** that seamlessly integrates with various AI models and tools, providing users with an intuitive interface to interact with advanced language technologies. + +## What is Langfuse? + +[Langfuse](https://langfuse.com/) is one of the most used **open-source LLM Observability platforms**. By enabling the Langfuse integration, you can trace your application data with Langfuse to develop, monitor, and improve the use of LobeChat, including: + +- Application [traces](/docs/tracing) +- Usage patterns +- Cost data by user and model +- [Evaluations](/docs/scores/overview) + +## Get Started + + + +### Set up Langfuse + +Get your Langfuse API key by signing up for [Langfuse Cloud](https://cloud.langfuse.com) or [self-hosting](/docs/deployment/self-host) Langfuse. + +### Set up LobeChat + +There are multiple ways to [self-host LobeChat](https://lobehub.com/docs/self-hosting/start). For this example, we will use the Docker Desktop deployment. + + + + +Before deploying LobeChat, set the following four environment variables with the Langfuse API keys you created in the previous step. + +```sh +ENABLE_LANGFUSE = '1' +LANGFUSE_SECRET_KEY = 'sk-lf...' +LANGFUSE_PUBLIC_KEY = 'pk-lf...' +LANGFUSE_HOST = 'https://cloud.langfuse.com' +``` + + + + +Before running the Docker container, set the environment variables in the Docker Desktop with the Langfuse API keys you created in the previous step. + + +![Environment Variables in Docker Desktop](/images/docs/lobechat-docker-desktop-env.png) + + + + + +### Activate Analytics in Settings + +Once you have LobeChat running, navigate to the **About** tab in the **Settings** and activate analytics. This is necessary for traces to be sent to Langfuse. + + +![LobeChat Settings](/images/docs/lobechat-settings.png) + + +### See your traces in Langfuse + +After setting your LLM model key, you can start interacting with your LobeChat application. + + +![LobeChat Conversation](/images/docs/lobechat-converstation.png) + + +All conversations in the chat are automatically traced and sent to Langfuse. You can view the traces in the [Traces section](/docs/tracing) of the Langfuse platform. + + +![LobeChat Example Trace](/images/docs/lobechat-example-trace.png) + +_[Example trace in the Langfuse UI](https://cloud.langfuse.com/project/cloramnkj0002jz088vzn1ja4/traces/63e9246d-3f22-4e45-936d-b0c4ccf55a1e?timestamp=2024-11-26T17%3A00%3A02.028Z&observation=7ea75a0c-d9d1-425c-9b88-27561c63b413)_ + + + +## Feedback + +If you have any feedback or requests, please create a GitHub [Issue](/issue) or share your work with the community on [Discord](https://discord.langfuse.com/). \ No newline at end of file diff --git a/pages/docs/integrations/openai/js/get-started.mdx b/pages/docs/integrations/openai/js/get-started.mdx index a59f6c53d..24e95b4c0 100644 --- a/pages/docs/integrations/openai/js/get-started.mdx +++ b/pages/docs/integrations/openai/js/get-started.mdx @@ -209,6 +209,33 @@ Resulting generations are now linked to the prompt in Langfuse, allowing you to When working with chat prompts, you must typecast the compiled prompt messages as `OpenAI.ChatCompletionMessageParam[]` or use a type-guard utility function as Langfuse message roles can be arbitrary strings whereas the OpenAI type definition is more restrictive. +### OpenAI token usage on streamed responses + +OpenAI returns the token usage on streamed responses only when in `stream_options` the `include_usage` parameter is set to `true`. If you would like to benefit from OpenAI's directly provided token usage, you can set `{ include_usage: true }` in the `stream_options` argument. + +```typescript /{"include_usage": True}/ +import OpenAI from "openai"; +import { observeOpenAI } from "langfuse"; + +const openai = observeOpenAI(new OpenAI()); + +const stream = await openai.chat.completions.create({ + model: "gpt-4", + messages: [{ role: "user", content: "How are you?" }], + stream: true, + stream_options: { include_usage: true } +}); + +let result = ""; + +for await (const chunk of stream) { + // Check if chunk choices are not empty. OpenAI returns token usage in a final chunk with an empty choices list. + result += chunk.choices[0]?.delta?.content || ""; +} + +await openai.flushAsync(); +``` + ### Nested traces [Langfuse Tracing](/docs/tracing) groups multiple observations (can be any LLM or non-LLM calls) into a single trace. This integration by default creates a single trace for each OpenAI call. diff --git a/pages/docs/integrations/openai/python/get-started.mdx b/pages/docs/integrations/openai/python/get-started.mdx index 8f9a5b76f..f57e3ec83 100644 --- a/pages/docs/integrations/openai/python/get-started.mdx +++ b/pages/docs/integrations/openai/python/get-started.mdx @@ -467,6 +467,36 @@ _Note that you need to provide `trace_id` and `parent_observation_id` to each ge +### OpenAI token usage on streamed responses + +OpenAI returns the token usage on streamed responses only when in `stream_options` the `include_usage` parameter is set to `True`. If you would like to benefit from OpenAI's directly provided token usage, you can set `{"include_usage": True} in the `stream_options` argument. + + + When using streaming responses with `include_usage=True`, OpenAI returns token usage information in a final chunk that has an empty `choices` list. Make sure your application properly handles these empty `choices` chunks to ensure accurate token usage tracking by not trying to access some index in the `choices` list without checking if it is non-empty. + + +```python /stream_options={"include_usage": True}/ +from langfuse.openai import openai + +client = openai.OpenAI() + +stream = client.chat.completions.create( + model="gpt-4o", + messages=[{"role": "user", "content": "How are you?"}], + stream=True, + stream_options={"include_usage": True}, +) + +result = "" + +for chunk in stream: + # Check if chunk choices are not empty. OpenAI returns token usage in a final chunk with an empty choices list. + if chunk.choices: + result += chunk.choices[0].delta.content or "" + +openai.flush_langfuse() +``` + ### OpenAI Beta APIs Since OpenAI beta APIs are changing frequently across versions, we fully support only the stable APIs in the OpenAI SDK. If you are using a beta API, you can still use the Langfuse SDK by wrapping the OpenAI SDK manually with the `@observe()` [decorator](/docs/sdk/python/decorators). diff --git a/pages/docs/integrations/openwebui.mdx b/pages/docs/integrations/openwebui.mdx index 986a80027..b86f44fed 100644 --- a/pages/docs/integrations/openwebui.mdx +++ b/pages/docs/integrations/openwebui.mdx @@ -7,11 +7,12 @@ description: "Learn how to integrate Langfuse with OpenWebUI for detailed monito [OpenWebUI](https://openwebui.com/) is a self-hosted WebUI that operates offline and supports various LLM runners, including Ollama and OpenAI-compatible APIs. OpenWebUI is open source and can easily be deployed on your own infrastructure. -_Demo of OpenWebUI_ +_How to integrate Langfuse with OpenWebUI_ - - OpenWebUI - + Langfuse offers open source observability and evaluations for OpenWebUI. By enabling the Langfuse integration, you can trace your application data with Langfuse to develop, monitor, and improve the use of OpenWebUI, including: diff --git a/pages/docs/integrations/overview.mdx b/pages/docs/integrations/overview.mdx index 9f2636cd9..b59a7a50e 100644 --- a/pages/docs/integrations/overview.mdx +++ b/pages/docs/integrations/overview.mdx @@ -39,6 +39,7 @@ Objective: | [Dify](/docs/integrations/dify) | Chat/Agent UI | Open source LLM app development platform with no-code builder. | | [OpenWebUI](/docs/integrations/openwebui) | Chat/Agent UI | Self-hosted LLM Chat web ui supporting various LLM runners including self-hosted and local models. | | [Promptfoo](/docs/integrations/promptfoo) | Tool | Open source LLM testing platform. | +| [LobeChat](/docs/integrations/lobechat) | Chat/Agent UI | Open source chatbot platform. | Unsure which integration to choose? Ask us on [Discord](/discord) or in the chat. diff --git a/pages/docs/integrations/vercel-ai-sdk.mdx b/pages/docs/integrations/vercel-ai-sdk.mdx index db6518609..609dede49 100644 --- a/pages/docs/integrations/vercel-ai-sdk.mdx +++ b/pages/docs/integrations/vercel-ai-sdk.mdx @@ -78,7 +78,7 @@ new LangfuseExporter({ -Now you need to resister this exporter via the OpenTelemetry SDK. +Now you need to register this exporter via the OpenTelemetry SDK. @@ -174,10 +174,78 @@ We created a sample repository ([langfuse/langfuse-vercel-ai-nextjs-example](htt ## Customization +### Group multiple executions in one trace + +You can open a Langfuse trace and pass the trace ID to AI SDK calls to group multiple execution spans under one trace. The passed name in functionId will be the root span name of the respective execution. + +```typescript +import { randomUUID } from "crypto"; +import { Langfuse } from "langfuse"; + +const langfuse = new Langfuse(); +const parentTraceId = randomUUID(); + +langfuse.trace({ + id: parentTraceId, + name: "holiday-traditions", +}); + +for (let i = 0; i < 3; i++) { + const result = await generateText({ + model: openai("gpt-3.5-turbo"), + maxTokens: 50, + prompt: "Invent a new holiday and describe its traditions.", + experimental_telemetry: { + isEnabled: true, + functionId: `holiday-tradition-${i}`, + metadata: { + langfuseTraceId: parentTraceId, + langfuseUpdateParent: false, // Do not update the parent trace with execution results + }, + }, + }); + + console.log(result.text); +} + +await langfuse.flushAsync(); +await sdk.shutdown(); +``` + +The resulting trace hierarchy will be: + +![Vercel nested trace in Langfuse UI](/images/docs/vercel-nested-trace.png) + ### Disable Tracking of Input/Output By default, the exporter captures the input and output of each request. You can disable this behavior by setting the `recordInputs` and `recordOutputs` options to `false`. +### Link Langfuse prompts to traces + +You can link Langfuse prompts to Vercel AI SDK generations by setting the `langfusePrompt` property in the `metadata` field: + +```typescript +import { generateText } from "ai"; +import { Langfuse } from "langfuse"; + +const langfuse = new Langfuse(); + +const fetchedPrompt = await langfuse.getPrompt("my-prompt"); + +const result = await generateText({ + model: openai("gpt-4o"), + prompt: fetchedPrompt.prompt, + experimental_telemetry: { + isEnabled: true, + metadata: { + langfusePrompt: fetchedPrompt.toJSON(), + }, + }, +}); +``` + +The resulting generation will have the prompt linked to the trace in Langfuse. Learn more about prompts in Langfuse [here](/docs/prompts/get-started). + ### Pass Custom Attributes All of the `metadata` fields are automatically captured by the exporter. You can also pass custom trace attributes to e.g. track users or sessions. @@ -217,6 +285,10 @@ new LangfuseExporter({ debug: true }); - set `skipOpenTelemetrySetup: true` in Sentry.init - follow Sentry's docs on how to manually set up Sentry with OTEL +### Short-lived environments + +In short-lived environments such as Vercel Cloud Functions, AWS Lambdas etc. you may force an export and flushing of spans after function execution and prior to environment freeze or shutdown by awaiting a call to the `forceFlush` method on the LangfuseExporter instance. + ## Learn more See the [telemetry documentation](https://sdk.vercel.ai/docs/ai-sdk-core/telemetry) of the Vercel AI SDK for more information. diff --git a/pages/docs/playground.mdx b/pages/docs/playground.mdx index a75f2baa8..f13ed934e 100644 --- a/pages/docs/playground.mdx +++ b/pages/docs/playground.mdx @@ -42,7 +42,7 @@ You can either start from scratch or jump into the playground from an existing p className="max-w-3xl" /> -## OpenAI Playground & Anthropic Playground +## Supported Models Currently the playground supports the following models: @@ -67,9 +67,11 @@ export function ModelList() { "gpt-3.5-turbo", ]; const anthropicModels = [ + "claude-3-5-sonnet-20241022", "claude-3-5-sonnet-20240620", "claude-3-opus-20240229", "claude-3-sonnet-20240229", + "claude-3-5-haiku-20241022", "claude-3-haiku-20240307", "claude-2.1", "claude-2.0", @@ -91,6 +93,8 @@ export function ModelList() { +The playground also supports all Amazon Bedrock models. + ## GitHub Discussions import { GhDiscussionsPreview } from "@/components/gh-discussions/GhDiscussionsPreview"; diff --git a/pages/docs/prompts/_meta.tsx b/pages/docs/prompts/_meta.tsx index 6e350569d..eae6b5072 100644 --- a/pages/docs/prompts/_meta.tsx +++ b/pages/docs/prompts/_meta.tsx @@ -3,4 +3,8 @@ export default { "example-openai-functions": "Example OpenAI Functions", "example-langchain": "Example Langchain (Py)", "example-langchain-js": "Example Langchain (JS)", + "prompt-experiments": { + title: "Prompt Experiments ↗", + href: "/docs/datasets/prompt-experiments", + }, }; diff --git a/pages/docs/prompts/get-started.mdx b/pages/docs/prompts/get-started.mdx index 25394df93..c0b7a4ec2 100644 --- a/pages/docs/prompts/get-started.mdx +++ b/pages/docs/prompts/get-started.mdx @@ -1,4 +1,5 @@ --- +title: Open Source Prompt Management description: Manage and version your prompts in Langfuse (open source). When retrieved, they are cached by the Langfuse SDKs for low latency. --- @@ -6,6 +7,10 @@ description: Manage and version your prompts in Langfuse (open source). When ret Use Langfuse to effectively **manage** and **version** your prompts. Langfuse prompt management is a **Prompt CMS** (Content Management System). +import PromptOverview from "@/components-mdx/prompt-overview-gifs.mdx"; + + + ## What is prompt management? **Prompt management is a systematic approach to storing, versioning and retrieving prompts in LLM applications.** Key aspects of prompt management include version control, decoupling prompts from code, monitoring, logging and optimizing prompts as well as integrating prompts with the rest of your application and tool stack. @@ -73,8 +78,8 @@ Recommended readings: Depending on the scale of your experiments, there are different approaches you can take: 1. [Playground](/docs/playground) for single prompt experiments in UI. -2. [Experiments](/docs/experimentation) for A/B testing and structured experiments in production. -3. [Datasets](/docs/datasets) for offline/dev benchmarking prompts or applications on a set of reference inputs. +2. [Releases and Versioning](/docs/tracing-features/releases-and-versioning) for A/B testing and structured experiments in production. +3. [Datasets](/docs/datasets/overview) for offline/dev benchmarking prompts or applications on a set of reference inputs. @@ -116,92 +121,9 @@ Depending on the scale of your experiments, there are different approaches you c If you already have a prompt with the same `name`, the prompt will be added as a new version. - - - - - - - - -```python -# Create a text prompt -langfuse.create_prompt( - name="movie-critic", - type="text", - prompt="As a {{criticlevel}} movie critic, do you like {{movie}}?", - labels=["production"], # directly promote to production - config={ - "model": "gpt-3.5-turbo", - "temperature": 0.7, - "supported_languages": ["en", "fr"], - }, # optionally, add configs (e.g. model parameters or model tools) or tags -) - -# Create a chat prompt -langfuse.create_prompt( - name="movie-critic-chat", - type="chat", - prompt=[ - { role: "system", content: "You are an {{criticlevel}} movie critic" }, - { role: "user", content: "Do you like {{movie}}?" }, - ], - labels=["production"], # directly promote to production - config={ - "model": "gpt-3.5-turbo", - "temperature": 0.7, - "supported_languages": ["en", "fr"], - }, # optionally, add configs (e.g. model parameters or model tools) or tags -) -``` - -If you already have a prompt with the same name, the prompt will be added as a new version. +import PromptCreate from "@/components-mdx/prompt-create.mdx"; - - - - -```ts -// Create a text prompt -await langfuse.createPrompt({ - name: "movie-critic", - type: "text", - prompt: "As a {{criticlevel}} critic, do you like {{movie}}?", - labels: ["production"], // directly promote to production - config: { - model: "gpt-3.5-turbo", - temperature: 0.7, - supported_languages: ["en", "fr"], - }, // optionally, add configs (e.g. model parameters or model tools) or tags -}); - -// Create a chat prompt -await langfuse.createPrompt({ - name: "movie-critic-chat", - type: "chat", - prompt: [ - { role: "system", content: "You are an {{criticlevel}} movie critic" }, - { role: "user", content: "Do you like {{movie}}?" }, - ], - labels: ["production"], // directly promote to production - config: { - model: "gpt-3.5-turbo", - temperature: 0.7, - supported_languages: ["en", "fr"], - }, // optionally, add configs (e.g. model parameters or model tools) or tags -}); -``` - -If you already have a prompt with the same name, the prompt will be added as a new version. - - - - + ### Use prompt @@ -492,7 +414,7 @@ Add the prompt object to the `generation` call in the SDKs to link the generatio This is currently unavailable when using the LlamaIndex integration. - + Decorators @@ -674,6 +596,32 @@ await chatChain.invoke({ movie: "Dune 2", criticlevel: "expert" }); + + +Link Langfuse prompts to Vercel AI SDK generations by setting the `langfusePrompt` property in the `metadata` field: + +```typescript /langfusePrompt: fetchedPrompt.toJSON()/ +import { generateText } from "ai"; +import { Langfuse } from "langfuse"; + +const langfuse = new Langfuse(); + +const fetchedPrompt = await langfuse.getPrompt("my-prompt"); + +const result = await generateText({ + model: openai("gpt-4o"), + prompt: fetchedPrompt.prompt, + experimental_telemetry: { + isEnabled: true, + metadata: { + langfusePrompt: fetchedPrompt.toJSON(), + }, + }, +}); +``` + + + ### Rollbacks (optional) diff --git a/pages/docs/query-traces.mdx b/pages/docs/query-traces.mdx index 57c117b46..b64068298 100644 --- a/pages/docs/query-traces.mdx +++ b/pages/docs/query-traces.mdx @@ -122,11 +122,6 @@ GET /api/public/scores/:scoreId ## Export via UI [#ui] - - This is currently only available for the `generations` table in the UI. We're - working on adding more export options for other objects. - - All filters applied to the table will be applied to the export. Available export formats: @@ -134,11 +129,11 @@ Available export formats: - CSV - JSON - - ![Download generations in Langfuse - UI](https://static.langfuse.com/changelog-2023-09-18-export-generations.gif) - - + ## Trouble exporting? If you're having trouble exporting data, please [let us know](#contact) and we'll help you out. diff --git a/pages/docs/roadmap.mdx b/pages/docs/roadmap.mdx index 1111bc4ed..f68322bb4 100644 --- a/pages/docs/roadmap.mdx +++ b/pages/docs/roadmap.mdx @@ -81,7 +81,6 @@ Subscribe to our mailing list to get occasional email updates about new features - Export traces and sessions from Langfuse dashboard (CSV, JSON) - Improved tables across the Langfuse UI to display all relevant information and be more user-friendly. - Move to SDK references generated from docstrings to improve the developer experience (Intellisense) and reduce the risk of errors. -- Annotation queue to assign annotations to team members. - Improve cost tracking of multi-modal LLMs and more complex pricing models (e.g. Anthropic/Google Context Caching, Google Vertex pricing) - In-UI prompt and model evaluation/benchmarking based on Langfuse-managed custom evaluators. @@ -97,7 +96,7 @@ Subscribe to our mailing list to get occasional email updates about new features ## ⚠️ Upcoming breaking changes -- Self-hosting: Langfuse v3.0 will add additional containers and database for improve scalability. Learn more in this [GitHub Discussion](https://github.com/orgs/langfuse/discussions/1902). We will provide a migration path. Scheduled for August/September 2024. +- Self-hosting: Langfuse v3.0 will add additional containers and database for improve scalability. Learn more in this [GitHub Discussion](https://github.com/orgs/langfuse/discussions/1902). - OpenAI integration, dropping support of `openai < 1.0.0` to greatly simplify the integration and improve the developer experience of everyone on `openai >= 1`. No timeline on this yet as many libraries still depend on the old version. ## 🙏 Feature requests and bug reports diff --git a/pages/docs/scores/_meta.tsx b/pages/docs/scores/_meta.tsx index 33a0b668b..d8fbd58fe 100644 --- a/pages/docs/scores/_meta.tsx +++ b/pages/docs/scores/_meta.tsx @@ -1,9 +1,9 @@ export default { overview: "Overview", - "getting-started": "Getting Started", + "data-model": "Data Model", annotation: "Human Annotation", - "user-feedback": "User Feedback", - "model-based-evals": "Model-based Evaluation", - "external-evaluation-pipelines": "External Evaluation Pipelines", + "model-based-evals": "LLM-as-a-judge", custom: "Custom via SDKs/API", + "user-feedback": "SDKs/API: User Feedback", + "external-evaluation-pipelines": "SDKs/API: Evaluation Pipelines", }; diff --git a/pages/docs/scores/annotation.mdx b/pages/docs/scores/annotation.mdx index c520e7670..76975d47b 100644 --- a/pages/docs/scores/annotation.mdx +++ b/pages/docs/scores/annotation.mdx @@ -6,18 +6,53 @@ description: Annotate traces and observations with scores in the Langfuse UI to Collaborate with your team and add [`scores`](/docs/scores) via the Langfuse UI. You can add scores to both traces and observations within a trace. - - ![Annotate](/images/docs/annotation.gif) - - -## Common use cases +
+Why label data manually? - **Collaboration**: Enable team collaboration by inviting other internal members to annotate a subset of traces and observations. This manual evaluation can enhance the overall accuracy and reliability of your results by incorporating diverse perspectives and expertise. See [Annotation queues](/docs/scores/annotation#annotation-queues) to manage and prioritize the annotation tasks effectively. - **Annotation data consistency**: Create score configurations for annotation workflows to ensure that all team members are using standardized scoring criteria. Hereby configure categorical, numerical or binary score types to capture different aspects of your data. - **Evaluation of new product features**: This feature can be useful for new use cases where no other scores have been allocated yet. - **Benchmarking of other scores**: Establish a human baseline score that can be used as a benchmark to compare and evaluate other scores. This can provide a clear standard of reference and enhance the objectivity of your performance evaluations. -## Get started +
+ +Langfuse supports: + + + + +From any [trace](/docs/tracing), you can annotate scores on different dimensions. See [step-by-step guide](#single-trace) below for details. + +![Annotate](/images/docs/annotation.gif) + + + + +Use [annotation queues](#annotation-queues) to manage and prioritize annotation tasks by: + +1. Creating annotation queues +2. Assigning traces or observations to them +3. Processing the annotation tasks one-by-one + + + + + + +## 1. Annotation of single traces [#single-trace] + + @@ -61,9 +96,7 @@ Upon completing annotation click on the `Scores` tab to view a table of all the -## Annotation Queues [#annotation-queues] - -Annotation queues allow you to manage and prioritize your annotation tasks in a structured way. This feature is particularly useful for large-scale projects that benefit of human-in-the-loop evaluation at some scale. Queues streamline this process by allowing for specifying which traces/observations you'd like to annotate on which dimensions. +## 2. Annotation Queues [#annotation-queues] +Annotation queues allow you to manage and prioritize your annotation tasks in a structured way. This feature is particularly useful for large-scale projects that benefit of human-in-the-loop evaluation at some scale. Queues streamline this process by allowing for specifying which traces/observations you'd like to annotate on which dimensions. + + +Langfuse gives you full flexibility to ingest custom [`scores`](/docs/scores/data-model) via the Langfuse SDKs or API. The scoring workflow allows you to run custom quality checks on the output of your workflows at runtime, or to run custom human evaluation workflows. + +Common use cases: + +- **Collecting user feedback** ([example](/docs/scores/user-feedback)): collect feedback from your users on application quality or performance. Can be captured in the frontend via our Browser SDK. +- **Custom evaluation data pipeline** ([example](/docs/scores/external-evaluation-pipelines)): continuously monitor the quality by fetching traces from Langfuse, running custom evaluations, and ingesting scores back into Langfuse. +- **Guardrails and security checks** ([example](/docs/security/overview)): check if output contains a certain keyword, adheres to a specified structure/format or if the output is longer than a certain length. - **Custom internal workflow tooling**: build custom internal tooling that helps you manage human-in-the-loop workflows. Ingest scores back into Langfuse, optionally following your custom schema by referencing a config. -- **Deterministic rules at runtime**: e.g. check if output contains a certain keyword, adheres to a specified structure/format or if the output is longer than a certain length. -- **Automated data pipeline**: continuously monitor the quality by fetching traces from Langfuse, running custom evaluations, and ingesting scores back into Langfuse. +- **Custom run-time evaluations**: e.g. track whether the generated SQL code actually worked, or if the structured output was valid JSON. ## How to add scores diff --git a/pages/docs/scores/getting-started.mdx b/pages/docs/scores/data-model.mdx similarity index 63% rename from pages/docs/scores/getting-started.mdx rename to pages/docs/scores/data-model.mdx index 5878acbd6..6f525a80e 100644 --- a/pages/docs/scores/getting-started.mdx +++ b/pages/docs/scores/data-model.mdx @@ -3,28 +3,45 @@ title: Getting Started with LLM Evaluation in Langfuse description: Langfuse (open source) helps evaluate LLM applications. Commonly used to measure quality, tonality, factual accuracy, completeness, and relevance. --- -# Getting Started +# Evaluation Data Model -The Langfuse scoring system supports all forms of evaluation methods due to its open architecture and API. +Evaluation is critical for the LLM Application Development workflow. Also, it is very specific to a certain use case and application. Thus, the evaluation data model in Langfuse is flexible to represent any evaluation metric. It is used across the evalaution methods outlined in the [overview](/docs/scores/overview). -## Score object in Langfuse +`Scores` serve as objects for storing evaluation metrics in Langfuse. -`Scores` serve as objects for storing evaluation metrics in Langfuse. They are always associated with a trace and can be attached to specific observations within a trace. Optionally, scores can be linked to a score configuration to ensure they comply with a specific schema. +- They are always associated with a trace +- Optionally they can reference a specific observation within a trace ([tracing data model](/docs/tracing/overview)). +- They can be _numeric_, _categorical_, or _boolean_. +- A `comment` can be added to provide additional context or information about the score. -| Attribute | Type | Description | -| --------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `name` | string | Name of the score, e.g. user_feedback, hallucination_eval | -| `value` | number | Optional: Numeric value of the score. Always defined for numeric and boolean scores. Optional for categorical scores. | -| `stringValue` | string | Optional: String equivalent of the score's numeric value for boolean and categorical data types. Automatically set for categorical scores based on the config if the `configId` is provided. | -| `traceId` | string | Id of the trace the score relates to | -| `observationId` | string | Optional: Observation (e.g. LLM call) the score relates to | -| `comment` | string | Optional: Evaluation comment, commonly used for user feedback, eval output or internal notes | -| `id` | string | Unique identifier of the score. Auto-generated by SDKs. Optionally can also be used as an indempotency key to update scores. | -| `source` | string | Automatically set based on the souce of the score. Can be either `API`, `EVAL`, or `ANNOTATION` | -| `dataType` | string | Automatically set based on the config data type when the `configId` is provided. Otherwise can be defined manually as `NUMERIC`, `CATEGORICAL` or `BOOLEAN` | -| `configId` | string | Optional: Score config id to ensure that the score follows a specific schema. Can be defined in the Langfuse UI or via API. When provided the score's `dataType` is automatically set based on the config | +Optionally, scores can be linked to a `score configuration` to ensure they comply with a specific schema. More on this below. + +
+ +High-level data model and its relations to the [tracing data model](/docs/tracing/overview). + +```mermaid +classDiagram + namespace Evaluation { + class Score + class ScoreConfig + } + + namespace Tracing { + class Trace + class Observation + } + + Trace *-- Observation + Score --> Trace + Score --> Observation : optional, reference observation within a trace + Score --> ScoreConfig : optional, ensure schema +``` -## Using scores across Langfuse +
+ +
+How are scores used across Langfuse? Scores can be used in multiple ways across Langfuse: @@ -32,13 +49,10 @@ Scores can be used in multiple ways across Langfuse: 2. Segment all execution traces by scores to e.g. find all traces with a low quality score 3. Analytics: Detailed score reporting with drill downs into use cases and user segments -## Configure score schema - -If you'd like to ensure that your scores follow a specific schema, you can define a `score config` in the Langfuse UI or via our API. +
-A score config includes the score name, data type, and constraints on score value range such as min and max values for numerical data types and custom categories for categorical data types. Configs are immutable but can be archived (and restored anytime). Using score configs allows you to standardize your scoring schema across your team and ensure that scores are consistent and comparable for future analysis. - -## Frequently used scores +
+Frequently used scores Scores in Langfuse are adaptable (it is just a `name`) and designed to cater to the unique requirements of specific LLM applications. They typically serve to measure the following aspects: @@ -54,4 +68,44 @@ Scores in Langfuse are adaptable (it is just a `name`) and designed to cater to - Similarity to prevalent prompt injections - Instances of model refusals (e.g., as a language model, ...) -This flexible scoring system allows for a comprehensive evaluation of various elements integral to the function and performance of the LLM application. +
+ +## `Score` object in Langfuse + +| Attribute | Type | Description | +| --------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | string | Name of the score, e.g. user_feedback, hallucination_eval | +| `value` | number | Optional: Numeric value of the score. Always defined for numeric and boolean scores. Optional for categorical scores. | +| `stringValue` | string | Optional: String equivalent of the score's numeric value for boolean and categorical data types. Automatically set for categorical scores based on the config if the `configId` is provided. | +| `traceId` | string | Id of the trace the score relates to | +| `observationId` | string | Optional: Observation (e.g. LLM call) the score relates to | +| `comment` | string | Optional: Evaluation comment, commonly used for user feedback, eval output or internal notes | +| `id` | string | Unique identifier of the score. Auto-generated by SDKs. Optionally can also be used as an indempotency key to update scores. | +| `source` | string | Automatically set based on the souce of the score. Can be either `API`, `EVAL`, or `ANNOTATION` | +| `dataType` | string | Automatically set based on the config data type when the `configId` is provided. Otherwise can be defined manually as `NUMERIC`, `CATEGORICAL` or `BOOLEAN` | +| `configId` | string | Optional: Score config id to ensure that the score follows a specific schema. Can be defined in the Langfuse UI or via API. When provided the score's `dataType` is automatically set based on the config | + +## Define schema via `score config` + +If you'd like to ensure that your scores follow a specific schema, you can define a `score config` in the Langfuse UI or via our API. + +A score config includes: + +- Score name +- Data type: `NUMERIC`, `CATEGORICAL`, `BOOLEAN` +- Constraints on score value range: + - Min/max values for numerical data types + - Custom categories for categorical data types + +Configs are immutable but can be archived (and restored anytime). Using score configs allows you to standardize your scoring schema across your team and ensure that scores are consistent and comparable for future analysis. + +## Get started + +You can either utilize evaluation scores in Langfuse via: + +- [Programmatically via API/SDK](/docs/scores/custom) + - Example: [User Feedback](/docs/scores/user-feedback) + - Example: [Custom evaluation pipeline](/docs/scores/external-evaluation-pipelines) +- Managed evaluation methods in Langfuse + - [LLM-as-a-judge](/docs/scores/model-based-evals) + - [Human evaluation](/docs/scores/annotation) diff --git a/pages/docs/scores/model-based-evals.mdx b/pages/docs/scores/model-based-evals.mdx index 0e44c916a..90a3211e6 100644 --- a/pages/docs/scores/model-based-evals.mdx +++ b/pages/docs/scores/model-based-evals.mdx @@ -1,17 +1,9 @@ --- +title: Fully managed LLM-as-a-judge evaluation description: Langfuse (open source) helps run model-based evaluations (llm-as-a-judge) on production data to monitor and improve LLMs applications. --- -# Model-based Evaluations in Langfuse - -Model-based evaluations (_LLM-as-a-judge_) are a powerful tool to automate the evaluation of LLM applications integrated with Langfuse. With model-based evalutions, LLMs are used to score a specific session/trace/LLM-call in Langfuse on criteria such as correctness, toxicity, or hallucinations. - -There are two ways to run model-based evaluations in Langfuse: - -1. [Via the Langfuse UI (beta)](#ui) -1. [Via external evaluation pipeline](#evaluation-pipeline) - -## Via Langfuse UI (beta) [#ui] +# LLM-as-a-Judge - +LLM-as-a-judge is a technique to evaluate the quality of LLM applications by using an LLM as a judge. The LLM is given a trace or a dataset entry and asked to score and reason about the output. The scores and reasoning are stored as [scores](/docs/scores/data-model) in Langfuse. + +
+What are common evaluation tasks? + +LLM-as-a-judge evaluation tasks can be very use-case-specific. Common tasks for which Langfuse provides prebuilt prompts are: + +- Hallucination +- Helpfulness +- Relevance +- Toxicity +- Correctness +- Contextrelevance +- Contextcorrectness +- Conciseness + +
+ +LLM-as-a-judge evaluators in Langfuse help to evaluate: + +1. Production/development [traces](/docs/tracing) +2. Experiments that you run on [datasets](/docs/datasets) + + + +Alternatively, you can run any custom evaluation functions or packages on Langfuse data [via the API/SDKs](/docs/scores/custom). + +Custom end-to-end example: [External evaluation pipeline](/docs/scores/external-evaluation-pipelines). + + + +## Video Walkthrough + + + + + + + + + + +## Get Started -### Store an API key +### Configure LLM provider -To use evals, you have to bring your own LLM API keys. To do so, navigate to the settings page and insert your API key. We store them encrypted on our servers. +Langfuse supports a variety of LLM providers including OpenAI, Anthropic, Azure OpenAI, and AWS Bedrock. -### Create an eval template +To use LLM-as-a-judge, you have to configure your LLM provider in the Langfuse project settings. -First, we need to specify the evaluation template: +**Note:** tool/function calling needs to be supported by the model for LLM-as-a-judge to work. -- Select the model and its parameters. -- Customise one of the Langfuse managed prompt templates or write your own. -- We use function calling to extract the evaluation output. Specify the descriptions for the function parameters `score` and `reasoning`. This is how you can direct the LLM to score on a specific range and provide specific reasoning for the score. +### Create an LLM-as-a-judge template -![Langfuse](/images/docs/eval-hallucination-template.png) +LLM-as-a-judge uses a prompt template and model configuration to evaluate traces. In Langfuse this configuration is stored in an `Evaluator Template` as it can be reused across multiple evaluators. -### Create an eval config +To help get you started, Langfuse includes a set of **predefined prompts** for common evaluation tasks, but you can also write your own or customize the Langfuse-provided prompts. -Second, we need to specify on which `traces` Langfuse should run the template we created above. +Prompt templates contain **`{{variables}}`** that are substituted with actual data when an evaluator is run. You can create an arbitrary number of custom variables that can later be referenced when creating the evaluator. Common variables are `input`, `output`, `context`, `ground_truth`, etc. -- Select the evaluation template to run. -- Specify the name of the `scores` which will be created as a result of the evaluation. -- Filter which newly ingested traces should be evaluated. (Coming soon: select existing traces) -- Specify how Langfuse should fill the variables in the template. Langfuse can extract data from `trace`, `generations`, `spans`, or `event` objects which belong to a trace. You can choose to take `Input`, `Output` or `metadata` form each of these objects. For `generations`, `spans`, or `events`, you also have to specify the name of the object. We will always take the latest object that matches the name. -- Reduce the sampling to not run evals on each trace. This helps to save LLM API cost. -- Add a delay to the evaluation execution. This is how you can ensure all data arrived at Langfuse servers before evaluation is exeucted. +Langfuse uses function/tool calling to extract the evaluation output. At the bottom of the form, you can configure `score` and `reasoning` variables which will be used to instruct the LLM on how to score and reason about the evaluation. -![Langfuse](/images/docs/eval-config.png) +![Langfuse](/images/docs/eval-hallucination-template.png) -### See the progress +### Set up an evaluator -Once the configuration is saved, Langfuse will start running the evals on the traces that match the filter. You can see the progress on the config page or the log table. +Now that you have created an evaluator template, you can configure on what data it should be applied by Langfuse. - - ![Langfuse](/images/docs/evals-log.png) - +Here we need to configure the following aspects: + +- Which **Evaluator Template** to use +- **Trigger**: On what incoming data should the evaluator be executed? + - [**Traces**](/docs/tracing): On new traces that are ingested into Langfuse. You can configure filters to select a subset of traces. + - [**Datasets**](/docs/datasets): On all experiments run on a specific dataset in offline development. +- **Name of the `scores`** which will be created as a result of the evaluation. +- Specify how Langfuse should fill the **`{{variables}}`** in the template. + - Langfuse traces can be deeply nested (see [conceptual overview](/docs/tracing)). You can query from the trace directly, or from any nested observation via its name. + - Select whether to use the `Input`, `Output`, or `metadata` value. +- Optional: Add **sampling** to reduce costs when running evaluations on a large volume of production data. +- Optional: Configure **custom delay**. This is how you can ensure all data arrived at Langfuse servers before evaluation is executed. The time starts when the trace is first added to Langfuse while it might be still in progress. This is especially important for long-running agent executions. -### See scores +![Langfuse](/images/docs/eval-config.png) + + -Upon receiving new traces, navigate to the trace detail view to see the associated scores. + + +✨ Done! You have created an evaluator which will now automatically be executed on all data that matches the selected trigger. ![Langfuse](/images/docs/eval-score.png) - + -## Via External Evaluation Pipeline [#evaluation-pipeline] +## Monitoring of Evaluators - +Each evaluator has its own log page where you can view the progress and logs to potentially debug any issues. -```mermaid -sequenceDiagram -participant Application -participant Langfuse -participant Pipeline -actor User - -Application ->> Langfuse: Ingest new traces -Langfuse ->> Pipeline: Fetch traces via SDK/API -Pipeline->>Pipeline: Run custom evaluation function/package -Pipeline ->> Langfuse: Add score to trace via SDK/API -Langfuse ->> User: Analyze evaluation scores via UI & API -``` - -You can run your own model-based evals on data in Langfuse by fetching traces from Langfuse (e.g. via the Python SDK) and then adding evaluation results as [`scores`](/docs/scores) back to the traces in Langfuse. This gives you full flexibility to run various eval libraries on your production data and discover which work well for your use case. - -The example notebook is a good template to get started with building your own evaluation pipeline. - -import { FileCode, BookOpen } from "lucide-react"; - - - } - /> - + + ![Langfuse](/images/docs/evals-log.png) + ## GitHub Discussions diff --git a/pages/docs/scores/overview.mdx b/pages/docs/scores/overview.mdx index 0c5fcadd8..13a2cf296 100644 --- a/pages/docs/scores/overview.mdx +++ b/pages/docs/scores/overview.mdx @@ -5,21 +5,28 @@ description: With Langfuse you can capture all your LLM evaluations in one place # LLM Evaluation: Model-Based, Labeling & User Feedback -## What is LLM Evaluation? - Evaluation is a critical aspect of developing and deploying LLM applications. Usually, teams use a multitude of different evaluation methods to score the performance of their AI application depending on the use case and the stage of the development process. -Langfuse provides a flexible [scoring system](/docs/scores/getting-started) to capture all your evaluations in one place and make them actionable. - -## Why are LLM Evals Important? +
+Why are LLM Evals Important? LLM evaluation is crucial for improving the accuracy and robustness of language models, ultimately enhancing the user experience and trust in your AI application. It helps detect hallucinations and measure performance across diverse tasks. A structured evaluation in production is vital for continuously improving your application. -## What are common Evaluation Methods? +
+ +import EvaluationOverview from "@/components-mdx/evaluation-overview-gifs.mdx"; + + + +Langfuse provides a flexible [scoring system](/docs/scores/getting-started) to capture all your evaluations in one place and make them actionable. -Common evaluation methods for LLMs involve assessing both **quantitative** metrics and **qualitative** aspects to measure performance, coherence, and relevance. These evaluations help pinpoint the LLM Application's strengths and areas for improvement, ensuring it produces accurate and contextually appropriate outputs. +## Data Model -Langfuse supports all forms of evaluation methods due to its open architecture and API (learn more about the Langfuse `score` object [here](/docs/scores/getting-started)). Depending on your needs in the development process, you can use one or multiple of the following evaluation methods: +Langfuse uses the `score` object to store evaluation metrics, it is meant to be flexible to represent any evaluation metric. Learn more about the [data model](/docs/scores/data-model). + +This data model is utilized across all evaluation methods, both UI and API. It can also be accessed programmatically through the SDKs or API for custom workflows. + +## Common Evaluation Methods ### 1. Model-based Evaluation (_LLM-as-a-Judge_) @@ -28,7 +35,7 @@ Langfuse supports all forms of evaluation methods due to its open architecture a There are two ways to run model-based evaluations in Langfuse: - [Via the Langfuse UI (beta)](/docs/scores/model-based-evals) -- [Via external evaluation pipelines](/docs/scores/external-evaluation-pipelines) +- [Via external evaluation pipelines](/docs/scores/external-evaluation-pipelines) using the API/SDKs ### 2. Manual Annotation / Data Labeling (in UI) @@ -40,21 +47,7 @@ Capturing [user feedback](/docs/scores/user-feedback) in your AI application can ### 4. Custom Evaluation via SDKs/API -Langfuse gives you full flexibility to ingest [custom scores via the Langfuse SDKs or API](/docs/scores/custom). The scoring workflow allows you to run custom quality checks (e.g. valid structured output format) on the output of your workflows at runtime, or to run custom external evaluation workflows. - -## Getting Started - -Learn how to configure and utilize `scores` in Langfuse to assess quality, accuracy, style, and security metrics in your LLM applications. - -import { FileCode, BookOpen } from "lucide-react"; - - - } - /> - +Langfuse gives you full flexibility to ingest [custom evaluation scores via the Langfuse SDKs or API](/docs/scores/custom). The scoring workflow allows you to run custom quality checks (e.g. valid structured output format) on the output of your workflows at runtime, or to run custom external evaluation workflows. ## GitHub Discussions diff --git a/pages/docs/scores/user-feedback.mdx b/pages/docs/scores/user-feedback.mdx index 678ef86ce..166e332f2 100644 --- a/pages/docs/scores/user-feedback.mdx +++ b/pages/docs/scores/user-feedback.mdx @@ -6,37 +6,58 @@ import FeedbackPreview from "@/components/feedbackPreview"; # User Feedback in LLM apps -User feedback is a great source to evaluate the quality of an LLM app's output. In Langfuse, feedback is collected as a [`score`](/docs/scores) and attached to an execution trace or an individual LLM generation. +User feedback is a great source to evaluate the quality of an LLM app's output. -## Types of Feedback +
+What are common feedback types? -Depending on the type of the application, there are different types of feedback that can be collected that vary in quality, detail, and quantity. +Depending on the type of the application, there are different **types of feedback** that can be collected that vary in quality, detail, and quantity. - **Explicit Feedback**: Directly prompt the user to give feedback, this can be a rating, a like, a dislike, a scale or a comment. While it is simple to implement, quality and quantity of the feedback is often low. - **Implicit Feedback**: Measure the user's behavior, e.g., time spent on a page, click-through rate, accepting/rejecting a model-generated output. This type of feedback is more difficult to implement but is often more frequent and reliable. +
+ +
+What is a common workflow of using user feedback? + +A common workflow is to: + +1. Collection of feedback alongside LLM traces in Langfuse + > Example: _Negative, Langchain not included in response_ +2. Browsing of all user feedback, especially when collecting comments from users +3. Identification of the root cause of the low-quality response (can be managed via [annotation queues](/docs/scores/annotation)) + > Example: _Docs on Langchain integration are not included in embedding similarity search_ + +
+ ## Demo -We implemented collection of user feedback into the Q&A chatbot for the Langfuse docs. +Langfuse UI on the left, demo application on the right - - ![User feedback collection in - Langfuse](/images/blog/docs-qa-chatbot/feedback.gif) - + -In this example you see the following steps: +→ [Try the Q&A chatbot yourself](/docs/demo) and browse the collected feedback in the public Langfuse project -1. Collection of feedback using the Langfuse Web SDK - > _Negative, Langchain not included in response_ -2. Browsing of feedback -3. Identification of the root cause of the low-quality response - > Docs on Langchain integration are not included in embedding similarity search +## Get started -→ [Try the demo yourself](/docs/demo) and browse the collected feedback in Langfuse +In Langfuse, any kind of user feedback can be collected as a [`score`](/docs/scores/data-model) via the [Langfuse SDKs or API](/docs/scores/custom) and attached to an execution trace or an individual LLM generation ([tracing data model](/docs/tracing)). -## Example using LangfuseWeb +Types of user feedback that can be collected as a score: -The easiest way to collect user feedback is via the **Langfuse Web SDK**. Thereby you can ingest scores directly from the browser. See the [Web SDK documentation](/docs/sdk/typescript/guide-web) for more details. +- Be numeric (e.g. 1-5 stars) +- Be categorical (e.g. thumbs up/down) +- Be boolean (e.g. accept/reject) + +## Integration Example + +In this example, we use the [`LangfuseWeb` SDK](/docs/sdk/typescript/guide-web) to collect user feedback right from the browser. + +**Note:** You can also use the SDKs server-side or add scores via the API.
@@ -86,5 +107,3 @@ export function UserFeedbackComponent(props: { traceId: string }) {
- -Alternatively, you can ingest feedback as scores server-side via the SDKs for [Python](/docs/sdk/python) and [JS/TS](/docs/sdk/typescript/guide), or via the [HTTP API](/docs/api). diff --git a/pages/docs/tracing-features/_meta.tsx b/pages/docs/tracing-features/_meta.tsx index 244bbb50e..57d0d3b8c 100644 --- a/pages/docs/tracing-features/_meta.tsx +++ b/pages/docs/tracing-features/_meta.tsx @@ -1,7 +1,12 @@ export default { - sessions: "Sessions", - users: "Users", + "log-levels": "Log Levels", + masking: "Masking", metadata: "Metadata", + "multi-modality": "Multi-modality & Attachments", + "releases-and-versioning": "Releases & Versioning", + sampling: "Sampling", + sessions: "Sessions", tags: "Tags", url: "Trace URL", + users: "Users", }; diff --git a/pages/docs/tracing-features/masking.mdx b/pages/docs/tracing-features/masking.mdx new file mode 100644 index 000000000..942abfa49 --- /dev/null +++ b/pages/docs/tracing-features/masking.mdx @@ -0,0 +1,282 @@ +--- +description: Configure masking to redact sensitive information from inputs and outputs sent to the Langfuse server. +--- + +# Masking of sensitive LLM data + +Masking is a feature that allows precise control over the [tracing](/docs/tracing/overview) data sent to the Langfuse server. It enables you to: + +1. Redact sensitive information from trace or observation inputs and outputs. +2. Customize the content of events before transmission. +3. Implement fine-grained data filtering based on your specific requirements. + +The process works as follows: + +1. You define a custom masking function and pass it to the Langfuse client constructor. +2. All event inputs and outputs are processed through this function. +3. The masked data is then sent to the Langfuse server. + +This approach ensures that you have complete control over the event input and output data traced by your application. + + + + +Define a masking function: + +```python +def masking_function(data): + if isinstance(data, str) and data.startswith("SECRET_"): + return "REDACTED" + + return data +``` + +Use with the [`@observe()` decorator](/docs/sdk/python/decorators): + +```python +from langfuse.decorators import langfuse_context, observe + +langfuse_context.configure(mask=masking_function) + +@observe() +def fn(): + return "SECRET_DATA" + +fn() + +langfuse_context.flush() + +# The trace output in Langfuse will have the output masked as "REDACTED". +``` + +Use with the [low-level SDK](/docs/sdk/python/low-level-sdk): + +```python +from langfuse import Langfuse + +langfuse = Langfuse(mask=masking_function) + +trace = langfuse.trace(output="SECRET_DATA") + +langfuse.flush() + +# The trace output in Langfuse will have the output masked as "REDACTED". +``` + + + +```typescript +import { Langfuse } from "langfuse"; + +function maskingFunction(params: { data: any }) { +if (typeof params.data === "string" && params.data.startsWith("SECRET\_")) { +return "REDACTED"; +} + +return params.data; +} + +const langfuse = new Langfuse({ mask: maskingFunction }); + +const trace = langfuse.trace({ +output: "SECRET_DATA", +}); + +await langfuse.flushAsync(); + +// The trace output in Langfuse will have the output masked as "REDACTED". + +```` + +See [JS/TS SDK docs](/docs/sdk/typescript/guide) for more details. + + + + +When using the [OpenAI SDK Integration](/docs/integrations/openai), set `openai.langfuse_mask` to the masking function: + +```python +from langfuse.openai import openai + +def masking_function(data): + if isinstance(data, str) and data.startswith("SECRET_"): + return "REDACTED" + + return data + +openai.langfuse_mask = masking_function + +completion = openai.chat.completions.create( + name="test-chat", + model="gpt-3.5-turbo", + messages=[ + {"role": "system", "content": "You are a bot."}, + {"role": "user", "content": "1 + 1 = "}], + temperature=0, +) + +openai.flush_langfuse() +```` + +When using the integration with the `@observe()` decorator (see [interop docs](/docs/integrations/openai/get-started#use-traces)), set masking function via the `langfuse_context`: + +```python +from langfuse.decorators import langfuse_context, observe +from langfuse.openai import openai + +def masking_function(data): + if isinstance(data, str) and data.startswith("SECRET_"): + return "REDACTED" + + return data + +langfuse_context.configure(mask=masking_function) + +@observe() +def fn(): + completion = openai.chat.completions.create( + name="test-chat", + model="gpt-3.5-turbo", + messages=[ + {"role": "system", "content": "You are a calculator."}, + {"role": "user", "content": "1 + 1 = "}], + temperature=0, + ) + +fn() +``` + + + + +When using the [CallbackHandler](/docs/integrations/langchain/tracing), you can pass `mask` as a keyword argument: + +```python +from langfuse.callback import CallbackHandler + +def masking_function(data): + if isinstance(data, str) and data.startswith("SECRET_"): + return "REDACTED" + + return data + +handler = CallbackHandler( + mask=masking_function +) +``` + +When using the integration with the `@observe()` decorator (see [interop docs](/docs/integrations/langchain/tracing#interoperability)), set `mask` via the `langfuse_context`: + +```python +from langfuse.decorators import langfuse_context, observe + +def masking_function(data): + if isinstance(data, str) and data.startswith("SECRET_"): + return "REDACTED" + + return data + +langfuse_context.configure(mask=masking_function) + +@observe() +def fn(): + langfuse_handler = langfuse_context.get_current_langchain_handler() + + # Pass handler to invoke of your langchain chain/agent + chain.invoke({"person": person}, config={"callbacks":[langfuse_handler]}) + +fn() +``` + + + + +When using the [CallbackHandler](/docs/integrations/langchain/tracing), you can pass `mask` to the constructor: + +```typescript +import { CallbackHandler } from "langfuse-langchain"; + +function maskingFunction(params: { data: any }) { + if (typeof params.data === "string" && params.data.startsWith("SECRET_")) { + return "REDACTED"; + } + + return params.data; +} + +const handler = new CallbackHandler({ + mask: maskingFunction, +}); +``` + + + + + +When using the [LlamaIndex Integration](/docs/integrations/llama-index/get-started), set the `mask` via the `instrumentor.observe()` context manager: + +```python +from langfuse.llama_index import LlamaIndexInstrumentor + +def masking_function(data): + if isinstance(data, str) and data.startswith("SECRET_"): + return "REDACTED" + + return data + +instrumentor = LlamaIndexInstrumentor(mask=masking_function) + +with instrumentor.observe(): + # ... your LlamaIndex index creation ... + + index.as_query_engine().query("What is the capital of France?") + +instrumentor.flush() +``` + +When using the integration with the `@observe()` decorator (see [interop docs](/docs/integrations/llama-index/get-started#interoperability-with-langfuse-sdk)), set the `mask` via the `langfuse_context`: + +```python +from langfuse.decorators import langfuse_context, observe +from langfuse.llama_index import LlamaIndexInstrumentor + +def masking_function(data): + if isinstance(data, str) and data.startswith("SECRET_"): + return "REDACTED" + + return data + +langfuse_context.configure(mask=masking_function) + +@observe() +def llama_index_fn(question: str): + # Get IDs + current_trace_id = langfuse_context.get_current_trace_id() + current_observation_id = langfuse_context.get_current_observation_id() + + # Pass to instrumentor + with instrumentor.observe( + trace_id=current_trace_id, + parent_observation_id=current_observation_id, + update_parent=False + ) as trace: + # ... your LlamaIndex index creation ... + + index.as_query_engine().query("What is the capital of France?") + + # Run application + index = VectorStoreIndex.from_documents([doc1, doc2]) + response = index.as_query_engine().query(question) + + return response +``` + + + + + +## GitHub Discussions + +import { GhDiscussionsPreview } from "@/components/gh-discussions/GhDiscussionsPreview"; + + diff --git a/pages/docs/tracing-features/metadata.mdx b/pages/docs/tracing-features/metadata.mdx index 706beba4e..b6a851dbb 100644 --- a/pages/docs/tracing-features/metadata.mdx +++ b/pages/docs/tracing-features/metadata.mdx @@ -220,7 +220,6 @@ def llama_index_fn(question: str): return response ``` - diff --git a/pages/docs/tracing-features/multi-modality.mdx b/pages/docs/tracing-features/multi-modality.mdx index 30f69780a..17e29c4b8 100644 --- a/pages/docs/tracing-features/multi-modality.mdx +++ b/pages/docs/tracing-features/multi-modality.mdx @@ -1,42 +1,79 @@ --- -description: Add multiple modalities to a single trace +description: Langfuse fully supports multi-modal LLM traces, including text, images, audio, and attachments. --- -# Multi-Modality +# Multi-Modality and Attachments -Langfuse supports rendering Multi-Modal traces, including both text and image formats. We follow OpenAI's format convention. - -## How to trace Multi-Modal content in Langfuse? + -To utilize our Multi-Modal Trace support, your trace or observation `input`/`output` should include a list of messages comprising the conversation so far. Each message should contain a `role` (system, user, assistant) and `content`. To display multi-modal content, you can pass a combination of text and image URLs. The `content` property of the messages follows the [OpenAI convention](/docs/tracing-features/multi-modality#content-format). +Support for media attachments to traces is currently in beta. Please report any [issues](/issues) and add feature requests to this ongoing [discussion thread](https://github.com/orgs/langfuse/discussions/3004). - - We plan to extend support to base64 images, file attachments (e.g., PDFs), and - audio soon. Please add your upvote and any thoughts to this - [thread](https://github.com/orgs/langfuse/discussions/3004). -### Visual Representation in Langfuse +Langfuse supports multi-modal traces including **text, images, audio, and other attachments**. + +By default, **[base64 encoded data URIs](https://developer.mozilla.org/en-US/docs/Web/URI/Schemes/data#syntax) are handled automatically by the Langfuse SDKs**. They are extracted from the payloads commonly used in multi-modal LLMs, uploaded to Langfuse's object storage, and linked to the trace. + +This also works if you: + +1. Reference media files via external URLs. +2. Customize the handling of media files in the SDKs via the `LangfuseMedia` class. +3. Integrate via the Langfuse API directly. + +Learn more on how to get started and how this works under the hood below. + +_Examples_ + +import MultiModalImageGallery from "@/components-mdx/multi-modal-image-gallery.mdx"; + + + +## Availability + +### Langfuse Cloud + +Multi-modal attachments on Langfuse Cloud are free while in beta. We will be rolling out a new pricing metric to account for the additional storage and compute costs associated with large multi-modal traces in the coming weeks. + +### Self-hosting + +Multi-modal attachments are available today. You need to configure your own object storage bucket via the Langfuse environment variables (`LANGFUSE_S3_MEDIA_UPLOAD_*`). See self-hosting documentation for details on these environment variables. S3-compatible APIs are supported across all major cloud providers and can be self-hosted via minio. Note that the configured storage bucket must have a publicly resolvable hostname to support direct uploads via our SDKs and media asset fetching directly from the browser. + +## Supported media formats + +Langfuse supports: + +- **Images**: .png, .jpg, .webp +- **Audio files**: .mpeg, .mp3, .wav +- **Other attachments**: .pdf, plain text -When the "Markdown" option is enabled in the Langfuse UI, you can click on the image icon to preview the image inline. +If you require support for additional file types, please let us know in our [GitHub Discussion](https://github.com/orgs/langfuse/discussions/3004) where we're actively gathering feedback on multi-modal support. - - ![Trace in Langfuse UI](/images/docs/multi-modal-trace.png) - +## Get Started -### Content Format +### Base64 data URI encoded media -| Content | Type | Description | -| ----------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Default: Text content | string | The text contents of the message. | -| Multi-Modal: Array of content parts | array | An array of content parts with a defined type, each can be of type `text` or `image_url`. You can pass multiple images by adding multiple image_url content parts. | +If you use base64 encoded images, audio, or other files in your LLM applications, upgrade to the latest version of the Langfuse SDKs. The Langfuse SDKs automatically detect and handle base64 encoded media by extracting it, uploading it separately as a Langfuse Media file, and including a reference in the trace. -#### Content Examples +This works with standard Data URI ([MDN](https://developer.mozilla.org/en-US/docs/Web/URI/Schemes/data#syntax)) formatted media (like those used by OpenAI and other LLMs). - +This [notebook](/guides/cookbook/example_multi_modal_traces) includes a couple of examples using the OpenAI SDK and LangChain. +### External media (URLs) + +Langfuse supports in-line rendering of media files via URLs if they follow common formats. In this case, the media file is not uploaded to Langfuse's object storage but simply rendered in the UI directly from the source. + +Supported formats: + + -{/* Multi-modal: Image input */} + +```md +![Alt text](https://example.com/image.jpg) +``` + + + + ```json { "content": [ @@ -47,11 +84,11 @@ When the "Markdown" option is enabled in the Langfuse UI, you can click on the i { "role": "user", "content": [ - { + { "type": "text", "text": "What's happening in this image?" }, - { + { "type": "image_url", "image_url": { "url": "https://example.com/image.jpg" @@ -63,43 +100,134 @@ When the "Markdown" option is enabled in the Langfuse UI, you can click on the i } ``` -##### Content Part Types + + - - +### Custom attachments -| Property | Type | Description | -| -------- | ------ | --------------------------- | -| type | `text` | Type of content part | -| text | string | Text content of the message | +If you want to have more control or your media is not base64 encoded, you can upload arbitrary media attachments to Langfuse via the SDKs using the new `LangfuseMedia` class. Wrap media with LangfuseMedia before including it in trace inputs, outputs, or metadata. See the multi-modal documentation for examples. - + -| Property | Type | Description | -| ---------------- | ----------- | ------------------------------------------------- | -| type | `image_url` | Type of content part | -| image_url | object | Object containing url and detail properties | -| image_url.url | string | URL of the image | -| image_url.detail | string? | Optional: Detail level of image (low, high, auto) | +```python +from langfuse.decorators import observe, langfuse_context +from langfuse.media import LangfuseMedia - - +with open("static/bitcoin.pdf", "rb") as pdf_file: + pdf_bytes = pdf_file.read() + +# Wrap media in LangfuseMedia class +wrapped_obj = LangfuseMedia( + obj=pdf_bytes, content_bytes=pdf_bytes, content_type="application/pdf" +) + +# Optionally, access media via wrapped_obj.obj +wrapped_obj.obj + +@observe() +def main(): + langfuse_context.update_current_trace( + input=wrapped_obj, + metadata={ + "context": wrapped_obj + }, + ) + + return # Limitation: LangfuseMedia object does not work in decorated function IO, needs to be set via update_current_trace or update_current_observation + +main() +``` -```json -{ - "content": [ - {"role": "system", "content": "You are a very accurate calculator. You output only the result of the calculation."}, - {"role": "user", "content": "1 + 1 = "} - ] -} + +```typescript +import { Langfuse, LangfuseMedia } from "langfuse"; +import fs from "fs"; + +// Initialize Langfuse client +const langfuse = new Langfuse(); + +// Wrap media in LangfuseMedia class +const wrappedMedia = new LangfuseMedia({ + contentBytes: fs.readFileSync("./static/bitcoin.pdf"), + contentType: "application/pdf", +}); + +// Optionally, access media via wrappedMedia.obj +console.log(wrappedMedia.obj); + +// Include media in any trace or observation +const trace = langfuse.trace({ + name: "test-trace-10", + metadata: { + context: wrappedMedia, + }, +}); ``` + -For more details and examples, refer to our [OpenAI cookbook](/docs/integrations/openai/python/examples). +### API + +If you use the API directly to log traces to Langfuse, you need to follow these steps: + + + +### Upload media to Langfuse + +1. If you use base64 encoded media: you need to extract it from the trace payloads similar to how the Langfuse SDKs do it. +2. Initialize the upload and get a `mediaId` and `presignedURL`: [`POST /api/public/media`](https://api.reference.langfuse.com/#post-/api/public/media). +3. Upload media file: `PUT [presignedURL]`. + +See this [end-to-end example](/guides/cookbook/example_multi_modal_traces#custom-via-api) (Python) on how to use the API directly to upload media files. + +### Add reference to mediaId in trace/observation + +Use the [Langfuse Media Token](#media-token) to reference the `mediaId` in the trace or observation `input`, `output`, or `metadata`. + + + +## How does it work? + +When using media files (that are not referenced via external URLs), Langfuse handles them in the following way: + +### 1. Media Upload Process + +#### Detection and Extraction + +- Langfuse supports media files in traces and observations on `input`, `output`, and `metadata` fields +- SDKs separate media from tracing data client-side for performance optimization +- Media files are uploaded directly to object storage (AWS S3 or compatible) +- Original media content is replaced with a reference string + +#### Security and Optimization + +- Uploads use presigned URLs with content validation (content length, content type, content SHA256 hash) +- Deduplication: Files are simply replaced by their `mediaId` reference string if already uploaded +- File uniqueness determined by project, content type, and content SHA256 hash + +#### Implementation Details + +- Python SDK: Background thread handling for non-blocking execution +- JS/TS SDKs: Asynchronous, non-blocking implementation +- API support for direct uploads (see [guide](/guides/cookbook/example_multi_modal_traces#custom-via-api)) + +### 2. Media Reference System [#media-reference] + +The base64 data URIs and the wrapped `LangfuseMedia` objects in Langfuse traces are replaced by references to the `mediaId` in the following standardized token format, which helps reconstruct the original payload if needed: + +``` +@@@langfuseMedia:type={MIME_TYPE}|id={LANGFUSE_MEDIA_ID}|source={SOURCE_TYPE}@@@ +``` + +- `MIME_TYPE`: MIME type of the media file, e.g., `image/jpeg` +- `LANGFUSE_MEDIA_ID`: ID of the media file in Langfuse's object storage +- `SOURCE_TYPE`: Source type of the media file, can be `base64_data_uri`, `bytes`, or `file` + +Based on this token, the Langfuse UI can automatically detect the `mediaId` and render the media file inline. The `LangfuseMedia` class provides utility functions to extract the `mediaId` from the reference string. ## GitHub Discussions diff --git a/pages/docs/experimentation.mdx b/pages/docs/tracing-features/releases-and-versioning.mdx similarity index 99% rename from pages/docs/experimentation.mdx rename to pages/docs/tracing-features/releases-and-versioning.mdx index 9789761fa..63193158c 100644 --- a/pages/docs/experimentation.mdx +++ b/pages/docs/tracing-features/releases-and-versioning.mdx @@ -2,7 +2,7 @@ description: Langfuse allows for rapid iteration on LLM applications by providing insights into the effect of experiments such as A/B tests on LLM costs, latencies and quality. --- -# Experimentation (releases & versions) +# Releases & Versioning You can track the effect of changes to your LLM app on metrics in Langfuse. This allows you to: diff --git a/pages/docs/tracing-features/tags.mdx b/pages/docs/tracing-features/tags.mdx index 19a70d1b8..6049b2081 100644 --- a/pages/docs/tracing-features/tags.mdx +++ b/pages/docs/tracing-features/tags.mdx @@ -232,7 +232,6 @@ def llama_index_fn(question: str):s return response ``` - @@ -288,9 +287,8 @@ Tags enable you to flexibly add metadata to your traces. You can filter for tags When choosing tags, consider what aspects of the traces you might want to filter for or group by in your analysis. You may use tags to indicate specific versions of your app ('app-v1', 'app-v2'), specific LLM techniques you used ('rag', 'one-shot', 'few-shot'), or the environment of your app ('local', 'staging', 'prod'). See [Intent Classification Notebook](/docs/analytics/example-intent-classification) for an end-to-end example on how tags can be created programmatically. diff --git a/pages/docs/tracing-features/url.mdx b/pages/docs/tracing-features/url.mdx index 09a1f05a8..b495d8273 100644 --- a/pages/docs/tracing-features/url.mdx +++ b/pages/docs/tracing-features/url.mdx @@ -108,8 +108,8 @@ _Example: https://cloud.langfuse.com/project/clkpwwm0m000gmm094odg11gi/traces/2d diff --git a/pages/docs/tracing-features/users.mdx b/pages/docs/tracing-features/users.mdx index 44331f09b..313efb755 100644 --- a/pages/docs/tracing-features/users.mdx +++ b/pages/docs/tracing-features/users.mdx @@ -243,7 +243,6 @@ def llama_index_fn(question: str): return response ``` - @@ -301,13 +300,21 @@ You can set the `userId` via the override configs, see the [Flowise Integration The user list provides an overview of all users that have been tracked by Langfuse. It makes it simple to segment by overall token usage, number of traces, and user feedback. -![User List](/images/docs/users-list.png) + + ![User List](/images/docs/users-list.png) + ## Individual user view The individual user view provides an in-depth look into a single user. Explore aggregated metrics or view all traces and feedback for a user. -![Individual user view](/images/docs/users-single-user.gif) + + +You can deep link to this view via the following URL format: `https:///project/{projectId}/users/{userId}` ## GitHub Discussions diff --git a/pages/docs/tracing.mdx b/pages/docs/tracing.mdx index 792e4a684..74ac2f61c 100644 --- a/pages/docs/tracing.mdx +++ b/pages/docs/tracing.mdx @@ -6,37 +6,32 @@ description: Open Source LLM Observability and Tracing with Langfuse. Integrates LLM applications use increasingly complex abstractions, such as chains, agents with tools, and advanced prompts. **Nested traces** in Langfuse help to understand what is happening and identify the root cause of problems. - - -_Example trace of our [public demo](/docs/demo)_ - -## Why Use Tracing to gain observability into an LLM Application? - -- Capture the full context of the execution, including API calls, context, prompts, parallelism, and more -- Track model usage and cost -- Collect user feedback -- Identify low-quality outputs -- Build fine-tuning and testing datasets - -## Why Use Langfuse? - -- Open-source -- Low performance overhead -- SDKs for Python and JavaScript -- Integrated with popular frameworks: OpenAI SDK (Python), Langchain (Python, JS), LlamaIndex (Python) -- Multi-Modal tracing support -- Public API for custom integrations -- Suite of tools for the whole LLM application development lifecycle +
+Why Use LLM Observability & Tracing? + +- **Full context capture:** Track the complete execution flow including API calls, context, prompts, parallelism and more +- **Cost monitoring:** Track model usage and costs across your application +- **Quality insights:** Collect user feedback and identify low-quality outputs +- **Dataset creation:** Build high-quality datasets for fine-tuning and testing +- **Root cause analysis:** Quickly identify and debug issues in complex LLM applications + +
+ +
+Why Langfuse? + +- **Open source:** Fully open source with public API for custom integrations +- **Production optimized:** Designed with minimal performance overhead +- **Best-in-class SDKs:** Native SDKs for Python and JavaScript +- **Framework support:** Integrated with popular frameworks like OpenAI SDK, LangChain, and LlamaIndex +- **Multi-modal:** Support for tracing text, images and other modalities +- **Full platform:** Suite of tools for the complete LLM application development lifecycle + +
+ +import TracingOverview from "@/components-mdx/tracing-overview-gifs.mdx"; + + ## Introduction to Observability & Traces in Langfuse @@ -116,6 +111,7 @@ import { MessagesSquare, Images, Braces, + GitGraph, Globe, Database, } from "lucide-react"; @@ -146,6 +142,12 @@ import { icon={} arrow /> + } + arrow + /> diff --git a/pages/enterprise.mdx b/pages/enterprise.mdx index 6138b5f2d..c1e3d0abc 100644 --- a/pages/enterprise.mdx +++ b/pages/enterprise.mdx @@ -12,15 +12,15 @@ Please refer to our [feature overview](/docs/deployment/feature-overview) and th **Select Resources** -- Overview: [Slide Deck Langfuse](https://static.langfuse.com/langfuse_overview_02_07_2024.pdf) (July 2024) +- Overview: [Slide Deck Langfuse](https://static.langfuse.com/langfuse_overview_oct_25_24.pdf) (October 2024) - [Why Langfuse?](/why) -- [Langfuse has been included in the Thoughtsworks Tech Radar](https://www.thoughtworks.com/en-us/radar/platforms/langfuse) +- [Langfuse has twice been included in the Thoughtworks Tech Radar](https://www.thoughtworks.com/en-us/radar/platforms/langfuse) - [Enterprise Edition (EE) FAQ](/docs/open-source#enterprise-edition-ee-faq) - Langfuse can be procured through the [AWS Marketplace](https://aws.amazon.com/marketplace/seller-profile?id=seller-nmyz7ju7oafxu). ## Talk to us -Schedule an [introduction call](/schedule-demo) to discuss your specific needs and requirements. +Reach out via email ([enterprise@langfuse.com](mailto:enterprise@langfuse.com)) or [schedule a demo](#demo) call to discuss your specific needs and requirements. ## Introduction to Langfuse @@ -70,7 +70,7 @@ _Langfuse features along the development lifecycle_ - Self-hosting - Open Source [Licensing](/docs/open-source) - - [Feature availability](/docs/deployment/feature-overview) in Enterprise Edition vs Open Source + - [Comparison](/pricing-self-host) of Open Source, Pro, and Enterprise version - Architecture and component diagram: [Contributing.md](https://github.com/langfuse/langfuse/blob/main/CONTRIBUTING.md). Note that the architecture will change with [Langfuse v3](https://github.com/orgs/langfuse/discussions/1902). - Langfuse Self-Hosting: EE [Terms and Conditions](/terms) @@ -120,20 +120,10 @@ Langfuse is often deployed alongside a central LLM Gateway that provides schema ```mermaid graph LR - LLM["LLM - API or service"] + LLM["LLM
API or service"] App["Application"] - LF["Langfuse - - Tracing/Observability - - Evaluation - - Prompt Management - - Cost Tracking - - ... (see documentation)"] - Gateway["LLM Gateway (optional) - Internal or Open-source (e.g. LiteLLM) - - Schema translation - - Rate limiting - - PII redaction"] + LF["Langfuse
Tracing/Observability
Evaluation
Prompt Management
Cost Tracking
Security Monitoring
Experiments
... (see docs)"] + Gateway["LLM Gateway (optional)
Internal or Open-source (e.g. LiteLLM)
Schema translation
Rate limiting
PII redaction"] App -->|async tracing|LF LF -->|prompt management| App @@ -142,6 +132,10 @@ graph LR Gateway -->|"optional: forward llm calls"| LF ``` -## Talk to us +## Talk to us [#demo] + +import { ScheduleDemo } from "@/components/CalComScheduleDemo"; + +Reach out via email ([enterprise@langfuse.com](mailto:enterprise@langfuse.com)) or schedule a demo to discuss your specific needs and requirements. -Schedule an [introduction call](/schedule-demo) to discuss your specific needs and requirements. + diff --git a/pages/faq/all/ai-research-assistant-monitoring.mdx b/pages/faq/all/ai-research-assistant-monitoring.mdx index 7650cd869..69ed2c281 100644 --- a/pages/faq/all/ai-research-assistant-monitoring.mdx +++ b/pages/faq/all/ai-research-assistant-monitoring.mdx @@ -61,7 +61,7 @@ Utilize dashboards to visualize key performance metrics. - **Accuracy Metrics**: Track the correctness/accuracy scores of the AI's outputs. - **Usage Statistics**: Monitor how and when the AI assistant is used. -Explore how to use [analytics dashboards](/docs/analytics/dashboards) in Langfuse. +Explore how to use [analytics dashboards](/docs/analytics/overview) in Langfuse. ### 4. Testing and Evaluation diff --git a/pages/faq/all/best-braintrustdata-alternatives.mdx b/pages/faq/all/best-braintrustdata-alternatives.mdx new file mode 100644 index 000000000..209be6999 --- /dev/null +++ b/pages/faq/all/best-braintrustdata-alternatives.mdx @@ -0,0 +1,121 @@ +--- +title: Braintrust Data Alternatives? The best LLMOps platform? +tags: [product] +--- + +# Braintrust Alternative? Langfuse vs. Braintrust + +This article compares **Langfuse** and **Braintrust**, two platforms designed to empower developers to build and improve AI applications. + +## What is Braintrust? + + +![Braintrust](/images/blog/faq/braintrust/braintrust-example-screen.png) + + +[Braintrust](https://www.braintrust.dev/) is an LLM logging and experimentation platform. It provides tools for model evaluation, performance insights, real-time monitoring, and human review. They offer an LLM proxy to log application data and an in-UI playground for rapid prototyping. + + + Read our view on using LLM proxies for LLM application development [here](/blog/2024-09-langfuse-proxy). + + +## What is Langfuse? + + + +_Example trace in our [public demo](/docs/demo)_ + +[Langfuse](https://github.com/langfuse/langfuse) is an **open-source** LLM observability platform that offers comprehensive tracing, prompt management, evaluations, and human annotation queues. It empowers teams to understand and debug complex LLM applications, evaluate and iterate them in production, and maintain full control over their data. + +## How Do Langfuse and Braintrust Compare? + +Both platforms offer functionalities to support developers working with LLMs, but they differ in their features and underlying philosophy. + +### High level overview + +One of the biggest differences between [Langfuse](https://www.langfuse.com/) and [Braintrust](https://www.braintrust.dev/) is that Langfuse is **open-source**, making it free and easy to self-host and customize according to your needs. Being open-source provides transparency, flexibility, and full control over the codebase, allowing developers to inspect, modify, and contribute to the platform. +Langfuse is built for production use cases, with a focus on reliability, security, and control over infrastructure. + +Braintrust offers innovative in-UI experiences such as a playground, prompt iteration, and functions which makes it a great solution for experimentation. Langfuse focuses on its best-in-class core features: tracing, evaluations, prompt management, and open, stable APIs. + +### Feature Comparison + +| Feature | **Langfuse** | **Braintrust** | +|-----------------------------------------|---------------------------------------------------------------------------|----------------------------------------------------------------| +| **Open Source** | ✅ Yes ([GitHub Repository](https://github.com/langfuse/langfuse)) | ❌ No | +| **Customizability** | ✅ High (modify and extend as needed) | ⚠️ Limited (proprietary platform) | +| **LLM Proxy** | ❌ No (direct integrations) | ✅ Yes (provides AI proxy layer) | +| **Production Risks via Proxy** | ❌ None introduced by Langfuse | ⚠️ Potential risks (latency, downtime, data privacy concerns) | +| **Prompt Management** | ✅ Comprehensive ([Learn more](/docs/prompts/get-started)) | ✅ Yes | +| **Evaluation Framework** | ✅ Yes ([Learn more](/docs/scores/overview)) | ✅ Yes | +| **Human Annotation Queues** | ✅ Built-in ([Learn more](/docs/scores/annotation#annotation-queues)) | ❌ No | +| **LLM Playground**| ✅ Yes ([Learn more](/docs/playground)) | ✅ Yes | +| **Self-Hosting** | ✅ Open Source ([Deployment options](/docs/deployment/feature-overview)) | ⚠️ Enterprise Plans | +| **Integrations** | ✅ Yes ([Integrations](/docs/integrations/overview)) | ✅ Yes | + +import { Callout } from "nextra/components"; + +### Langfuse Strengths + +- **Open-Source**: Langfuse's open-source nature allows developers to inspect, modify, and contribute to the codebase, providing transparency and flexibility. +- **No LLM Proxy**: Langfuse integrates [directly](/blog/2024-09-langfuse-proxy) with LLMs without introducing an intermediary proxy, reducing potential risks related to latency, downtime, and data privacy. +- **Comprehensive Observability**: Offers deep insights into model interactions by tracing not only LLM calls, but also related application processes. +- **Self-Hosting Flexibility**: Provides self-hosting options, ensuring organizations can maintain full control over data residency, compliance, and security ([Learn more](/docs/deployment/feature-overview)). + +### Braintrust Considerations + +- **Proprietary Platform**: Braintrust is a closed source platform. This inherently limits transparency, customization and agency. +- **LLM Proxy**: Braintrust is focussed on an LLM proxy to access models from providers like OpenAI and Anthropic, introducing potential production risks: + - **Latency and Uptime Risks**: The proxy layer can introduce additional points of failure or performance bottlenecks. + - **Data Privacy Concerns**: Routing data through an external proxy may raise compliance issues, particularly for sensitive data. + - **Dependency on Third-Party Services**: Changes in proxy service terms or availability can impact application reliability. +- **Self-Hosting Limitations**: Braintrust's self-hosting options are limited to their enterprise plan. + +## Why Choose Langfuse Over Braintrust? + +- **Production Ready**: Langfuse is designed for [production](https://www.thoughtworks.com/radar/platforms/summary/langfuse) use cases, with a focus on reliability, security, and control over infrastructure. +- **Transparency and Control**: With Langfuse being open-source, you have full transparency into the platform's operations and can rely on it for the long-term. +- **Flexible Integration**: Langfuse integrates directly with popular LLM frameworks and SDKs, fitting seamlessly into your existing workflows. +- **Reduced Production Risks**: By [deciding not to use an LLM proxy](/blog/2024-09-langfuse-proxy), Langfuse eliminates potential points of failure and security risks associated with proxy layers. + +## Download Metrics + +| | pypi downloads | npm downloads | docker pulls | +| --------------- | -------- | ------------ | ----- | +| 🪢 Langfuse | [![Langfuse pypi downloads](https://img.shields.io/pypi/dm/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://pypi.org/project/langfuse) | [![Langfuse npm downloads](https://img.shields.io/npm/dm/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://www.npmjs.com/package/langfuse) | [![Langfuse Docker Pulls](https://img.shields.io/docker/pulls/langfuse/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://hub.docker.com/r/langfuse/langfuse) | +| Braintrust | [![Braintrust pypi downloads](https://img.shields.io/pypi/dm/braintrust?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://pypi.org/project/braintrust) | [![Braintrust npm downloads](https://img.shields.io/npm/dm/braintrust?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://www.npmjs.com/package/braintrust) | N/A | + +## Conclusion + +Both **Langfuse** and **Braintrust** offer valuable solutions for developers building AI applications with large language models. + +Langfuse's open-source nature provides transparency and flexibility, allowing organizations to customize the platform and maintain full control over their data—an essential factor for **production environments** where security and compliance are critical. Its direct integration with LLMs, without using LLM proxies, minimizes potential risks related to latency, uptime, and data privacy. + +Braintrust offers a tightly integrated suite of tools with a focus on evaluation, including a playground for rapid prototyping and A/B testing features. It provides a rich in-UI experience. + +--- + +## Other Comparisons +- Atla-AI has written up a review of LLM Evaluation Tooling, comparing [Braintrust and Langfuse](https://www.atla-ai.com/post/llm-evaluation-tooling-review). + +## Learn More About Langfuse + +- **Get Started with Langfuse**: [Documentation Overview](/docs) +- **Deployment Options**: [Self-Hosting Guide](/docs/deployment/feature-overview) +- **Integrations**: [Supported SDKs and Frameworks](/docs/integrations/overview) +- **Prompt Management**: [Managing Prompts in Production](/docs/prompts/get-started) +- **Evaluation Tools**: [Evaluating Model Outputs](/docs/scores/overview) + +--- + +*This comparison is out of date? Please [raise a pull request](https://github.com/langfuse/langfuse-docs/tree/main/pages/faq/all) with up-to-date information.* diff --git a/pages/faq/all/best-helicone-alternative.mdx b/pages/faq/all/best-helicone-alternative.mdx new file mode 100644 index 000000000..a468580c4 --- /dev/null +++ b/pages/faq/all/best-helicone-alternative.mdx @@ -0,0 +1,117 @@ +--- +title: The best LLMOps Platform? Helicone Alternatives +description: Helicone vs Langfuse - Both are both open source tools that offer similiar functionalities. We compare the two to help you choose the best LLMOps platform. +tags: [product] +--- + +# The best LLMOps Platform? Helicone Alternatives + +This article compares Helicone and Langfuse, two open source LLM observability platforms. + +## How do Helicone and Langfuse compare? + +Helicone and Langfuse are both open source tools that offer similar functionalities, including LLM observability, analytics, evaluation, testing, and annotation features. + +Both tools are great choices. Helicone is particularly good as an LLM Proxy while Langfuse's strengths lie in comprehensive, asynchronous tracing and the ability to easily self-host the platform. + +## Download and Usage Statistics + +Langfuse is the most popular open source LLM observability platform. You can find a comparison of GitHub stars and PyPI downloads vs. Helicone below. We are transparent about our [usage statistics](/about). + +### Community Engagement + + + + + | | ⭐️ GitHub stars | Last commit | GitHub Discussions | GitHub Issues | +| --------- | --------- | ---- | --- | ----- | +| 🪢 Langfuse | [![Langfuse GitHub stars](https://img.shields.io/github/stars/langfuse/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://github.com/langfuse/langfuse) | [![Langfuse last commit](https://img.shields.io/github/last-commit/langfuse/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://github.com/langfuse/langfuse) | [![Langfuse GitHub Discussions](https://img.shields.io/github/discussions/langfuse/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://github.com/orgs/langfuse/discussions) | [![Langfuse GitHub Issues](https://img.shields.io/github/issues-pr-closed-raw/langfuse/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://github.com/langfuse/langfuse/issues?q=is%3Aissue+is%3Aclosed) | +| Helicone | [![Helicone GitHub stars](https://img.shields.io/github/stars/helicone/helicone?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://github.com/helicone/helicone) | [![Helicone last commit](https://img.shields.io/github/last-commit/helicone/helicone?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://github.com/helicone/helicone) | [![Helicone GitHub Discussions](https://img.shields.io/github/discussions/helicone/helicone?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://github.com/orgs/helicone/discussions) | [![Helicone GitHub Issues](https://img.shields.io/github/issues-pr-closed-raw/helicone/helicone?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://github.com/helicone/helicone/issues?q=is%3Aissue+is%3Aclosed)| + + + + ![Github Star History of Langfuse and Helicone](/images/blog/faq/helicone-alternatives/github-star-history-langfuse-helicone.png) + + _source: [star-history.com](https://star-history.com/#langfuse/langfuse&helicone/helicone)_ + + + + +### Downloads +| | pypi downloads | npm downloads | docker pulls | +| ----- | --- | -------- | ----------- | +| 🪢 Langfuse | [![Langfuse pypi downloads](https://img.shields.io/pypi/dm/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://pypi.org/project/langfuse) | [![Langfuse npm downloads](https://img.shields.io/npm/dm/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://www.npmjs.com/package/langfuse) | [![Langfuse Docker Pulls](https://img.shields.io/docker/pulls/langfuse/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://hub.docker.com/r/langfuse/langfuse) | +| Helicone | [![Helicone pypi downloads](https://img.shields.io/pypi/dm/helicone?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://pypi.org/project/helicone) | [![Helicone npm downloads](https://img.shields.io/npm/dm/helicone?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://www.npmjs.com/package/helicone) | [![Helicone Docker Pulls](https://img.shields.io/docker/pulls/helicone/worker?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://hub.docker.com/r/helicone/worker) | + +## Helicone AI + +![Helicone logs table](/images/blog/faq/helicone-alternatives/helicone-logs-table.png) + +### What is Helicone? + +Helicone is an open source project for language model observability that provides a managed LLM proxy to log a variety of language models. Helicone offers their product as a managed cloud solution with a free plan [(up to 10k requests / month)](https://www.helicone.ai/pricing). + +### What is Helicone used for? + +- Logging an analysis of LLM outputs via the Helicone managed [LLM proxy](https://docs.helicone.ai/getting-started/integration-method/gateway). +- Ingestion and collection of user feedback through the Helicone feedback API. + +import { Callout } from "nextra/components"; + + + Read our view on using LLM proxies for LLM application development [here](/blog/2024-09-langfuse-proxy). + + +### Pros and Cons of Helicone + +| ✅ Advantages: | ⛔️ Limitations: | +| :---- | :---- | +| **Implementation:** Simple and quick setup process for LLM logging.

**Managed Proxy:** Monitoring though the Helicone managed proxy supporting caching, security checks, and key management. | **Limited Tracing Capabilities:** Natively provides only basic LLM logging with session grouping, [limited tracing](https://docs.helicone.ai/getting-started/integration-method/openllmetry) via OpenLLMetry.

**Lacks Deep Integration:** Does not support decorator or framework integrations for automatic trace generation.

**Evaluation Constraints:** Restricted to adding custom scores via the API with no support for LLM-as-a-judge methodology or manual annotation workflows. | + +## Langfuse + + +_Example trace in our [public demo](/docs/demo)_ + +### What is Langfuse? + +Langfuse is an LLM observability platform that provides a comprehensive tracing and logging solution for LLM applications. Langfuse helps teams to understand and debug complex LLM applications and evaluate and iterate them in production. + +### What is Langfuse used for? + +- Holistic tracing and debugging of LLM applications in large-scale production environments. +- High data security and compliance requirements in enterprises through best-in-class self-hosting options. +- Fast prototyping and iterating on LLM applications in technical teams. + +### Pros and Cons of Langfuse + +| ✅ Advantages: | ⛔️ Limitations: | +| :---- | :---- | +| **Comprehensive Tracing:** Effectively tracks both LLM and non-LLM actions, delivering [complete context](/docs/tracing) for applications.

**Integration Options**: Supports asynchronous logging and tracing SDKs with integrations for frameworks like [Langchain](/docs/integrations/langchain/tracing), [Llama Index](/docs/integrations/llama-index/get-started), [OpenAI SDK](/docs/integrations/openai/python/get-started), and [others](/docs/integrations/overview).

**Prompt Management:** Optimized for minimal latency and uptime risk, with [extensive capabilities](/docs/prompts/get-started).

**Deep Evaluation:** Facilitates user feedback collection, manual reviews, automated annotations, and [custom evaluation](/docs/scores/overview) functions.

**Self-Hosting:** Extensive [self-hosting documentation](/docs/deployment/feature-overview) of required for data security or compliance requirements. | **Additional Proxy Setup:** Some LLM-related features like caching and key management require an external proxy setup, such as LiteLLM, which [integrates natively with Langfuse](/docs/integrations/litellm/tracing). Langfuse is not in the critical path and does not provide these features.

Read more on our opinion on LLM proxies in production settings [here](/blog/2024-09-langfuse-proxy). | + +## Core Feature Comparison + +This table compares the core features of LLM observability tools: Logging model calls, managing and testing prompts in production, and evaluating model outputs. + +| | Helicone | 🪢 Langfuse | +| :---- | :---- | :---- | +| [Tracing and Logging](/docs/tracing) | Offers **basic LLM logging** capabilities with the ability to group logs into sessions. However, it does not provide detailed tracing and lacks support for framework integrations that would allow enhanced tracing functionalities. | Specializes in **comprehensive tracing**, enabling detailed tracking of both LLM and other activities within the system. Langfuse captures the **complete context** of applications and supports asynchronous logging with tracing SDKs, offering richer insights into application behavior. | +| [Prompt Management](/docs/prompts/get-started) | Currently in beta, it introduces **latency and uptime risks** if prompts are fetched at runtime without using their proxy. Users are required to manage prompt-fetching mechanisms independently. | Delivers robust prompt management solutions through client SDKs, ensuring **minimal impact on application latency** and uptime during prompt retrieval. | +| [Evaluation Capabilities](/docs/scores/overview) | Supports the addition of **custom scores** via its API, but does not offer advanced evaluation features beyond this basic capability. | Provides a wide array of evaluation tools, including mechanisms for **user feedback**, both **manual and automated annotations**, and the ability to define **custom evaluation functions**, enabling a richer and more thorough assessment of LLM performance. | + +## Conclusion + +Langfuse is a good choice for most **production use cases**, particularly when comprehensive **tracing**, deep **evaluation** capabilities, and robust **prompt management** are critical. Its ability to provide detailed insights into both **LLM and non-LLM activities**, along with support for **asynchronous logging** and various framework **integrations**, makes it ideal for complex applications requiring thorough observability. + +For teams prioritizing **ease of implementation** and willing to accept the trade-offs of increased risk and limited observability, Helicone's managed LLM proxy offers a **simpler setup** with features like caching and key management. + +## Other Helicone vs. Langfuse Comparisons +- Helicone has its own comparison against Langfuse live on [their website](https://www.helicone.ai/blog/best-langfuse-alternatives) + +## This comparison is out of date? + +Please [raise a pull request](https://github.com/langfuse/langfuse-docs/tree/main/pages/faq/all) with up to date information. + diff --git a/pages/faq/all/best-phoenix-arize-alternatives.mdx b/pages/faq/all/best-phoenix-arize-alternatives.mdx new file mode 100644 index 000000000..9356fa0c1 --- /dev/null +++ b/pages/faq/all/best-phoenix-arize-alternatives.mdx @@ -0,0 +1,114 @@ +--- +title: Arize Phoenix Alternative? Langfuse vs. Phoenix LLM Observability +tags: [product] +--- + +# Arize Phoenix Alternative? Langfuse vs. Phoenix LLM Observability + +This article compares [Arize Phoenix](https://docs.arize.com/phoenix) and [Langfuse](/), two **open source** LLM observability platforms. + +## High Level Comparison + +Arize Phoenix and Langfuse are both open-source tools for LLM observability, analytics, evaluation, testing, and annotation. However, they differ in focus, adoption, and suitability for different stages of LLM application development. + +**Langfuse** focuses on being **best in class** for core LLM engineering features (tracing, evaluations, prompt management, APIs), prompt management, and usage analytics. **Arize Phoenix** focuses on the **experimental and development** stages of LLM apps and is particularly strong for RAG use cases. + +- **Self-Hosting**: Langfuse is very easy to self-host and offers extensive [self-hosting documentation](/docs/deployment/feature-overview) for data security or compliance requirements. + +- **Integration with Arize**: Arize Phoenix is a good solution if your company already uses [Arize AI's](https://arize.com) platform. Phoenix enables a smooth data transfer between the two tools. However, it lacks **prompt management** and **LLM usage monitoring** features, which may limit its effectiveness in production environments. + +- **Adoption and Production Readiness**: Langfuse has a larger open source adoption compared to Arize Phoenix and is considered [battle-tested](https://www.thoughtworks.com/en-de/radar/platforms/langfuse) for production use cases. This makes Langfuse a good choice for companies seeking a reliable tool for live production environments. + +## Download and Usage Statistics + +Langfuse is the most popular open source LLM observability platform. You can find a comparison of GitHub stars and PyPI downloads vs. Arize Phoenix below. We are transparent about our [usage statistics](/about). + +### Community Engagement + + + + + | | ⭐️ GitHub stars | Last commit | GitHub Discussions | GitHub Issues | +| --------- | --------- | ---- | --- | ----- | +| 🪢 Langfuse | [![Langfuse GitHub stars](https://img.shields.io/github/stars/langfuse/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://github.com/langfuse/langfuse) | [![Langfuse last commit](https://img.shields.io/github/last-commit/langfuse/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://github.com/langfuse/langfuse) | [![Langfuse GitHub Discussions](https://img.shields.io/github/discussions/langfuse/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://github.com/orgs/langfuse/discussions) | [![Langfuse GitHub Issues](https://img.shields.io/github/issues-pr-closed-raw/langfuse/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://github.com/langfuse/langfuse/issues?q=is%3Aissue+is%3Aclosed) | +| Phoenix / Arize | [![Phoenix GitHub stars](https://img.shields.io/github/stars/arize-ai/phoenix?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://github.com/arize-ai/phoenix) | [![Phoenix last commit](https://img.shields.io/github/last-commit/arize-ai/phoenix?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://github.com/arize-ai/phoenix) | [![Phoenix GitHub Discussions](https://img.shields.io/github/discussions/arize-ai/phoenix?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://github.com/orgs/arize-ai/discussions) | [![Phoenix GitHub Issues](https://img.shields.io/github/issues-pr-closed-raw/arize-ai/phoenix?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://github.com/arize-ai/phoenix/issues?q=is%3Aissue+is%3Aclosed) | + +_Numbers refresh automatically via [shields.io](https://shields.io)_ + + + + ![Github Star History of Langfuse and Phoenix](public/images/blog/faq/phoenix-arize/github-star-history-langfuse-phoenix-arize.png) + + _source: [star-history.com](https://star-history.com/#langfuse/langfuse&arize-ai/phoenix&Date)_ + + + + +### Downloads +| | pypi downloads | npm downloads | docker pulls | +| ----- | --- | -------- | ----------- | +| 🪢 Langfuse | [![Langfuse pypi downloads](https://img.shields.io/pypi/dm/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://pypi.org/project/langfuse) | [![Langfuse npm downloads](https://img.shields.io/npm/dm/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://www.npmjs.com/package/langfuse) | [![Langfuse Docker Pulls](https://img.shields.io/docker/pulls/langfuse/langfuse?style=for-the-badge&label=%20&labelColor=black&color=orange)](https://hub.docker.com/r/langfuse/langfuse) | +| Phoenix / Arize | [![Phoenix pypi downloads](https://img.shields.io/pypi/dm/arize-phoenix?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://pypi.org/project/phoenix) | N/A | [![Phoenix Docker Pulls](https://img.shields.io/docker/pulls/arizephoenix/phoenix?style=for-the-badge&label=%20&labelColor=black&color=grey)](https://hub.docker.com/r/arizephoenix/phoenix) | + +_Numbers refresh automatically via [shields.io](https://shields.io)_ + +## Arize Phoenix + +![Arize Phoenix UI](/images/blog/faq/phoenix-arize/phoenix-arize-screen.png) + +### What is Arize Phoenix? + +Arize Phoenix is an open-source observability tool designed for experimentation, evaluation, and troubleshooting of LLM apps. Built by [Arize AI](https://arize.com), Phoenix enables AI engineers and data scientists to visualize data, evaluate performance, track down issues, and export data for improvements. + +### What is Arize Phoenix used for? + +- **Integration with Arize AI**: Share data when discovering insights to the Arize platform so the data science team can perform further investigation or kickoff retraining workflows. +- **Development and Experimentation**: Arize Phoenix is focused on the experimental and development stages of LLM applications, providing tools for model evaluation and troubleshooting. + +## Langfuse + + +_Example trace in our [public demo](/docs/demo)_ + +### What is Langfuse? + +Langfuse is an LLM observability platform that provides a comprehensive tracing and logging solution for LLM applications. Langfuse helps teams to understand and debug complex LLM applications and evaluate and iterate on them in production. + +### What is Langfuse used for? + +- **Holistic Tracing and Debugging**: Effective tracking of both LLM and non-LLM actions, delivering complete context for applications. +- **Production Environments**: Best in class for core LLM engineering features, emphasizing production-grade monitoring, debugging, and performance analytics. +- **Prompt Management**: Provides robust [prompt management](/docs/prompt-management) solutions through client SDKs, ensuring minimal impact on application latency and uptime during prompt retrieval. +- **Integration Options**: Supports asynchronous logging and tracing SDKs with integrations for frameworks like [LangChain](/docs/integrations/langchain/tracing), [LlamaIndex](/docs/integrations/llama-index/get-started), [OpenAI SDK](/docs/integrations/openai/python/get-started), and [others](/docs/integrations/overview). +- **Deep Evaluation**: Facilitates user feedback collection, manual reviews, annotation queues, [LLM-as-a-Judge](/docs/scores/model-based-evals) automated annotations, and [custom evaluation](/docs/scores/overview) functions. +- **Self-Hosting**: Extensive [self-hosting documentation](/docs/deployment/feature-overview) for data security or compliance requirements. + + +## Core Feature Comparison + +This table compares the core features of LLM observability tools: Logging model calls, managing and testing prompts in production, and evaluating model outputs. + + +| **Feature** | **Arize Phoenix** | **🪢 Langfuse** | +|-----------------------|-------------------|--------------| +| **Open Source** | ✅ Yes | ✅ [Yes](https://github.com/langfuse/langfuse) | +| **Tracing** | ✅ Yes | ✅ [Yes](/docs/tracing) | +| **Prompt Management** | ❌ No | ✅ [Yes](/docs/prompts/get-started) | +| **User Feedback** | ✅ Yes | ✅ [Yes](/docs/scores/user-feedback) | +| **Usage Monitoring** | ❌ No | ✅ [Yes](/docs/analytics/overview) | +| **Evaluations** | ✅ Yes | ✅ [Yes](/docs/scores/overview) | +| **Playground** | ❌ No | ✅ [Yes](/docs/playground) | + + +## Conclusion + +**Langfuse** is a great choice for most **production use cases**, particularly when comprehensive **tracing**, **prompt management**, deep **evaluation** capabilities, and robust **usage monitoring** are critical. Its ability to provide detailed insights into both **LLM and non-LLM activities**, along with support for asynchronous logging and various framework integrations, makes it ideal for complex applications requiring thorough observability. + +**Arize Phoenix** is a strong option if your company already uses **Arize AI's enterprise platform** and is focused on the **experimental and development stages** of LLM applications. It offers tools for evaluation and troubleshooting . However, its **lack of prompt management** and **comprehensive LLM usage monitoring** features may limit its effectiveness in production environments, making it less suitable for teams requiring these capabilities. + +## This comparison is out of date? + +Please [raise a pull request](https://github.com/langfuse/langfuse-docs/tree/main/pages/faq/all) with up-to-date information. diff --git a/pages/faq/all/chatbot-analytics.mdx b/pages/faq/all/chatbot-analytics.mdx index 3c5564501..7ccaed1b0 100644 --- a/pages/faq/all/chatbot-analytics.mdx +++ b/pages/faq/all/chatbot-analytics.mdx @@ -42,7 +42,7 @@ Capture detailed logs of user conversations and system processes. This data is e - **Conversation Logs**: Record user inputs and chatbot responses. - **System Traces**: Monitor the internal processes, including API calls and database queries. -Learn how to set up [logging and tracing](/docs/logging-and-tracing) with Langfuse. +Learn how to set up [logging and tracing](/docs/tracing) with Langfuse. ### 2. Feedback Integration @@ -61,7 +61,7 @@ Visualize key metrics and monitor the chatbot's performance over time. - **Engagement Metrics**: Track the number of interactions, session durations, and user retention rates. - **Performance Metrics**: Monitor response times and error rates. -Explore how to [analyze](/docs/analytics-dashboards) your chatbot metrics in Langfuse. +Explore how to [analyze](/docs/analytics/overview) your chatbot metrics in Langfuse. ### 4. Model Based Evaluations @@ -110,7 +110,7 @@ Understand how users interact with your chatbot. - **Interaction Patterns**: Identify common user intents and needs. - **Drop-off Analysis**: Find out where users disengage. -Learn more about [user behavior tracking](/docs/analytics/user-behavior). +Learn more about [user behavior tracking](/docs/analytics/overview). ### 4. Integrations @@ -119,7 +119,7 @@ Incorporate monitoring tools into your existing tech stack. - **SDKs and APIs**: Use provided tools to integrate quickly. - **PostHog**: Use the Langfuse PostHog [integration](/docs/analytics/posthog) to analyze your data in one place. -Langfuse offers a range of [integrations and SDKs](/docs/integrations/get-started). +Langfuse offers a range of [integrations and SDKs](/docs/integrations). ### 5. Scalability @@ -128,7 +128,7 @@ Ensure your monitoring solution can handle growth. - **Performance Optimization**: Maintain efficiency as data volume increases. - **Distributed Systems Support**: Monitor chatbots deployed across multiple servers or regions. -Langfuse is designed to [scale with your needs](/docs/scaling). +Langfuse is designed to scale with your needs. ## Start Tracking your Chatbot with Langfuse diff --git a/pages/faq/all/langsmith-alternative.mdx b/pages/faq/all/langsmith-alternative.mdx index 5d15f1aae..546e77921 100644 --- a/pages/faq/all/langsmith-alternative.mdx +++ b/pages/faq/all/langsmith-alternative.mdx @@ -38,8 +38,8 @@ Langfuse can be freely [self-hosted](/docs/deployment/self-host) and is open sou ## Langfuse and Langsmith Comparisons -The independent consultancy Astral Insights has written up a report comparing Langsmith and Langfuse. You can find it [here](https://astralinsights.ai/comparison-of-observability-platforms-langsmith-langfuse/). - +- Independent Consultancy Astral Insights has written up a report comparing Langsmith and Langfuse. You can find it [here](https://astralinsights.ai/comparison-of-observability-platforms-langsmith-langfuse/) +- Atla-AI has written up a review of LLM Evaluation Tooling, comparing [Langsmith and Langfuse](https://www.atla-ai.com/post/llm-evaluation-tooling-review) - There is a Reddit thread in which users discuss [Alternatives to Langsmith](https://www.reddit.com/r/LangChain/comments/1b2y18p/langsmith_started_charging_time_to_compare/). - Another Reddit thread discusses [free Alternatives to Langsmith](https://www.reddit.com/r/LocalLLaMA/comments/1aujfiz/real_free_alternative_to_langsmith/) diff --git a/pages/faq/all/missing-traces.mdx b/pages/faq/all/missing-traces.mdx index cbb2fef46..1c71002fe 100644 --- a/pages/faq/all/missing-traces.mdx +++ b/pages/faq/all/missing-traces.mdx @@ -3,7 +3,7 @@ title: I have setup Langfuse, but I do not see any traces in the dashboard. How tags: [setup, tracing, datasets] --- -# I have setup Langfuse, but I do not see any traces in the dashboard. How to solve this? +# I have setup Langfuse, but I do not see any traces in the dashboard ("Tracing Pending"). How to solve this? Langfuse runs all tracing integrations asynchronously ([learn more](/docs/tracing#queuing-batching)). Here are a few steps to resolve this issue: diff --git a/pages/guides/cookbook/datasets.md b/pages/guides/cookbook/datasets.md index f0baf69d9..f99f396a5 100644 --- a/pages/guides/cookbook/datasets.md +++ b/pages/guides/cookbook/datasets.md @@ -91,50 +91,43 @@ for item in local_items: ) ``` -## Define application and run experiments +## Example using Langfuse `@observe()` decorator -We implement the application in two ways to demonstrate how it's done +### Application -1. Custom LLM app using e.g. OpenAI SDK, traced with Langfuse Python SDK -2. Langchain Application, traced via native Langfuse integration +This an example production application that we want to evaluate. It is instrumented with the Langfuse Decorator. We do not need to change the application code to evaluate it subsequently. ```python -# we use a very simple eval here, you can use any eval library -# see https://langfuse.com/docs/scores/model-based-evals for details -def simple_evaluation(output, expected_output): - return output == expected_output -``` - -### Custom app - - -```python -from datetime import datetime +from langfuse.openai import openai +from langfuse.decorators import observe, langfuse_context +@observe() def run_my_custom_llm_app(input, system_prompt): messages = [ {"role":"system", "content": system_prompt}, {"role":"user", "content": input["country"]} ] - generationStartTime = datetime.now() - - openai_completion = openai.chat.completions.create( + completion = openai.chat.completions.create( model="gpt-3.5-turbo", messages=messages ).choices[0].message.content - langfuse_generation = langfuse.generation( - name="guess-countries", - input=messages, - output=openai_completion, - model="gpt-3.5-turbo", - start_time=generationStartTime, - end_time=datetime.now() - ) + return completion +``` + +### Experiment runner + +This is a simple experiment runner that runs the application on each item in the dataset and evaluates the output. - return openai_completion, langfuse_generation + +```python +# we use a very simple eval here, you can use any eval library +# see https://langfuse.com/docs/scores/model-based-evals for details +# you can also use LLM-as-a-judge managed within Langfuse to evaluate the outputs +def simple_evaluation(output, expected_output): + return output == expected_output ``` @@ -143,18 +136,30 @@ def run_experiment(experiment_name, system_prompt): dataset = langfuse.get_dataset("capital_cities") for item in dataset.items: - completion, langfuse_generation = run_my_custom_llm_app(item.input, system_prompt) + # item.observe() returns a trace_id that can be used to add custom evaluations later + # it also automatically links the trace to the experiment run + with item.observe(run_name=experiment_name) as trace_id: + + # run application, pass input and system prompt + output = run_my_custom_llm_app(item.input, system_prompt) + + # optional: add custom evaluation results to the experiment trace + # we use the previously created example evaluation function + langfuse.score( + trace_id=trace_id, + name="exact_match", + value=simple_evaluation(output, item.expected_output) + ) +``` - item.link(langfuse_generation, experiment_name) # pass the observation/generation object or the id +### Run experiments - langfuse_generation.score( - name="exact_match", - value=simple_evaluation(completion, item.expected_output) - ) -``` +Now we can easily run experiments with different configurations to explore which yields the best results. ```python +from langfuse.decorators import langfuse_context + run_experiment( "famous_city", "The user will input countries, respond with the most famous city in this country" @@ -171,9 +176,13 @@ run_experiment( "asking_specifically_2nd_try", "The user will input countries, respond with only the name of the capital. State only the name of the city." ) + +# Assert that all events were sent to the Langfuse API +langfuse_context.flush() +langfuse.flush() ``` -### Langchain application +## Example using Langchain ```python @@ -244,5 +253,3 @@ run_langchain_experiment( - Average scores per experiment run - Browse each run for an individual item - Look at traces to debug issues - -![Experiment runs in Langfuse](https://langfuse.com/images/docs/dataset-runs-cookbook.jpg) diff --git a/pages/guides/cookbook/evaluation_of_rag_with_ragas.md b/pages/guides/cookbook/evaluation_of_rag_with_ragas.md index 13bbe8b88..f63f11472 100644 --- a/pages/guides/cookbook/evaluation_of_rag_with_ragas.md +++ b/pages/guides/cookbook/evaluation_of_rag_with_ragas.md @@ -59,18 +59,24 @@ For going to measure the following aspects of a RAG system. These metric are fro 1. [faithfulness](https://docs.ragas.io/en/latest/concepts/metrics/faithfulness.html): This measures the factual consistency of the generated answer against the given context. 2. [answer_relevancy](https://docs.ragas.io/en/latest/concepts/metrics/answer_relevance.html): Answer Relevancy, focuses on assessing how pertinent the generated answer is to the given prompt. 3. [context precision](https://docs.ragas.io/en/latest/concepts/metrics/context_precision.html): Context Precision is a metric that evaluates whether all of the ground-truth relevant items present in the contexts are ranked high. Ideally all the relevant chunks must appear at the top ranks. This metric is computed using the question and the contexts, with values ranging between 0 and 1, where higher scores indicate better precision. -4. [aspect_critique](https://docs.ragas.io/en/latest/concepts/metrics/critique.html): This is designed to assess submissions based on predefined aspects such as harmlessness and correctness. Additionally, users have the flexibility to define their own aspects for evaluating submissions according to their specific criteria. Checkout the [RAGAS documentation](https://docs.ragas.io/en/latest/concepts/metrics/index.html) to know more about these metrics and how they work. ```python # import metrics -from ragas.metrics import faithfulness, answer_relevancy, context_precision -from ragas.metrics.critique import harmfulness +from ragas.metrics import ( + Faithfulness, + ResponseRelevancy, + LLMContextPrecisionWithoutReference, +) # metrics you chose -metrics = [faithfulness, answer_relevancy, context_precision, harmfulness] +metrics = [ + Faithfulness(), + ResponseRelevancy(), + LLMContextPrecisionWithoutReference(), +] ``` Now you have to initialize the metrics with LLMs and Embeddings of your choice. In this example we are going to use OpenAI. @@ -146,13 +152,18 @@ Here we are defining a utility function to score your trace with the metrics you ```python +from ragas.dataset_schema import SingleTurnSample + async def score_with_ragas(query, chunks, answer): scores = {} for m in metrics: - print(f"calculating {m.name}") - scores[m.name] = await m.ascore( - row={"question": query, "contexts": chunks, "answer": answer} + sample = SingleTurnSample( + user_input=query, + retrieved_contexts=chunks, + response=answer, ) + print(f"calculating {m.name}") + scores[m.name] = await m.single_turn_ascore(sample) return scores ``` @@ -298,10 +309,10 @@ for t in traces_sample: # run ragas evaluate from datasets import Dataset from ragas import evaluate -from ragas.metrics import faithfulness, answer_relevancy +from ragas.metrics import Faithfulness, ResponseRelevancy ds = Dataset.from_dict(evaluation_batch) -r = evaluate(ds, metrics=[faithfulness, answer_relevancy]) +r = evaluate(ds, metrics=[Faithfulness(), ResponseRelevancy()]) ``` And that is it! You can see the scores over a time period. diff --git a/pages/guides/cookbook/example_decorator_openai_langchain.md b/pages/guides/cookbook/example_decorator_openai_langchain.md index e1d65b08a..4b21bdc0d 100644 --- a/pages/guides/cookbook/example_decorator_openai_langchain.md +++ b/pages/guides/cookbook/example_decorator_openai_langchain.md @@ -1,6 +1,6 @@ --- description: LLM Rap Battle traced using the Langfuse Decorator, OpenAI & Langchain Integration -category: Examples +category: Integrations --- # Example: Langfuse Decorator + OpenAI Integration + Langchain Integration diff --git a/pages/guides/cookbook/example_multi_modal_traces.md b/pages/guides/cookbook/example_multi_modal_traces.md new file mode 100644 index 000000000..bf9c0add5 --- /dev/null +++ b/pages/guides/cookbook/example_multi_modal_traces.md @@ -0,0 +1,348 @@ +--- +category: Examples +description: Examples of how to use multi-modality and attachments with the Langfuse Python SDK. +--- + +# Example: Multi-modality and attachments + +These are examples of how to use multi-modality and attachments with the Langfuse Python SDK. + +See the [multi-modality documentation](https://langfuse.com/docs/tracing-features/multi-modality) for more details. + +## Setup + + +```python +%pip install langfuse langchain langchain_openai +``` + + +```python +import os +from urllib.request import urlretrieve +from urllib.error import URLError + +REPO_URL = "https://github.com/langfuse/langfuse-python" +download_path = "static" +os.makedirs(download_path, exist_ok=True) + +test_files = ["puton.jpg", "joke_prompt.wav", "bitcoin.pdf"] +raw_url = f"{REPO_URL}/raw/main/{download_path}" + +for file in test_files: + try: + urlretrieve(f"{raw_url}/{file}", f"{download_path}/{file}") + print(f"Successfully downloaded: {file}") + except URLError as e: + print(f"Failed to download {file}: {e}") + except OSError as e: + print(f"Failed to save {file}: {e}") +``` + + Successfully downloaded: puton.jpg + Successfully downloaded: joke_prompt.wav + Successfully downloaded: bitcoin.pdf + + + +```python +import os + +# Get keys for your project from the project settings page +# https://cloud.langfuse.com +os.environ["LANGFUSE_PUBLIC_KEY"] = "" +os.environ["LANGFUSE_SECRET_KEY"] = "" +os.environ["LANGFUSE_HOST"] = "https://cloud.langfuse.com" # 🇪🇺 EU region +# os.environ["LANGFUSE_HOST"] = "https://us.cloud.langfuse.com" # 🇺🇸 US region + +# Your openai key +os.environ["OPENAI_API_KEY"] = "" +``` + + +```python +from langfuse.openai import openai +import base64 + +client = openai.OpenAI() + +def encode_file(image_path): + with open(image_path, "rb") as file: + return base64.b64encode(file.read()).decode("utf-8") +``` + +## OpenAI SDK: Images + + +```python +content_path = "static/puton.jpg" +content_type = "image/jpeg" + +base64_image = encode_file(content_path) + +response = client.chat.completions.create( + model="gpt-4o-mini", + messages=[ + { + "role": "user", + "content": [ + {"type": "text", "text": "What’s in this image?"}, + { + "type": "image_url", + "image_url": { + "url": f"data:{content_type};base64,{base64_image}" + }, + }, + ], + } + ], + max_tokens=300, +) + +print(response.__dict__) + +openai.flush_langfuse() +``` + + {'id': 'chatcmpl-AVgfcbLDSfqWKWTZoFHyjnZuEgXcF', 'choices': [Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='The image shows a dog with a curly coat, interacting with a person by placing its front paws on their lap. In the background, there are some people standing, and the setting appears to be a cozy interior with wooden flooring and a patterned rug. The dog looks happy and friendly.', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None))], 'created': 1732115556, 'model': 'gpt-4o-mini-2024-07-18', 'object': 'chat.completion', 'service_tier': None, 'system_fingerprint': 'fp_3de1288069', 'usage': CompletionUsage(completion_tokens=57, prompt_tokens=25514, total_tokens=25571, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=0, audio_tokens=0, reasoning_tokens=0, rejected_prediction_tokens=0), prompt_tokens_details=PromptTokensDetails(audio_tokens=0, cached_tokens=0)), '_request_id': 'req_701836bd3ee49571c4aeb9600273cbda'} + + +## OpenAI SDK: Audio input and output + + +```python +content_path = "static/joke_prompt.wav" + +base64_string = encode_file(content_path) + +response = client.chat.completions.create( + model="gpt-4o-audio-preview", + modalities=["text", "audio"], + audio={"voice": "alloy", "format": "wav"}, + messages=[ + { + "role": "user", + "content": [ + {"type": "text", "text": "Do what this recording says."}, + { + "type": "input_audio", + "input_audio": {"data": base64_string, "format": "wav"}, + }, + ], + }, + ], +) + +print(response.__dict__) + +openai.flush_langfuse() +``` + + {'id': 'chatcmpl-AVgfgHKaVpqPK3HzJwV7kvhDC2CuY', 'choices': [Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content=None, refusal=None, role='assistant', audio=ChatCompletionAudio(id='audio_673dfc6a54048190976c16d98c11dcd7', data=, expires_at=1732119162, transcript='Why do Berliners always carry a pencil? \n\nIn case they need to draw the line at a German comedy show!'), function_call=None, tool_calls=None))], 'created': 1732115560, 'model': 'gpt-4o-audio-preview-2024-10-01', 'object': 'chat.completion', 'service_tier': None, 'system_fingerprint': 'fp_6e2d124157', 'usage': CompletionUsage(completion_tokens=151, prompt_tokens=66, total_tokens=217, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=0, audio_tokens=115, reasoning_tokens=0, rejected_prediction_tokens=0, text_tokens=36), prompt_tokens_details=PromptTokensDetails(audio_tokens=49, cached_tokens=0, text_tokens=17, image_tokens=0)), '_request_id': 'req_59902b4718abb9dbc82b83b40a8eda72'} + + +## Python Decorator: Attachments via `LangfuseMedia` + + +```python +from langfuse.decorators import observe, langfuse_context +from langfuse.media import LangfuseMedia + +with open("static/bitcoin.pdf", "rb") as pdf_file: + pdf_bytes = pdf_file.read() + +wrapped_obj = LangfuseMedia( + obj=pdf_bytes, content_bytes=pdf_bytes, content_type="application/pdf" +) + +@observe() +def main(): + langfuse_context.update_current_trace( + metadata={ + "context": wrapped_obj + }, + ) + + return # Limitation: LangfuseMedia object does not work in decorated function IO + +main() + +langfuse_context.flush() +``` + +## Langchain: Image input + + +```python +from langchain_openai import ChatOpenAI +from langchain_core.messages import HumanMessage + +from langfuse.callback import CallbackHandler + +handler = CallbackHandler() +model = ChatOpenAI(model="gpt-4o-mini") + +image_data = encode_file("static/puton.jpg") + +message = HumanMessage( + content=[ + {"type": "text", "text": "What's in this image?"}, + { + "type": "image_url", + "image_url": {"url": f"data:image/jpeg;base64,{image_data}"}, + }, + ], +) + +response = model.invoke([message], config={"callbacks": [handler]}) + +print(response.content) + +handler.flush() +``` + + The image shows a dog with a curly coat, sitting in a living room environment. The dog appears to be resting its front paws on someone's knee and has a happy expression. There are also a few people in the background, but they are not the focus of the image. The setting has wooden flooring and a colorful area rug. + + +## Custom via API + +[Link to API docs](https://api.reference.langfuse.com/#tag--Media) + +### Setup + + +```python +import os +import requests +import base64 +import hashlib +import uuid + +base_URL = os.getenv("LANGFUSE_HOST") +public_key = os.getenv("LANGFUSE_PUBLIC_KEY") +secret_key = os.getenv("LANGFUSE_SECRET_KEY") + +file_path = "static/puton.jpg" + +with open(file_path, "rb") as f: + content_bytes = f.read() + +content_type = "image/jpeg" +content_sha256 = base64.b64encode(hashlib.sha256(content_bytes).digest()).decode() +trace_id = str(uuid.uuid4()) +content_length = len(content_bytes) +field = "input" # or "output" or "metadata" + +create_upload_url_body = { + "traceId": trace_id, + "contentType": content_type, + "contentLength": content_length, + "sha256Hash": content_sha256, + "field": field, +} + +create_upload_url_body +``` + + + + + {'traceId': 'dd10d875-2fc2-4c40-a392-7e90bcf73165', + 'contentType': 'image/jpeg', + 'contentLength': 650780, + 'sha256Hash': 'i5BuV2qX9nPaAAPf7c0gCYPLPU2GS3VUFKctrbzTKu4=', + 'field': 'input'} + + + +### Get upload URL and media ID + + +```python +upload_url_request = requests.post( + f"{base_URL}/api/public/media", + auth=(public_key or "", secret_key or ""), + headers={"Content-Type": "application/json"}, + json=create_upload_url_body, +) + +upload_url_response = upload_url_request.json() +upload_url_response +``` + + + + + {'mediaId': 'a78bf29d-e1ac-496e-8bb3-94cda265a2d5', 'uploadUrl': None} + + + +Note: `uploadUrl` is `None` if the file is stored in Langfuse already as then there is no need to upload it again. + +### Upload file + + +```python +# If there is no uploadUrl, file was already uploaded +if ( + upload_url_response["mediaId"] is not None + and upload_url_response["uploadUrl"] is not None +): + upload_response = requests.put( + upload_url_response["uploadUrl"], + headers={ + "Content-Type": content_type, + "x-amz-checksum-sha256": content_sha256, + }, + data=content_bytes, + ) + + print("File uploaded") +``` + +### Update upload status + + +```python +from datetime import datetime, timezone + +if upload_response is not None: + requests.patch( + f"{base_URL}/api/public/media/{upload_url_response['mediaId']}", + auth=(public_key or "", secret_key or ""), + headers={"Content-Type": "application/json"}, + json={ + "uploadedAt": datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), # ISO 8601 + "uploadHttpStatus": upload_response.status_code, + "uploadHttpError": upload_response.text if upload_response.status_code != 200 else None, + }, + ) + + print("Upload status updated") +``` + +### Fetch media link + + +```python +media_request = requests.get( + f"{base_URL}/api/public/media/{upload_url_response['mediaId']}", + auth=(public_key or "", secret_key or "") +) + +media_response = media_request.json() +media_response + +``` + + + + + {'mediaId': 'a78bf29d-e1ac-496e-8bb3-94cda265a2d5', + 'contentType': 'image/jpeg', + 'contentLength': 650780, + 'url': 'https://langfuse-prod-eu-media.s3.eu-west-1.amazonaws.com/cloramnkj0002jz088vzn1ja4/a78bf29d-e1ac-496e-8bb3-94cda265a2d5.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAXEFUNOYRFMODTEQN%2F20241120%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20241120T151614Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEPf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCWV1LXdlc3QtMSJGMEQCIBmbvq%2B9T4Mk5nsglfiNGOQHslPUA1p%2BKMvMDlurLatzAiAstT7tldVey%2Flc3T%2B7fFtmZ78MjlOLWdG6jnN4wCCpAyr%2BAwiQ%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDQ5MDAwNDY0MTMxNCIM4ULT67%2BGIK%2FH9CHXKtIDiEd2vWk8EYhtkYBTW%2FHx9jjiJEQlg%2F6F0GQcu7FfdegnUz132ie10Yspb1HUD3JEljFtwRNmkKkTn1u10r7FRA2HYoVjUNJBmXFuwEBDM6ag2pbqGWDdYYCy7v8%2F7W8i%2FipQNed%2BSWqqMl0Op646tt2oyaUcN7ee4r4i6xm3xcOXMtoNBacgvV%2F3TCMMnIB81mwrwxxBsLT1i5a4PD6%2FqOoglAho7G4s0DDyF0hL9xr%2BQDlg2ls6h3biOu6TUvl%2FOQL%2FiZsxZwL1YMhTlR1u2ib5%2BM7jF0AVNI9wz6b619xeIWiAhrHTLZruVj9WvIIor25Si592FqcIyP7kVdAnp6tVIIy6lJkguZlrkUPPrSor6qz5IvMF3jg0m0Ka5LlB8yvhWe3gGEQXLJ6%2BggbnQSiyOp47JhQI8qtdIkIW2wVv6yESRkOQHspTRKk4TCJQwKxu3MO6SChG2ZSXb%2FCk1g%2BtXQA6t%2B%2B7oHQC9bBjjg5lmAt4KByGulT7iksgV%2FNrYNMGPrJ7aNQOyU8Tg2NdHAArBWjjl4vFG5JDO%2FYuGVgD%2BT9apomLkUs7msHMmTvuGUXOYVc14g%2BdBGYgg3MkhcNTguxbn28WwQ5H3k4zvVxZwjD77fe5BjqmASX2LkNpRhuO6oDFgPiP3AC9BCgZ71yAIqfohGYo9K6DWGTO4i78mtRexHYfsQeCNC3bfGLscrFRdGn%2BZtPeFOifowUhHUpMkAZms%2Fja5h27whM0dd0Kmg%2B9sk%2FmAtY2yHgRpdx1IL8HWGHnAmuLK9BcRGbI%2F6y%2BfuGbgVx6d1qskisFjB9HtCtfDeMe4KxSJKawvMqKV3hJ8On0udsRkMkNiIGItmk%3D&X-Amz-Signature=dce937c9165dd0395517c1176c6dfbc99d42fa57d6f9c426a55114161aecbc7b&X-Amz-SignedHeaders=host&x-id=GetObject', + 'urlExpiry': '2024-11-20T16:16:14.110Z', + 'uploadedAt': '2024-11-14T10:44:32.535Z'} + + diff --git a/pages/guides/cookbook/integration_amazon_bedrock.md b/pages/guides/cookbook/integration_amazon_bedrock.md index 0cebf0230..489702444 100644 --- a/pages/guides/cookbook/integration_amazon_bedrock.md +++ b/pages/guides/cookbook/integration_amazon_bedrock.md @@ -1,6 +1,7 @@ --- title: Observability and Metrics for Amazon Bedrock description: Open source observability for Amazon Bedrock applications and the Bedrock SDK. +category: Integrations --- # Amazon Bedrock Integration diff --git a/pages/guides/cookbook/integration_dspy.md b/pages/guides/cookbook/integration_dspy.md index e62d71148..d1654f945 100644 --- a/pages/guides/cookbook/integration_dspy.md +++ b/pages/guides/cookbook/integration_dspy.md @@ -9,7 +9,7 @@ This cookbook demonstrates how to use [DSPy](https://github.com/stanfordnlp/dspy Langfuse can help with running DSPy projects by providing a centralized observability platform for debugging and monitoring. -**Note**: This is a community contributed integration ([initial PR](https://github.com/stanfordnlp/dspy/pull/1186) by [@xucailiang](https://github.com/xucailiang)). DSPy documentation covering the integration can be found [here](https://dspy-docs.vercel.app/api/language_model_clients/langfuse). If you encounter issues or want to contribute to the integration, please open an issue or PR. +**Note**: This is a community contributed integration ([initial PR](https://github.com/stanfordnlp/dspy/pull/1186) by [@xucailiang](https://github.com/xucailiang)). DSPy documentation can be found [here](https://dspy-docs.vercel.app/intro/). If you encounter issues or want to contribute to the integration, please open an issue or PR. --- diff --git a/pages/guides/videos/llm-as-a-judge-eval-on-dataset-experiments.mdx b/pages/guides/videos/llm-as-a-judge-eval-on-dataset-experiments.mdx new file mode 100644 index 000000000..44d425c5a --- /dev/null +++ b/pages/guides/videos/llm-as-a-judge-eval-on-dataset-experiments.mdx @@ -0,0 +1,35 @@ +--- +title: "LLM-as-a-Judge Evaluators for Dataset Experiments" +description: "10 min walkthrough on how to reliably evaluate your LLM application changes using Langfuse's new managed LLM-as-a-judge evaluators." +ogImage: /images/videos/llm-as-a-judge-eval-on-dataset-experiments.jpg +--- + +# LLM-as-a-Judge Evaluators for Dataset Experiments + +10 min walkthrough on how to reliably evaluate your LLM application changes using Langfuse's new managed LLM-as-a-judge evaluators. + +This feature helps teams: + +- Automatically evaluate experiment runs against test datasets +- Compare metrics across different versions +- Identify regressions before they hit production +- Score outputs based on criteria like hallucination, helpfulness, relevance, and more + +Works with popular LLM providers including OpenAI, Anthropic, Azure OpenAI, and AWS Bedrock through function calling. + + + +More details: + +- [Changelog](/changelog/2024-11-19-llm-as-a-judge-for-datasets) +- [Docs: LLM-as-a-Judge Evaluators](/docs/scores/model-based-evals) +- [Docs: Dataset Experiments](/docs/datasets) diff --git a/pages/jp.mdx b/pages/jp.mdx new file mode 100644 index 000000000..dcc141054 --- /dev/null +++ b/pages/jp.mdx @@ -0,0 +1,118 @@ +--- +title: "Langfuse - 日本語概要" +description: "Langfuseは最も人気のあるオープンソースのLLMOpsプラットフォームです。チームが協力してAIアプリケーションを開発、監視、評価、デバッグするのを支援します。" +hreflang: [ + { lang: "en", url: "https://langfuse.com" }, + { lang: "ja", url: "https://langfuse.com/jp" } +] +--- + +# **Langfuse \- オープンソースLLMOpsプラットフォーム \- 日本語概要** + + + +注:Langfuseは、日本のユーザーとお客様に感謝し、母国語でLangfuseをわかりやすく紹介したいと考えています。 +その他のLangfuse のウェブサイトリソースはすべて英語のみで提供されていますが、Google Chromeの内蔵トランスレーターなどのツールを使用することで、他の言語でもご利用いただけます。 + + + +## **🇯🇵 🤝 🪢** + +Langfuse ユーザーのコミュニティが日本で大きく成長していることを嬉しく思います。皆様のサポートとフィードバックは私たちにとってかけがえのないものです。皆様からのご連絡をお待ちしております。いつでもお気軽にご連絡ください。 +Langfuseをご利用いただき、私たちの製品とコミュニティをご支援いただき、ありがとうございます。 + +## **Langfuse とは?** + +Langfuseは、大規模言語モデル(LLM)を利用したアプリケーションのために特別に設計された、**オープンソース**の観測・分析プラットフォームです。私たちは、開発者や組織がLLMアプリケーションの構築や改善を支援することを目的としており、高度なトレース&分析モジュールを通じて、モデルのコスト、品質、レイテンシに関する深い洞察を提供します。 + +[*公開デモ*](/docs/demo)*のトレース例を見る* + +### **Langfuseを選ぶ理由** + +Langfuseは、市場で[**最も人気のあるオープンソースのLLMOpsツール**](/blog/2024-11-most-used-oss-llmops)であり、最新のフレームワークとの統合を構築・維持する大規模なコミュニティを持っています。 + +Langfuseは[**セルフホストが**](/docs/deployment/feature-overview)**簡単**で、数分でセットアップが完了します。これは、規制業界の企業顧客にとっても特に興味深いものです。 + +Langfuseは**クラス最高のトレースを**提供し、お客様の製品開発と改良を支援します。 + +**注**:Langfuseを選ぶべき理由については、[こちら](/why)をお読みください。 + +## **主な特徴** + +Langfuse は、生成AIプロダクトの全サイクルをサポートする一連の機能を提供します:開発からテスト、大規模なモニタリングやデバッグまで、お客様の生成AIプロダクトの全サイクルをサポートします。 + +### **モニタリング** + +* **トレース**:外部APIやツールの呼び出し、コンテキスト、プロンプトなど、製品の[完全なコンテキスト](/docs/tracing)をキャプチャします。 +* **リアルタイム・メトリクス**:応答時間、エラー率、スループットなどの主要なパフォーマンス[指標](/docs/analytics/overview)を監視します。 +* **フィードバック**:アプリケーションのパフォーマンスとユーザーエクスペリエンスを向上させるために、[ユーザーからのフィードバック](/docs/scores/user-feedback)を収集します。 + +### **アナリティクス** + +* **評価**:[LLM-as-a-judge](/docs/scores/model-based-evals)による評価、または人的なアノテーションワークフローを設定することにより、異なるモデル、プロンプト、構成のパフォーマンスを比較を可能にします。 +* **テスト**:テストと[プロンプト管理](/docs/prompts/get-started)を通じて、最も効果的なソリューションを決定するために、アプリの異なるバージョン(A/B)で実験します。 +* **ユーザーの行動**:[ユーザーフィードバック](/docs/scores/user-feedback)により、AIアプリケーションをどのように操作するかを理解します。 + +### **デバッグ** + +* **詳細なデバッグログ**:トラブルシューティングのために、すべてのアプリケーション・アクティビティの包括的なログにアクセスできます。 +* **エラートラッキング**:アプリケーション内のエラーや異常を検出し、追跡します。 + +### **統合** + +* **フレームワークのサポート**:[LangChain](/docs/integrations/langchain/tracing)、[LlamaIndex](/docs/integrations/llama-index/get-started)、[AWS Bedrockなど](/docs/integrations/amazon-bedrock) の一般的なLLMフレームワークと統合。 +* **ツールのサポート**:Difyや[Langflow](/docs/integrations/langflow)のようなノーコードビルダーと統合できます。 +* **API**:カスタム統合やワークフロー自動化のためのオープンで強力な[API](https://api.reference.langfuse.com/#get-/api/public/comments)をご利用ください。 + +## **Langfuseを使い始める** + +Langfuseのご利用は簡単です: + + + +### **サインアップ** + +[Langfuse Cloud](https://cloud.langfuse.com/) にアクセスして無料アカウントを作成するか、数分でLangfuseを[セルフホスト](/docs/deployment/feature-overview)してください。新しいプロジェクトを作成し、Langfuse APIキーを取得してデータの取り込みを開始します。 + +### **ドキュメンテーションを調べる** + +OpenAIや[Langchainなど](/docs/integrations/langchain/tracing)のネイティブインテグレーションとLangfuseのセットアップガイド、またはAPIや[ローレベルSDK](/docs/sdk/python/low-level-sdk)を使用して任意のモデルをトレースするためのガイドについては、当社の[ドキュメント](https://docs.langfuse.com/)にアクセスしてください。 + +### **アプリケーションと統合する:** + +Langfuseは[インテグレーションやSDKを通して](/docs/integrations/overview)統合できます。LangfuseはDifyや[Langflow](/docs/integrations/langflow)のようなノーコードLLMビルダーとも統合できます。 + +### **モニタリングを開始する:** + +データの収集、パフォーマンスの監視を開始し、貴重な洞察を得ましょう。Langfuseはアプリケーションの動作を[トレース](/docs/tracing)として表示します。Langfuseの[ダッシュボード](/docs/analytics/overview)では、モデルコスト、評価スコア、ユーザフィードバックなどの概要を見ることができます。 + + + +## **日本語の外部リソース**: + +* [書籍:俺たちと探究するLLMアプリケーションのオブザーバビリティ](https://techbookfest.org/product/mn0L7GEm3s8Vhmxq971HEi?productVariantID=myG2YLxFNAEVkRf2dipG8f) +* [Blog記事: 生成AIアプリの出力をRagasで評価して、LangfuseでGUI監視しよう!](https://qiita.com/minorun365/items/70ad2f5a0afaac6e5cb9) +* [Blog記事: Google CloudでLLMアプリ監視ツールLangfuseをセルフホスティングする方法](https://zenn.dev/cloud_ace/articles/2a3668221e9c90) + +*リソースを追加したい場合は、[プルリクエストを上げて](https://github.com/langfuse/langfuse-docs)ください。* + +## **カスタマーサポート** + +私たちは、お客様のご希望の言語でサポートを提供することの重要性を理解しています。しかしながら、私たちは小さなチームですので、英語でのサポートしか提供することができません。 + +* **ウェブサイトチャット:** [ウェブサイト](/)上でチャットができます。 +* **GitHub :** [github.com/langfuse/discussions](https://github.com/orgs/langfuse/discussions) \- GitHubの公開ディスカッションボード(英語)で質問してください。 +* **Eメール :** [support@langfuse.com](mailto:support@langfuse.com) までご連絡ください。 +* **企業向けサポート:** [ガオ株式会社(GAO,inc.)](https://gao-ai.com)を通じて、Langfuse Enterpriseプランを日本円で購入し、日本語でサポートを受けることが可能です。ご興味のある方は [contact@gao-ai.com](mailto:contact@gao-ai.com) までご連絡ください。 +* [**Twitter**](https://x.com/LangfuseJP) (Langfuseチームによって保守されていない) + +## **Langfuseコミュニティに参加** + +成長し続けるグローバル・コミュニティの一員になりませんか: + +* ⭐️ [GitHub](https://github.com/langfuse/langfuse)でスターをつけると、アップデートが届く。 +* 🤷‍♂️ 連絡を取り合う:ソーシャルメディアで最新情報をご覧ください。 + * [Twitter](https://x.com/langfuse) + * [Discord](https://discord.langfuse.com/) + * [LinkedIn](https://www.linkedin.com/company/langfuse) +* 🖼️ [ラングフューズのステッカーを受け取る](https://langfuse.com/stickers) \ No newline at end of file diff --git a/pages/kr.mdx b/pages/kr.mdx new file mode 100644 index 000000000..c558d6602 --- /dev/null +++ b/pages/kr.mdx @@ -0,0 +1,116 @@ +--- +title: "Langfuse - 한국어 개요" +description: "Langfuse는 가장 인기 있는 오픈 소스 LLMOps 플랫폼입니다. 팀이 협력하여 AI 애플리케이션을 개발, 모니터링, 평가 및 디버깅할 수 있도록 도와줍니다." +hreflang: [ + { lang: "en", url: "https://langfuse.com" }, + { lang: "ko", url: "https://langfuse.com/kr" } +] +--- + +# **Langfuse \- 오픈 소스 LLMOps 플랫폼 \- 한국어 개요** + + + +이 페이지는 기계에 의해 번역되었습니다. 한국 사용자 및 고객 여러분께 감사드리며, 여러분의 모국어로 Langfuse를 쉽게 소개하고자 합니다. + + 다른 모든 Langfuse 웹사이트 리소스는 영어로만 제공되지만, 구글 크롬에 내장된 번역기 등의 도구를 통해 다른 언어로 이용할 수 있다는 점을 양해해 주세요. + + + +## **🇰🇷 🤝 🪢** + +한국에 대규모로 성장하고 있는 Langfuse 사용자 커뮤니티를 보유하게 되어 기쁘게 생각합니다. 여러분의 지원과 피드백은 저희에게 매우 소중합니다. 여러분과 함께 일하고 여러분의 의견을 기다리겠습니다. 언제든 언제든지 문의해 주세요. 모든 제출물을 읽고 답변해 드리겠습니다. +Langfuse를 사용해 주시고 저희 제품과 커뮤니티를 응원해 주셔서 감사합니다. + +## **랭퓨즈란 무엇인가요?** + +Langfuse는 대규모 언어 모델(LLM)로 구동되는 애플리케이션을 위해 특별히 설계된 **오픈 소스** 통합 가시성 및 분석 플랫폼입니다. 개발자와 조직이 LLM 애플리케이션을 구축하고 개선할 수 있도록 돕는 것이 우리의 사명입니다. 이를 위해 고급 추적 및 분석 모듈을 통해 모델 비용, 품질 및 지연 시간에 대한 심층적인 인사이트를 제공합니다. + +[*공개 데모에서*](/docs/demo) *추적 예시를 확인하세요.* + +### **왜 랭퓨즈를 선택해야 할까요?** + +Langfuse는 시장에서 [**가장 인기 있는 오픈소스 LLMOps 도구로**](/blog/2024-11-most-used-oss-llmops), 상당한 규모의 커뮤니티를 구축하고 최신 프레임워크와의 통합을 유지하고 있습니다. + +Langfuse는 [**셀프 호스팅이**](/docs/deployment/feature-overview) **쉬우며** 몇 분 안에 설정할 수 있습니다. 이는 특히 규제를 받는 산업에 종사하는 기업 고객에게 유용합니다. + +Langfuse는 제품을 개발하고 개선하는 데 도움이 되는 **동급 최고의 추적 기능을** 제공합니다. + +**참고**: Langfuse를 구축한 이유에 대한 자세한 내용은 [여기를](/why) 참조하세요. + +## **주요 기능** + +Langfuse는 AI 제품의 전체 주기를 지원하는 일련의 기능을 제공합니다: 개발 및 테스트부터 프로덕션 환경에서의 대규모 모니터링 및 디버깅까지. + +### **모니터링** + +* **추적**: 외부 API 또는 도구 호출, 컨텍스트, 프롬프트 등을 포함하여 제품의 [전체 컨텍스트를](/docs/tracing) 캡처하세요. +* **실시간 지표**: 응답 시간, 오류율, 처리량과 같은 주요 성과 [지표를](/docs/analytics/overview) 모니터링하세요. +* **피드백**: [사용자 피드백을](/docs/scores/user-feedback) 수집하여 애플리케이션의 성능과 사용자 경험을 개선하세요. + +### **분석** + +* **평가**: [LLM-as-a-Judge](/docs/scores/model-based-evals) 평가 또는 [인간 주석](/docs/scores/annotation) 워크플로를 설정하여 다양한 모델, 프롬프트 및 구성의 성능을 비교하세요. +* **테스트**: 다양한 버전의 앱(A/B)으로 실험하여 [테스트](/docs/datasets/overview) 및 [신속한 관리를](/docs/prompts/get-started) 통해 가장 효과적인 솔루션을 결정하세요. +* **사용자 행동**: [사용자가](/docs/scores/user-feedback) AI 애플리케이션과 상호 작용하는 방식을 이해합니다. + +### **디버깅** + +* **자세한 디버그 로그**: 문제 해결을 위해 모든 애플리케이션 활동에 대한 포괄적인 로그에 액세스하세요. +* **오류 추적**: 애플리케이션 내에서 오류와 이상 징후를 감지하고 추적하세요. + +### **통합** + +* **프레임워크 지원**: [LangChain](/docs/integrations/langchain/tracing), [LlamaIndex](/docs/integrations/llama-index/get-started), [AWS Bedrock과](/docs/integrations/amazon-bedrock) 같은 인기 있는 LLM 프레임워크와 통합하세요. +* **도구 지원**: [Dify](/docs/integrations/dify) 또는 [Langflow와](/docs/integrations/langflow) 같은 노코드 빌더와 통합하세요. +* **API**: 사용자 지정 통합 및 워크플로 자동화를 위한 개방적이고 강력한 [API를](https://api.reference.langfuse.com/#get-/api/public/comments) 활용하세요. + +## **Langfuse 시작하기** + +Langfuse와 함께 여정을 시작하는 방법은 간단합니다: + + + +### **가입하세요:** + +[Langfuse Cloud를](https://cloud.langfuse.com/) 방문하여 무료 계정을 만들거나 몇 분 안에 Langfuse를 [셀프 호스팅하세요](/docs/deployment/feature-overview). 새 프로젝트를 생성하고 Langfuse API 키를 받아 데이터 수집을 시작하세요. + +### **문서 살펴보기:** + +[문서에](https://docs.langfuse.com/) 액세스하여 [OpenAI](/docs/integrations/openai/python/get-started) 또는 [Langchain과](/docs/integrations/langchain/tracing) 같은 기본 통합을 통해 Langfuse를 설정하는 방법에 대한 가이드를 확인하거나, [API](https://api.reference.langfuse.com/#get-/api/public/comments) 또는 [로우레벨 SDK를](/docs/sdk/python/low-level-sdk) 사용하여 모든 모델을 추적할 수 있습니다. + +### **애플리케이션을 계측하세요:** + +[통합 또는 SDK를](/docs/integrations/overview) 통해 Langfuse를 통합하세요. Langfuse는 [Dify](/docs/integrations/dify) 또는 [Langflow와](/docs/integrations/langflow) 같은 코드가 필요 없는 LLM 빌더와도 통합할 수 있습니다. + +### **모니터링을 시작합니다:** + +데이터 수집, 성능 모니터링, 귀중한 인사이트 확보를 시작하세요. Langfuse는 애플리케이션 동작을 [트레이스](/docs/tracing) 형태로 보여줍니다. Langfuse [대시보드는](/docs/analytics/overview) 모델 비용, 평가 점수 및 사용자 피드백에 대한 개요를 제공합니다. + + + +## **한국어 리소스:** + +- [LLM 앱 디버깅 툴, Langfuse를 Amazon ECS에 배포하는 방법](https://www.youtube.com/watch?v=rrPQcWq5pe8) + +*리소스를 추가하려면 [풀](https://github.com/langfuse/langfuse-docs) 리퀘스트를 올려주세요.* + +## **고객 지원** + +고객이 선호하는 언어로 지원을 제공하는 것이 중요하다는 것을 잘 알고 있습니다. 하지만 소규모 팀인 저희는 영어로만 지원을 제공할 수 있습니다. + +* **웹사이트 채팅:** [웹사이트에서](/) 채팅하세요. +* **GitHub:** [github.com/langfuse/discussions](https://github.com/orgs/langfuse/discussions) \- 공개 GitHub 토론 게시판에서 질문하세요(영문). +* **이메일:** [support@langfuse.com](mailto:support@langfuse.com) 으로 문의하세요. +* **기업 지원:** 관심이 있으시면 [enterprise@langfuse.com](mailto:enterprise@langfuse.com) 으로 문의해 주세요. + +## **랭퓨즈 커뮤니티 가입하기** + +성장하는 글로벌 커뮤니티의 일원이 되어보세요: + +* ⭐️ [GitHub에](https://github.com/langfuse/langfuse) 별표를 표시하여 업데이트를 받아보세요. +* 🤷‍♂️ 연결 상태 유지: 소셜 미디어를 팔로우하여 최신 소식을 받아보세요. + * [트위터](https://x.com/langfuse) + * [디스코드](https://discord.langfuse.com/) + * [LinkedIn](https://www.linkedin.com/company/langfuse) +* 🖼️ [랑퓨즈 스티커 받기](https://langfuse.com/stickers) \ No newline at end of file diff --git a/pages/pricing-self-host.mdx b/pages/pricing-self-host.mdx new file mode 100644 index 000000000..a8160d262 --- /dev/null +++ b/pages/pricing-self-host.mdx @@ -0,0 +1,7 @@ +--- +description: Simple pricing for projects of all sizes. Get started on our Hobby plan without a credit card. +--- + +import Pricing from "@/components/home/Pricing"; + + diff --git a/pages/terms.mdx b/pages/terms.mdx index 054ac79af..b0b96a2be 100644 --- a/pages/terms.mdx +++ b/pages/terms.mdx @@ -16,14 +16,16 @@ import { FileDown } from "lucide-react"; /> -### Enterprise Edition (Self-Hosted) +### Commercial Self-Hosted Licenses: Pro & Enterprise } /> +If you run the free, MIT licensed version of Langfuse (FOSS), you do not need to enter into an agreement with us. See our [repository's license](https://github.com/langfuse/langfuse/blob/main/LICENSE) for more information. + For Enterprise and Sales inquiries, please contact us at [enterprise@langfuse.com](mailto:enterprise@langfuse.com). diff --git a/pages/why.mdx b/pages/why.mdx index 73da71fed..e4f69e0ea 100644 --- a/pages/why.mdx +++ b/pages/why.mdx @@ -16,8 +16,8 @@ ### Reliable Partner -- All changes to the Langfuse API and intgerations are covered by [semantic versioning](https://semver.org), we test public interfaces to ensure backwards compatibility, and run end-to-end integration tests for the most common use cases in CI. -- Raised a [$4M seed round](/blog/announcing-our-seed-round) from Lightspeed Ventures, General Catalyst, Y Combinator and angel investors. +- All changes to the Langfuse API and integrations are covered by [semantic versioning](https://semver.org); we test public interfaces to ensure backward compatibility and run end-to-end integration tests for the most common use cases in CI. +- Raised a [$4M seed round](/blog/announcing-our-seed-round) from Lightspeed Ventures, General Catalyst, Y Combinator, and angel investors. - Strong adoption and community growth ([see metrics](#metrics)). - [Learn more](/about) about us as a team. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9457b48fa..e8b4ac8da 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: ^2.1.10 version: 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@hookform/resolvers': - specifier: ^3.9.0 - version: 3.9.0(react-hook-form@7.53.0(react@18.3.1)) + specifier: ^3.9.1 + version: 3.9.1(react-hook-form@7.53.2(react@18.3.1)) '@radix-ui/react-accordion': specifier: ^1.2.1 version: 1.2.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -42,26 +42,26 @@ importers: specifier: ^1.1.1 version: 1.1.1(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@supabase/supabase-js': - specifier: ^2.45.4 - version: 2.45.4 + specifier: ^2.45.6 + version: 2.45.6 '@tanstack/react-table': specifier: ^8.20.5 version: 8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vercel/og': - specifier: ^0.6.3 - version: 0.6.3 + specifier: ^0.6.4 + version: 0.6.4 '@vercel/speed-insights': - specifier: ^1.0.12 - version: 1.0.12(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.18)(vue@3.4.29(typescript@5.6.3)) + specifier: ^1.0.14 + version: 1.0.14(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.18)(vue@3.4.29(typescript@5.6.3)) '@vidstack/react': specifier: ^0.6.15 version: 0.6.15(@types/react@18.3.3)(maverick.js@0.37.0)(react@18.3.1)(vidstack@0.6.15) ai: - specifier: ^3.4.10 - version: 3.4.10(react@18.3.1)(solid-js@1.8.17)(sswr@2.1.0(svelte@4.2.18))(svelte@4.2.18)(vue@3.4.29(typescript@5.6.3))(zod@3.23.8) + specifier: ^3.4.30 + version: 3.4.30(react@18.3.1)(solid-js@1.8.17)(sswr@2.1.0(svelte@4.2.18))(svelte@4.2.18)(vue@3.4.29(typescript@5.6.3))(zod@3.23.8) autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.47) + version: 10.4.20(postcss@8.4.49) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -69,41 +69,41 @@ importers: specifier: ^2.1.1 version: 2.1.1 framer-motion: - specifier: ^11.11.9 - version: 11.11.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^11.11.17 + version: 11.11.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1) geist: specifier: ^1.3.1 - version: 1.3.1(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 1.3.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) gpt3-tokenizer: specifier: ^1.1.5 version: 1.1.5 langfuse: - specifier: ^3.27.0 - version: 3.27.0 + specifier: ^3.29.1 + version: 3.29.1 lucide-react: - specifier: ^0.451.0 - version: 0.451.0(react@18.3.1) + specifier: ^0.460.0 + version: 0.460.0(react@18.3.1) next: - specifier: ^14.2.15 - version: 14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^15.0.3 + version: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-sitemap: specifier: ^4.2.3 - version: 4.2.3(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 4.2.3(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) nextra: - specifier: ^3.0.13 - version: 3.0.13(@types/react@18.3.3)(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + specifier: 3.0.15 + version: 3.0.15(@types/react@18.3.3)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) nextra-theme-docs: - specifier: ^3.0.13 - version: 3.0.13(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.0.13(@types/react@18.3.3)(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 3.0.15 + version: 3.0.15(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.0.15(@types/react@18.3.3)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) openai-edge: specifier: ^1.2.2 version: 1.2.2 postcss: - specifier: ^8.4.47 - version: 8.4.47 + specifier: ^8.4.49 + version: 8.4.49 posthog-js: - specifier: ^1.167.0 - version: 1.167.0 + specifier: ^1.187.2 + version: 1.187.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -111,8 +111,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) react-hook-form: - specifier: ^7.53.0 - version: 7.53.0(react@18.3.1) + specifier: ^7.53.2 + version: 7.53.2(react@18.3.1) react-markdown: specifier: ^9.0.1 version: 9.0.1(@types/react@18.3.3)(react@18.3.1) @@ -132,11 +132,11 @@ importers: specifier: ^2.5.4 version: 2.5.4 tailwindcss: - specifier: ^3.4.14 - version: 3.4.14 + specifier: ^3.4.15 + version: 3.4.15 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.14) + version: 1.0.7(tailwindcss@3.4.15) zod: specifier: ^3.23.8 version: 3.23.8 @@ -157,11 +157,14 @@ importers: typescript: specifier: ^5.6.3 version: 5.6.3 + xml2js: + specifier: ^0.6.2 + version: 0.6.2 packages: - '@ai-sdk/provider-utils@1.0.20': - resolution: {integrity: sha512-ngg/RGpnA00eNOWEtXHenpX1MsM2QshQh4QJFjUfwcqHpM5kTfG7je7Rc3HcEDP+OkRVv2GF+X4fC1Vfcnl8Ow==} + '@ai-sdk/provider-utils@1.0.22': + resolution: {integrity: sha512-YHK2rpj++wnLVc9vPGzGFP3Pjeld2MwhKinetA0zKXOoHAT/Jit5O8kZsxcSlJPu9wvcGT1UGZEjZrtO7PfFOQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -169,15 +172,15 @@ packages: zod: optional: true - '@ai-sdk/provider@0.0.24': - resolution: {integrity: sha512-XMsNGJdGO+L0cxhhegtqZ8+T6nn4EoShS819OvCgI2kLbYTIvk0GWFGD0AXJmxkxs3DrpsJxKAFukFR7bvTkgQ==} + '@ai-sdk/provider@0.0.26': + resolution: {integrity: sha512-dQkfBDs2lTYpKM8389oopPdQgIU007GQyCbuPPrV+K6MtSII3HBfE0stUIMXUb44L+LK1t6GXPP7wjSzjO6uKg==} engines: {node: '>=18'} - '@ai-sdk/react@0.0.62': - resolution: {integrity: sha512-1asDpxgmeHWL0/EZPCLENxfOHT+0jce0z/zasRhascodm2S6f6/KZn5doLG9jdmarcb+GjMjFmmwyOVXz3W1xg==} + '@ai-sdk/react@0.0.69': + resolution: {integrity: sha512-v3FvlxyzOHEV2a0iU6CAY4W3fm11I6RJwYONptN28/DFFxUX+q+7JqFaK+s0RoDQOCdgAkz5qaNzMeGjfJo+cg==} engines: {node: '>=18'} peerDependencies: - react: ^18 || ^19 + react: ^18 || ^19 || ^19.0.0-rc zod: ^3.0.0 peerDependenciesMeta: react: @@ -185,8 +188,8 @@ packages: zod: optional: true - '@ai-sdk/solid@0.0.49': - resolution: {integrity: sha512-KnfWTt640cS1hM2fFIba8KHSPLpOIWXtEm28pNCHTvqasVKlh2y/zMQANTwE18pF2nuXL9P9F5/dKWaPsaEzQw==} + '@ai-sdk/solid@0.0.54': + resolution: {integrity: sha512-96KWTVK+opdFeRubqrgaJXoNiDP89gNxFRWUp0PJOotZW816AbhUf4EnDjBjXTLjXL1n0h8tGSE9sZsRkj9wQQ==} engines: {node: '>=18'} peerDependencies: solid-js: ^1.7.7 @@ -194,17 +197,17 @@ packages: solid-js: optional: true - '@ai-sdk/svelte@0.0.51': - resolution: {integrity: sha512-aIZJaIds+KpCt19yUDCRDWebzF/17GCY7gN9KkcA2QM6IKRO5UmMcqEYja0ZmwFQPm1kBZkF2njhr8VXis2mAw==} + '@ai-sdk/svelte@0.0.57': + resolution: {integrity: sha512-SyF9ItIR9ALP9yDNAD+2/5Vl1IT6kchgyDH8xkmhysfJI6WrvJbtO1wdQ0nylvPLcsPoYu+cAlz1krU4lFHcYw==} engines: {node: '>=18'} peerDependencies: - svelte: ^3.0.0 || ^4.0.0 + svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 peerDependenciesMeta: svelte: optional: true - '@ai-sdk/ui-utils@0.0.46': - resolution: {integrity: sha512-ZG/wneyJG+6w5Nm/hy1AKMuRgjPQToAxBsTk61c9sVPUTaxo+NNjM2MhXQMtmsja2N5evs8NmHie+ExEgpL3cA==} + '@ai-sdk/ui-utils@0.0.50': + resolution: {integrity: sha512-Z5QYJVW+5XpSaJ4jYCCAVG7zIAuKOOdikhgpksneNmKvx61ACFaf98pmOd+xnjahl0pIlc/QIe6O4yVaJ1sEaw==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -212,8 +215,8 @@ packages: zod: optional: true - '@ai-sdk/vue@0.0.54': - resolution: {integrity: sha512-Ltu6gbuii8Qlp3gg7zdwdnHdS4M8nqKDij2VVO1223VOtIFwORFJzKqpfx44U11FW8z2TPVBYN+FjkyVIcN2hg==} + '@ai-sdk/vue@0.0.59': + resolution: {integrity: sha512-+ofYlnqdc8c4F6tM0IKF0+7NagZRAiqBJpGDJ+6EYhDW8FHLUP/JFBgu32SjxSxC6IKFZxEnl68ZoP/Z38EMlw==} engines: {node: '>=18'} peerDependencies: vue: ^3.3.4 @@ -235,16 +238,16 @@ packages: '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - '@babel/helper-string-parser@7.25.7': - resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.7': - resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.8': - resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -252,8 +255,8 @@ packages: resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.8': - resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} '@braintree/sanitize-url@7.1.0': @@ -293,6 +296,9 @@ packages: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@floating-ui/core@1.6.8': resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} @@ -324,8 +330,8 @@ packages: react: ^18 react-dom: ^18 - '@hookform/resolvers@3.9.0': - resolution: {integrity: sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==} + '@hookform/resolvers@3.9.1': + resolution: {integrity: sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug==} peerDependencies: react-hook-form: ^7.0.0 @@ -335,6 +341,111 @@ packages: '@iconify/utils@2.1.33': resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==} + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -466,59 +577,53 @@ packages: '@next/env@13.5.6': resolution: {integrity: sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==} - '@next/env@14.2.15': - resolution: {integrity: sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==} + '@next/env@15.0.3': + resolution: {integrity: sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==} - '@next/swc-darwin-arm64@14.2.15': - resolution: {integrity: sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==} + '@next/swc-darwin-arm64@15.0.3': + resolution: {integrity: sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@14.2.15': - resolution: {integrity: sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==} + '@next/swc-darwin-x64@15.0.3': + resolution: {integrity: sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@14.2.15': - resolution: {integrity: sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==} + '@next/swc-linux-arm64-gnu@15.0.3': + resolution: {integrity: sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.15': - resolution: {integrity: sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==} + '@next/swc-linux-arm64-musl@15.0.3': + resolution: {integrity: sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@14.2.15': - resolution: {integrity: sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==} + '@next/swc-linux-x64-gnu@15.0.3': + resolution: {integrity: sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.2.15': - resolution: {integrity: sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==} + '@next/swc-linux-x64-musl@15.0.3': + resolution: {integrity: sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@14.2.15': - resolution: {integrity: sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==} + '@next/swc-win32-arm64-msvc@15.0.3': + resolution: {integrity: sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.15': - resolution: {integrity: sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-x64-msvc@14.2.15': - resolution: {integrity: sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==} + '@next/swc-win32-x64-msvc@15.0.3': + resolution: {integrity: sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -961,27 +1066,27 @@ packages: engines: {node: '>= 8.0.0'} hasBin: true - '@supabase/auth-js@2.65.0': - resolution: {integrity: sha512-+wboHfZufAE2Y612OsKeVP4rVOeGZzzMLD/Ac3HrTQkkY4qXNjI6Af9gtmxwccE5nFvTiF114FEbIQ1hRq5uUw==} + '@supabase/auth-js@2.65.1': + resolution: {integrity: sha512-IA7i2Xq2SWNCNMKxwmPlHafBQda0qtnFr8QnyyBr+KaSxoXXqEzFCnQ1dGTy6bsZjVBgXu++o3qrDypTspaAPw==} - '@supabase/functions-js@2.4.1': - resolution: {integrity: sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA==} + '@supabase/functions-js@2.4.3': + resolution: {integrity: sha512-sOLXy+mWRyu4LLv1onYydq+10mNRQ4rzqQxNhbrKLTLTcdcmS9hbWif0bGz/NavmiQfPs4ZcmQJp4WqOXlR4AQ==} '@supabase/node-fetch@2.6.15': resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} engines: {node: 4.x || >=6.0.0} - '@supabase/postgrest-js@1.16.1': - resolution: {integrity: sha512-EOSEZFm5pPuCPGCmLF1VOCS78DfkSz600PBuvBND/IZmMciJ1pmsS3ss6TkB6UkuvTybYiBh7gKOYyxoEO3USA==} + '@supabase/postgrest-js@1.16.3': + resolution: {integrity: sha512-HI6dsbW68AKlOPofUjDTaosiDBCtW4XAm0D18pPwxoW3zKOE2Ru13Z69Wuys9fd6iTpfDViNco5sgrtnP0666A==} - '@supabase/realtime-js@2.10.2': - resolution: {integrity: sha512-qyCQaNg90HmJstsvr2aJNxK2zgoKh9ZZA8oqb7UT2LCh3mj9zpa3Iwu167AuyNxsxrUE8eEJ2yH6wLCij4EApA==} + '@supabase/realtime-js@2.10.7': + resolution: {integrity: sha512-OLI0hiSAqQSqRpGMTUwoIWo51eUivSYlaNBgxsXZE7PSoWh12wPRdVt0psUMaUzEonSB85K21wGc7W5jHnT6uA==} - '@supabase/storage-js@2.7.0': - resolution: {integrity: sha512-iZenEdO6Mx9iTR6T7wC7sk6KKsoDPLq8rdu5VRy7+JiT1i8fnqfcOr6mfF2Eaqky9VQzhP8zZKQYjzozB65Rig==} + '@supabase/storage-js@2.7.1': + resolution: {integrity: sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==} - '@supabase/supabase-js@2.45.4': - resolution: {integrity: sha512-E5p8/zOLaQ3a462MZnmnz03CrduA5ySH9hZyL03Y+QZLIOO4/Gs8Rdy4ZCKDHsN7x0xdanVEWWFN3pJFQr9/hg==} + '@supabase/supabase-js@2.45.6': + resolution: {integrity: sha512-qVXSSUhhIqdFnF2VUGgeecPvw1cDW6+avcTbRgur4LaGnzrJCbM3Rx7g81/SSZjjeqYOtmHuKWhiHzV/EN8Ktw==} '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -992,9 +1097,6 @@ packages: '@swc/helpers@0.5.13': resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - '@swc/helpers@0.5.5': - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} - '@tanstack/react-table@8.20.5': resolution: {integrity: sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==} engines: {node: '>=12'} @@ -1065,11 +1167,8 @@ packages: '@types/node@20.11.1': resolution: {integrity: sha512-DsXojJUES2M+FE8CpptJTKpg+r54moV9ZEncPstni1WHFmTcCzeFLnMFfyhCVS8XNOy/OQG+8lVxRLRrVHmV5A==} - '@types/node@22.7.4': - resolution: {integrity: sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==} - - '@types/phoenix@1.6.4': - resolution: {integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==} + '@types/phoenix@1.6.5': + resolution: {integrity: sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==} '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} @@ -1086,8 +1185,8 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/ws@8.5.10': - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + '@types/ws@8.5.12': + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} '@typescript/vfs@1.6.0': resolution: {integrity: sha512-hvJUjNVeBMp77qPINuUvYXj4FyWeeMMKZkxEATEU3hqBAQ7qdTBCUFT7Sp0Zu0faeEtFf+ldXxMEDr/bk73ISg==} @@ -1097,17 +1196,17 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vercel/og@0.6.3': - resolution: {integrity: sha512-aoCrC9FqkeA+WEEb9CwSmjD0rGlFeNqbUsI41JPmKWR9Hx6FFn86tvH96O5HZMF6VAXTGHxa3nPH3BokROpdgA==} + '@vercel/og@0.6.4': + resolution: {integrity: sha512-+IB8fYbVHEAtLfhCXSRS61Q/OfBJTaPCXhvGvXTBIUfs9lqZMDesZ2UnvKYbnEYHSMgCzBaj5BOq66iePl8mjw==} engines: {node: '>=16'} - '@vercel/speed-insights@1.0.12': - resolution: {integrity: sha512-ZGQ+a7bcfWJD2VYEp2R1LHvRAMyyaFBYytZXsfnbOMkeOvzGNVxUL7aVUvisIrTZjXTSsxG45DKX7yiw6nq2Jw==} + '@vercel/speed-insights@1.0.14': + resolution: {integrity: sha512-env1BkPddz1UaEZwBL4GmfRksMi2LbiYaKuoxMQjfLk83aEh7kkWMukkUhpQVs717NE6nnD+1+KO85GZHOZ4nQ==} peerDependencies: '@sveltejs/kit': ^1 || ^2 next: '>= 13' - react: ^18 || ^19 - svelte: ^4 + react: ^18 || ^19 || ^19.0.0-rc + svelte: '>= 4' vue: ^3 vue-router: ^4 peerDependenciesMeta: @@ -1176,19 +1275,19 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.13.0: - resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true - ai@3.4.10: - resolution: {integrity: sha512-K+Nm8+AsVWEJDd/DsezSlAteIvcA+HjCUDQhuXKVTBU4z+4lpyji6j9wsyaGBhwFDqGZgNzR/D0r5FQLasA4Jg==} + ai@3.4.30: + resolution: {integrity: sha512-Io3SZvvYjvCh3S/b3IuZUNVVBf9rU/fgh2JXdMs1vIMf4IdgreGW9XQtuXJi5jc+Mpe0Lotf4R9ll+krX5fsaQ==} engines: {node: '>=18'} peerDependencies: openai: ^4.42.0 - react: ^18 || ^19 + react: ^18 || ^19 || ^19.0.0-rc sswr: ^2.1.0 - svelte: ^3.0.0 || ^4.0.0 + svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 zod: ^3.0.0 peerDependenciesMeta: openai: @@ -1396,6 +1495,13 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + comma-separated-tokens@1.0.8: resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} @@ -1424,6 +1530,9 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + core-js@3.39.0: + resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} + cose-base@1.0.3: resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} @@ -1455,6 +1564,10 @@ packages: resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} engines: {node: '>=4'} + css-gradient-parser@0.0.16: + resolution: {integrity: sha512-3O5QdqgFRUbXvK1x5INf1YkBz1UKSWqrd63vWsum8MNHDBYD5urm3QtxZbKU259OrEXNM26lP/MPY3d1IGkBgA==} + engines: {node: '>=16'} + css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} @@ -1660,6 +1773,10 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} @@ -1687,8 +1804,8 @@ packages: electron-to-chromium@1.5.13: resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==} - emoji-regex@10.3.0: - resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1811,8 +1928,8 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - framer-motion@11.11.9: - resolution: {integrity: sha512-XpdZseuCrZehdHGuW22zZt3SF5g6AHJHJi7JwQIigOznW4Jg1n0oGPMJQheMaKLC+0rp5gxUKMRYI6ytd3q4RQ==} + framer-motion@11.11.17: + resolution: {integrity: sha512-O8QzvoKiuzI5HSAHbcYuL6xU+ZLXbrH7C8Akaato4JzQbX2ULNeniqC2Vo5eiCtFktX9XsJ+7nUhxcl2E2IjpA==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 @@ -1995,6 +2112,9 @@ packages: is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -2050,6 +2170,9 @@ packages: is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + is-reference@3.0.3: + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} + is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} @@ -2093,12 +2216,12 @@ packages: kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - langfuse-core@3.27.0: - resolution: {integrity: sha512-0GSQFMpQ4lFFIBIO3+7qyOHTnIXRuU93zbXxw8RvSv4kadhOjTLsxAhSs2y7kK3bpFkPHVBiQAp4Doo/FZjXtA==} + langfuse-core@3.29.1: + resolution: {integrity: sha512-sH+clcJA4xdhGxeJhJ/EqdZQk2z8zMwt1tw5zTyndUUaMfhNMIr5g4UR91nE37vbQtilWwXW0b3FInJJinriNw==} engines: {node: '>=18'} - langfuse@3.27.0: - resolution: {integrity: sha512-zYQae1ebHkZkSjGhDP64RtZrzMAadnUk5fcW63UHovKTSNDtlU6ed2h5rPSaKFv3SiXiHjhL8E5pnTh/wHhuvQ==} + langfuse@3.29.1: + resolution: {integrity: sha512-lGh/4yUdjpHcCnp2zNZiyAxgDHbFGD3te6ONjuL7I9REf++49k+gpycMTNEAo6sQHFbhiuB1FO345pAOR2+R8A==} engines: {node: '>=18'} langium@3.0.0: @@ -2151,13 +2274,13 @@ packages: lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - lucide-react@0.451.0: - resolution: {integrity: sha512-OwQ3uljZLp2cerj8sboy5rnhtGTCl9UCJIhT1J85/yOuGVlEH+xaUPR7tvNdddPvmV5M5VLdr7cQuWE3hzA4jw==} + lucide-react@0.460.0: + resolution: {integrity: sha512-BVtq/DykVeIvRTJvRAgCsOwaGL8Un3Bxh8MbDxMhEWlZay3T4IpEKDEpwt5KZ0KJMHzgm6jrltxlT5eXOWXDHg==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc - magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + magic-string@0.30.13: + resolution: {integrity: sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==} markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} @@ -2404,18 +2527,13 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} engines: {node: '>= 0.6'} next-sitemap@4.2.3: @@ -2431,34 +2549,37 @@ packages: react: ^16.8 || ^17 || ^18 react-dom: ^16.8 || ^17 || ^18 - next@14.2.15: - resolution: {integrity: sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==} - engines: {node: '>=18.17.0'} + next@15.0.3: + resolution: {integrity: sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-66855b96-20241106 + react-dom: ^18.2.0 || 19.0.0-rc-66855b96-20241106 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true '@playwright/test': optional: true + babel-plugin-react-compiler: + optional: true sass: optional: true - nextra-theme-docs@3.0.13: - resolution: {integrity: sha512-1NEo4NJxXRsNPE2PXlYdVlW7N8ZWe5XssePFKUq0comQaxDNc6SaxfBNw0VoQlwB3T5ifTp9f5wb9xfIjPa6OA==} + nextra-theme-docs@3.0.15: + resolution: {integrity: sha512-AhvmgcjFYi7aT5nRjdozqCt1hW39tqCIRKi4+pIR62ri26miB3VxREBYlCTHezcML2VLunyYIjFiiQGUan09gA==} peerDependencies: next: '>=13' - nextra: 3.0.13 + nextra: 3.0.15 react: '>=18' react-dom: '>=18' - nextra@3.0.13: - resolution: {integrity: sha512-aK5ZEnKGE2lWhJvFfpj7T35JeA4ytvo2zUiXJ5JApIpFrwkzy8IYTa+irGHB0l9sxGiRlss4p+nAM8Kunvmlug==} + nextra@3.0.15: + resolution: {integrity: sha512-iLKFNYwq8sciXPK9RPRmgifELSA2JLgEfL5y54stq7MvXuKn44MZJNzdhkJF4MXvx1HobzYLHl3/e37/Yf2htA==} engines: {node: '>=18'} peerDependencies: next: '>=13' @@ -2571,6 +2692,9 @@ packages: picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -2633,15 +2757,15 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} - posthog-js@1.167.0: - resolution: {integrity: sha512-/zXQ6tuJgiF1d4mgg3UsAi/uoyg7UnfFNQtikuALmaE53xFExpcAKbMfHPG/f54QgTvLxSHyGL1kFl/1uspkGg==} + posthog-js@1.187.2: + resolution: {integrity: sha512-IGKsZ7M4AYACm5I6gGGFrv9kR/MOnVYw11XFYCLk363n0nq+ghwenoW1jJVL9gZLGKiMsConUR8rG2DD2OMKyg==} - preact@10.22.0: - resolution: {integrity: sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==} + preact@10.24.3: + resolution: {integrity: sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==} prismjs@1.27.0: resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} @@ -2668,8 +2792,8 @@ packages: peerDependencies: react: ^18.3.1 - react-hook-form@7.53.0: - resolution: {integrity: sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==} + react-hook-form@7.53.2: + resolution: {integrity: sha512-YVel6fW5sOeedd1524pltpHX+jgU2u3DSDtXEaBORNdqiNrsX/nUI/iGXONegttg0mJVnfrIkiV0cmTU6Oo2xw==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 @@ -2825,10 +2949,13 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - satori@0.10.9: - resolution: {integrity: sha512-XU9EELUEZuioT4acLIpCXxHcFzrsC8muvg0MY28d+TlqwxbkTzBmWbw+3+hnCzXT7YZ0Qm8k3eXktDaEu+qmEw==} + satori@0.12.0: + resolution: {integrity: sha512-e0e+qQyeFwEszujN7SpWpRtZgww7Nh8lSO3bUn2spHZ5JpqEl3zJ3P14/JlWruxEwdgREs35ZnavrPrWaRVFDg==} engines: {node: '>=16'} + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} @@ -2842,6 +2969,11 @@ packages: secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + seroval-plugins@1.1.1: resolution: {integrity: sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==} engines: {node: '>=10'} @@ -2852,6 +2984,10 @@ packages: resolution: {integrity: sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==} engines: {node: '>=10'} + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -2878,6 +3014,9 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} @@ -2958,13 +3097,13 @@ packages: style-to-object@1.0.8: resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' peerDependenciesMeta: '@babel/core': optional: true @@ -3015,8 +3154,8 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders' - tailwindcss@3.4.14: - resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==} + tailwindcss@3.4.15: + resolution: {integrity: sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==} engines: {node: '>=14.0.0'} hasBin: true @@ -3041,10 +3180,6 @@ packages: resolution: {integrity: sha512-TARUb7z1pGvlLxgPk++7wJ6aycXF3GJ0sNSBTAsTuJrQG5QuZlkUQP+zl+nbjAh4gMX9yDw9ZYklMd7vAfJKEw==} engines: {node: '>=0.10.0'} - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -3069,11 +3204,8 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} twoslash-protocol@0.2.12: resolution: {integrity: sha512-5qZLXVYfZ9ABdjqbvPc4RWMr7PrpPaaDSeaYY55vl/w1j6H6kzsWK/urAEIXlzYlyrFmyz1UbwIt+AA0ck+wbg==} @@ -3098,9 +3230,6 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} @@ -3237,8 +3366,8 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - web-vitals@4.2.3: - resolution: {integrity: sha512-/CFAm1mNxSmOj6i0Co+iGFJ58OS4NRGVP+AWS/l509uIK5a1bSoIVaHz/ZumpHTfHSZBpgrJ+wjfpAOrTHok5Q==} + web-vitals@4.2.4: + resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -3283,8 +3412,8 @@ packages: utf-8-validate: optional: true - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3295,6 +3424,14 @@ packages: utf-8-validate: optional: true + xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + xmldom-sre@0.1.31: resolution: {integrity: sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==} engines: {node: '>=0.1'} @@ -3318,8 +3455,8 @@ packages: yoga-wasm-web@0.3.3: resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} - zod-to-json-schema@3.23.2: - resolution: {integrity: sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==} + zod-to-json-schema@3.23.5: + resolution: {integrity: sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==} peerDependencies: zod: ^3.23.3 @@ -3337,61 +3474,61 @@ packages: snapshots: - '@ai-sdk/provider-utils@1.0.20(zod@3.23.8)': + '@ai-sdk/provider-utils@1.0.22(zod@3.23.8)': dependencies: - '@ai-sdk/provider': 0.0.24 + '@ai-sdk/provider': 0.0.26 eventsource-parser: 1.1.2 - nanoid: 3.3.6 + nanoid: 3.3.7 secure-json-parse: 2.7.0 optionalDependencies: zod: 3.23.8 - '@ai-sdk/provider@0.0.24': + '@ai-sdk/provider@0.0.26': dependencies: json-schema: 0.4.0 - '@ai-sdk/react@0.0.62(react@18.3.1)(zod@3.23.8)': + '@ai-sdk/react@0.0.69(react@18.3.1)(zod@3.23.8)': dependencies: - '@ai-sdk/provider-utils': 1.0.20(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.46(zod@3.23.8) + '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) swr: 2.2.5(react@18.3.1) optionalDependencies: react: 18.3.1 zod: 3.23.8 - '@ai-sdk/solid@0.0.49(solid-js@1.8.17)(zod@3.23.8)': + '@ai-sdk/solid@0.0.54(solid-js@1.8.17)(zod@3.23.8)': dependencies: - '@ai-sdk/provider-utils': 1.0.20(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.46(zod@3.23.8) + '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) optionalDependencies: solid-js: 1.8.17 transitivePeerDependencies: - zod - '@ai-sdk/svelte@0.0.51(svelte@4.2.18)(zod@3.23.8)': + '@ai-sdk/svelte@0.0.57(svelte@4.2.18)(zod@3.23.8)': dependencies: - '@ai-sdk/provider-utils': 1.0.20(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.46(zod@3.23.8) + '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) sswr: 2.1.0(svelte@4.2.18) optionalDependencies: svelte: 4.2.18 transitivePeerDependencies: - zod - '@ai-sdk/ui-utils@0.0.46(zod@3.23.8)': + '@ai-sdk/ui-utils@0.0.50(zod@3.23.8)': dependencies: - '@ai-sdk/provider': 0.0.24 - '@ai-sdk/provider-utils': 1.0.20(zod@3.23.8) + '@ai-sdk/provider': 0.0.26 + '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) json-schema: 0.4.0 secure-json-parse: 2.7.0 - zod-to-json-schema: 3.23.2(zod@3.23.8) + zod-to-json-schema: 3.23.5(zod@3.23.8) optionalDependencies: zod: 3.23.8 - '@ai-sdk/vue@0.0.54(vue@3.4.29(typescript@5.6.3))(zod@3.23.8)': + '@ai-sdk/vue@0.0.59(vue@3.4.29(typescript@5.6.3))(zod@3.23.8)': dependencies: - '@ai-sdk/provider-utils': 1.0.20(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.46(zod@3.23.8) + '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) swrv: 1.0.4(vue@3.4.29(typescript@5.6.3)) optionalDependencies: vue: 3.4.29(typescript@5.6.3) @@ -3412,23 +3549,22 @@ snapshots: '@antfu/utils@0.7.10': {} - '@babel/helper-string-parser@7.25.7': {} + '@babel/helper-string-parser@7.25.9': {} - '@babel/helper-validator-identifier@7.25.7': {} + '@babel/helper-validator-identifier@7.25.9': {} - '@babel/parser@7.25.8': + '@babel/parser@7.26.2': dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.26.0 '@babel/runtime@7.24.7': dependencies: regenerator-runtime: 0.14.1 - '@babel/types@7.25.8': + '@babel/types@7.26.0': dependencies: - '@babel/helper-string-parser': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - to-fast-properties: 2.0.0 + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 '@braintree/sanitize-url@7.1.0': {} @@ -3466,6 +3602,11 @@ snapshots: '@discoveryjs/json-ext@0.5.7': {} + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + '@floating-ui/core@1.6.8': dependencies: '@floating-ui/utils': 0.2.8 @@ -3493,7 +3634,7 @@ snapshots: '@formatjs/intl-localematcher@0.5.5': dependencies: - tslib: 2.8.0 + tslib: 2.8.1 '@headlessui/react@2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -3504,9 +3645,9 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@hookform/resolvers@3.9.0(react-hook-form@7.53.0(react@18.3.1))': + '@hookform/resolvers@3.9.1(react-hook-form@7.53.2(react@18.3.1))': dependencies: - react-hook-form: 7.53.0(react@18.3.1) + react-hook-form: 7.53.2(react@18.3.1) '@iconify/types@2.0.0': {} @@ -3522,6 +3663,81 @@ snapshots: transitivePeerDependencies: - supports-color + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -3656,33 +3872,30 @@ snapshots: '@next/env@13.5.6': {} - '@next/env@14.2.15': {} - - '@next/swc-darwin-arm64@14.2.15': - optional: true + '@next/env@15.0.3': {} - '@next/swc-darwin-x64@14.2.15': + '@next/swc-darwin-arm64@15.0.3': optional: true - '@next/swc-linux-arm64-gnu@14.2.15': + '@next/swc-darwin-x64@15.0.3': optional: true - '@next/swc-linux-arm64-musl@14.2.15': + '@next/swc-linux-arm64-gnu@15.0.3': optional: true - '@next/swc-linux-x64-gnu@14.2.15': + '@next/swc-linux-arm64-musl@15.0.3': optional: true - '@next/swc-linux-x64-musl@14.2.15': + '@next/swc-linux-x64-gnu@15.0.3': optional: true - '@next/swc-win32-arm64-msvc@14.2.15': + '@next/swc-linux-x64-musl@15.0.3': optional: true - '@next/swc-win32-ia32-msvc@14.2.15': + '@next/swc-win32-arm64-msvc@15.0.3': optional: true - '@next/swc-win32-x64-msvc@14.2.15': + '@next/swc-win32-x64-msvc@15.0.3': optional: true '@nodelib/fs.scandir@2.1.5': @@ -4108,11 +4321,11 @@ snapshots: fflate: 0.7.4 string.prototype.codepointat: 0.2.1 - '@supabase/auth-js@2.65.0': + '@supabase/auth-js@2.65.1': dependencies: '@supabase/node-fetch': 2.6.15 - '@supabase/functions-js@2.4.1': + '@supabase/functions-js@2.4.3': dependencies: '@supabase/node-fetch': 2.6.15 @@ -4120,32 +4333,32 @@ snapshots: dependencies: whatwg-url: 5.0.0 - '@supabase/postgrest-js@1.16.1': + '@supabase/postgrest-js@1.16.3': dependencies: '@supabase/node-fetch': 2.6.15 - '@supabase/realtime-js@2.10.2': + '@supabase/realtime-js@2.10.7': dependencies: '@supabase/node-fetch': 2.6.15 - '@types/phoenix': 1.6.4 - '@types/ws': 8.5.10 - ws: 8.17.1 + '@types/phoenix': 1.6.5 + '@types/ws': 8.5.12 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@supabase/storage-js@2.7.0': + '@supabase/storage-js@2.7.1': dependencies: '@supabase/node-fetch': 2.6.15 - '@supabase/supabase-js@2.45.4': + '@supabase/supabase-js@2.45.6': dependencies: - '@supabase/auth-js': 2.65.0 - '@supabase/functions-js': 2.4.1 + '@supabase/auth-js': 2.65.1 + '@supabase/functions-js': 2.4.3 '@supabase/node-fetch': 2.6.15 - '@supabase/postgrest-js': 1.16.1 - '@supabase/realtime-js': 2.10.2 - '@supabase/storage-js': 2.7.0 + '@supabase/postgrest-js': 1.16.3 + '@supabase/realtime-js': 2.10.7 + '@supabase/storage-js': 2.7.1 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -4154,16 +4367,11 @@ snapshots: '@swc/helpers@0.5.11': dependencies: - tslib: 2.7.0 + tslib: 2.8.1 '@swc/helpers@0.5.13': dependencies: - tslib: 2.7.0 - - '@swc/helpers@0.5.5': - dependencies: - '@swc/counter': 0.1.3 - tslib: 2.7.0 + tslib: 2.8.1 '@tanstack/react-table@8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -4238,11 +4446,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@22.7.4': - dependencies: - undici-types: 6.19.8 - - '@types/phoenix@1.6.4': {} + '@types/phoenix@1.6.5': {} '@types/prop-types@15.7.13': {} @@ -4257,9 +4461,9 @@ snapshots: '@types/unist@3.0.3': {} - '@types/ws@8.5.10': + '@types/ws@8.5.12': dependencies: - '@types/node': 22.7.4 + '@types/node': 20.11.1 '@typescript/vfs@1.6.0(typescript@5.6.3)': dependencies: @@ -4270,15 +4474,15 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vercel/og@0.6.3': + '@vercel/og@0.6.4': dependencies: '@resvg/resvg-wasm': 2.4.0 - satori: 0.10.9 + satori: 0.12.0 yoga-wasm-web: 0.3.3 - '@vercel/speed-insights@1.0.12(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.18)(vue@3.4.29(typescript@5.6.3))': + '@vercel/speed-insights@1.0.14(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.18)(vue@3.4.29(typescript@5.6.3))': optionalDependencies: - next: 14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 svelte: 4.2.18 vue: 3.4.29(typescript@5.6.3) @@ -4292,7 +4496,7 @@ snapshots: '@vue/compiler-core@3.4.29': dependencies: - '@babel/parser': 7.25.8 + '@babel/parser': 7.26.2 '@vue/shared': 3.4.29 entities: 4.5.0 estree-walker: 2.0.2 @@ -4305,14 +4509,14 @@ snapshots: '@vue/compiler-sfc@3.4.29': dependencies: - '@babel/parser': 7.25.8 + '@babel/parser': 7.26.2 '@vue/compiler-core': 3.4.29 '@vue/compiler-dom': 3.4.29 '@vue/compiler-ssr': 3.4.29 '@vue/shared': 3.4.29 estree-walker: 2.0.2 - magic-string: 0.30.12 - postcss: 8.4.47 + magic-string: 0.30.13 + postcss: 8.4.49 source-map-js: 1.2.1 '@vue/compiler-ssr@3.4.29': @@ -4344,32 +4548,31 @@ snapshots: '@vue/shared@3.4.29': {} - acorn-jsx@5.3.2(acorn@8.13.0): + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: - acorn: 8.13.0 + acorn: 8.14.0 acorn-walk@8.3.2: {} acorn@8.12.1: {} - acorn@8.13.0: {} + acorn@8.14.0: {} - ai@3.4.10(react@18.3.1)(solid-js@1.8.17)(sswr@2.1.0(svelte@4.2.18))(svelte@4.2.18)(vue@3.4.29(typescript@5.6.3))(zod@3.23.8): + ai@3.4.30(react@18.3.1)(solid-js@1.8.17)(sswr@2.1.0(svelte@4.2.18))(svelte@4.2.18)(vue@3.4.29(typescript@5.6.3))(zod@3.23.8): dependencies: - '@ai-sdk/provider': 0.0.24 - '@ai-sdk/provider-utils': 1.0.20(zod@3.23.8) - '@ai-sdk/react': 0.0.62(react@18.3.1)(zod@3.23.8) - '@ai-sdk/solid': 0.0.49(solid-js@1.8.17)(zod@3.23.8) - '@ai-sdk/svelte': 0.0.51(svelte@4.2.18)(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.46(zod@3.23.8) - '@ai-sdk/vue': 0.0.54(vue@3.4.29(typescript@5.6.3))(zod@3.23.8) + '@ai-sdk/provider': 0.0.26 + '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) + '@ai-sdk/react': 0.0.69(react@18.3.1)(zod@3.23.8) + '@ai-sdk/solid': 0.0.54(solid-js@1.8.17)(zod@3.23.8) + '@ai-sdk/svelte': 0.0.57(svelte@4.2.18)(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) + '@ai-sdk/vue': 0.0.59(vue@3.4.29(typescript@5.6.3))(zod@3.23.8) '@opentelemetry/api': 1.9.0 eventsource-parser: 1.1.2 json-schema: 0.4.0 jsondiffpatch: 0.6.0 - nanoid: 3.3.6 secure-json-parse: 2.7.0 - zod-to-json-schema: 3.23.2(zod@3.23.8) + zod-to-json-schema: 3.23.5(zod@3.23.8) optionalDependencies: react: 18.3.1 sswr: 2.1.0(svelte@4.2.18) @@ -4412,7 +4615,7 @@ snapshots: aria-hidden@1.2.4: dependencies: - tslib: 2.7.0 + tslib: 2.8.1 aria-query@5.3.2: {} @@ -4422,14 +4625,14 @@ snapshots: astring@1.9.0: {} - autoprefixer@10.4.20(postcss@8.4.47): + autoprefixer@10.4.20(postcss@8.4.49): dependencies: browserslist: 4.23.3 caniuse-lite: 1.0.30001653 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 axobject-query@4.1.0: {} @@ -4541,7 +4744,7 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 '@types/estree': 1.0.6 - acorn: 8.13.0 + acorn: 8.14.0 estree-walker: 3.0.3 periscopic: 3.1.0 @@ -4559,6 +4762,18 @@ snapshots: color-name@1.1.4: {} + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + optional: true + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true + comma-separated-tokens@1.0.8: {} comma-separated-tokens@2.0.3: {} @@ -4575,6 +4790,8 @@ snapshots: confbox@0.1.8: {} + core-js@3.39.0: {} + cose-base@1.0.3: dependencies: layout-base: 1.0.2 @@ -4608,6 +4825,8 @@ snapshots: css-color-keywords@1.0.0: {} + css-gradient-parser@0.0.16: {} + css-to-react-native@3.2.0: dependencies: camelize: 1.0.1 @@ -4829,6 +5048,9 @@ snapshots: dequal@2.0.3: {} + detect-libc@2.0.3: + optional: true + detect-node-es@1.1.0: {} devlop@1.1.0: @@ -4849,7 +5071,7 @@ snapshots: electron-to-chromium@1.5.13: {} - emoji-regex@10.3.0: {} + emoji-regex@10.4.0: {} emoji-regex@8.0.0: {} @@ -4968,9 +5190,9 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@11.11.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + framer-motion@11.11.17(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - tslib: 2.7.0 + tslib: 2.8.1 optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -4980,9 +5202,9 @@ snapshots: function-bind@1.1.2: {} - geist@1.3.1(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + geist@1.3.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: - next: 14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) get-nonce@1.0.1: {} @@ -5251,6 +5473,9 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 + is-arrayish@0.3.2: + optional: true + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 @@ -5289,6 +5514,10 @@ snapshots: dependencies: '@types/estree': 1.0.6 + is-reference@3.0.3: + dependencies: + '@types/estree': 1.0.6 + is-stream@1.1.0: {} isexe@2.0.0: {} @@ -5326,13 +5555,13 @@ snapshots: kolorist@1.8.0: {} - langfuse-core@3.27.0: + langfuse-core@3.29.1: dependencies: mustache: 4.2.0 - langfuse@3.27.0: + langfuse@3.29.1: dependencies: - langfuse-core: 3.27.0 + langfuse-core: 3.29.1 langium@3.0.0: dependencies: @@ -5384,11 +5613,11 @@ snapshots: pseudomap: 1.0.2 yallist: 2.1.2 - lucide-react@0.451.0(react@18.3.1): + lucide-react@0.460.0(react@18.3.1): dependencies: react: 18.3.1 - magic-string@0.30.12: + magic-string@0.30.13: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -5793,8 +6022,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.13.0 - acorn-jsx: 5.3.2(acorn@8.13.0) + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 @@ -5956,7 +6185,7 @@ snapshots: mlly@1.7.2: dependencies: - acorn: 8.13.0 + acorn: 8.14.0 pathe: 1.1.2 pkg-types: 1.2.1 ufo: 1.5.4 @@ -5975,66 +6204,64 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.6: {} - nanoid@3.3.7: {} - negotiator@0.6.3: {} + negotiator@0.6.4: {} - next-sitemap@4.2.3(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + next-sitemap@4.2.3(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: '@corex/deepmerge': 4.0.43 '@next/env': 13.5.6 fast-glob: 3.3.2 minimist: 1.2.8 - next: 14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@next/env': 14.2.15 - '@swc/helpers': 0.5.5 + '@next/env': 15.0.3 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.13 busboy: 1.6.0 caniuse-lite: 1.0.30001653 - graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(react@18.3.1) + styled-jsx: 5.1.6(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.15 - '@next/swc-darwin-x64': 14.2.15 - '@next/swc-linux-arm64-gnu': 14.2.15 - '@next/swc-linux-arm64-musl': 14.2.15 - '@next/swc-linux-x64-gnu': 14.2.15 - '@next/swc-linux-x64-musl': 14.2.15 - '@next/swc-win32-arm64-msvc': 14.2.15 - '@next/swc-win32-ia32-msvc': 14.2.15 - '@next/swc-win32-x64-msvc': 14.2.15 + '@next/swc-darwin-arm64': 15.0.3 + '@next/swc-darwin-x64': 15.0.3 + '@next/swc-linux-arm64-gnu': 15.0.3 + '@next/swc-linux-arm64-musl': 15.0.3 + '@next/swc-linux-x64-gnu': 15.0.3 + '@next/swc-linux-x64-musl': 15.0.3 + '@next/swc-win32-arm64-msvc': 15.0.3 + '@next/swc-win32-x64-msvc': 15.0.3 '@opentelemetry/api': 1.9.0 + sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - nextra-theme-docs@3.0.13(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.0.13(@types/react@18.3.3)(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + nextra-theme-docs@3.0.15(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.0.15(@types/react@18.3.3)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@headlessui/react': 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) clsx: 2.1.1 escape-string-regexp: 5.0.0 flexsearch: 0.7.43 - next: 14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-themes: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - nextra: 3.0.13(@types/react@18.3.3)(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + nextra: 3.0.15(@types/react@18.3.3)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) scroll-into-view-if-needed: 3.1.0 zod: 3.23.8 - nextra@3.0.13(@types/react@18.3.3)(next@14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3): + nextra@3.0.15(@types/react@18.3.3)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3): dependencies: '@formatjs/intl-localematcher': 0.5.5 '@headlessui/react': 2.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -6053,8 +6280,8 @@ snapshots: gray-matter: 4.0.3 hast-util-to-estree: 3.1.0 katex: 0.16.11 - negotiator: 0.6.3 - next: 14.2.15(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + negotiator: 0.6.4 + next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) p-limit: 6.1.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6184,6 +6411,8 @@ snapshots: picocolors@1.1.0: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} pify@2.3.0: {} @@ -6203,28 +6432,28 @@ snapshots: path-data-parser: 0.1.0 points-on-curve: 0.2.0 - postcss-import@15.1.0(postcss@8.4.47): + postcss-import@15.1.0(postcss@8.4.49): dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.47): + postcss-js@4.0.1(postcss@8.4.49): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.47 + postcss: 8.4.49 - postcss-load-config@4.0.2(postcss@8.4.47): + postcss-load-config@4.0.2(postcss@8.4.49): dependencies: lilconfig: 3.1.2 yaml: 2.6.0 optionalDependencies: - postcss: 8.4.47 + postcss: 8.4.49 - postcss-nested@6.2.0(postcss@8.4.47): + postcss-nested@6.2.0(postcss@8.4.49): dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-selector-parser: 6.1.2 postcss-selector-parser@6.1.2: @@ -6237,22 +6466,23 @@ snapshots: postcss@8.4.31: dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.4.47: + postcss@8.4.49: dependencies: nanoid: 3.3.7 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 - posthog-js@1.167.0: + posthog-js@1.187.2: dependencies: + core-js: 3.39.0 fflate: 0.4.8 - preact: 10.22.0 - web-vitals: 4.2.3 + preact: 10.24.3 + web-vitals: 4.2.4 - preact@10.22.0: {} + preact@10.24.3: {} prismjs@1.27.0: {} @@ -6274,7 +6504,7 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-hook-form@7.53.0(react@18.3.1): + react-hook-form@7.53.2(react@18.3.1): dependencies: react: 18.3.1 @@ -6299,7 +6529,7 @@ snapshots: dependencies: react: 18.3.1 react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.7.0 + tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.3 @@ -6308,7 +6538,7 @@ snapshots: react: 18.3.1 react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.7.0 + tslib: 2.8.1 use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) optionalDependencies: @@ -6319,7 +6549,7 @@ snapshots: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.3.1 - tslib: 2.7.0 + tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.3 @@ -6528,19 +6758,22 @@ snapshots: safer-buffer@2.1.2: {} - satori@0.10.9: + satori@0.12.0: dependencies: '@shuding/opentype.js': 1.4.0-beta.0 css-background-parser: 0.1.0 css-box-shadow: 1.0.0-3 + css-gradient-parser: 0.0.16 css-to-react-native: 3.2.0 - emoji-regex: 10.3.0 + emoji-regex: 10.4.0 escape-html: 1.0.3 linebreak: 1.1.0 parse-css-color: 0.2.1 postcss-value-parser: 4.2.0 yoga-wasm-web: 0.3.3 + sax@1.4.1: {} + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 @@ -6556,6 +6789,9 @@ snapshots: secure-json-parse@2.7.0: {} + semver@7.6.3: + optional: true + seroval-plugins@1.1.1(seroval@1.1.1): dependencies: seroval: 1.1.1 @@ -6564,6 +6800,33 @@ snapshots: seroval@1.1.1: optional: true + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + optional: true + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -6589,6 +6852,11 @@ snapshots: signal-exit@4.1.0: {} + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + optional: true + sirv@2.0.4: dependencies: '@polka/url': 1.0.0-next.25 @@ -6670,7 +6938,7 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-jsx@5.1.1(react@18.3.1): + styled-jsx@5.1.6(react@18.3.1): dependencies: client-only: 0.0.1 react: 18.3.1 @@ -6699,15 +6967,15 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@types/estree': 1.0.6 - acorn: 8.13.0 + acorn: 8.14.0 aria-query: 5.3.2 axobject-query: 4.1.0 code-red: 1.0.4 css-tree: 2.3.1 estree-walker: 3.0.3 - is-reference: 3.0.2 + is-reference: 3.0.3 locate-character: 3.0.0 - magic-string: 0.30.12 + magic-string: 0.30.13 periscopic: 3.1.0 swr@2.2.5(react@18.3.1): @@ -6726,11 +6994,11 @@ snapshots: tailwind-merge@2.5.4: {} - tailwindcss-animate@1.0.7(tailwindcss@3.4.14): + tailwindcss-animate@1.0.7(tailwindcss@3.4.15): dependencies: - tailwindcss: 3.4.14 + tailwindcss: 3.4.15 - tailwindcss@3.4.14: + tailwindcss@3.4.15: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -6745,12 +7013,12 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.1.0 - postcss: 8.4.47 - postcss-import: 15.1.0(postcss@8.4.47) - postcss-js: 4.0.1(postcss@8.4.47) - postcss-load-config: 4.0.2(postcss@8.4.47) - postcss-nested: 6.2.0(postcss@8.4.47) + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-import: 15.1.0(postcss@8.4.49) + postcss-js: 4.0.1(postcss@8.4.49) + postcss-load-config: 4.0.2(postcss@8.4.49) + postcss-nested: 6.2.0(postcss@8.4.49) postcss-selector-parser: 6.1.2 resolve: 1.22.8 sucrase: 3.35.0 @@ -6778,8 +7046,6 @@ snapshots: titleize@1.0.0: {} - to-fast-properties@2.0.0: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -6796,9 +7062,7 @@ snapshots: ts-interface-checker@0.1.13: {} - tslib@2.7.0: {} - - tslib@2.8.0: {} + tslib@2.8.1: {} twoslash-protocol@0.2.12: {} @@ -6818,8 +7082,6 @@ snapshots: undici-types@5.26.5: {} - undici-types@6.19.8: {} - unicode-trie@2.0.0: dependencies: pako: 0.2.9 @@ -6921,7 +7183,7 @@ snapshots: use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): dependencies: react: 18.3.1 - tslib: 2.7.0 + tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.3 @@ -6929,7 +7191,7 @@ snapshots: dependencies: detect-node-es: 1.1.0 react: 18.3.1 - tslib: 2.7.0 + tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.3 @@ -6997,7 +7259,7 @@ snapshots: web-namespaces@2.0.1: {} - web-vitals@4.2.3: {} + web-vitals@4.2.4: {} webidl-conversions@3.0.1: {} @@ -7049,7 +7311,14 @@ snapshots: ws@7.5.10: {} - ws@8.17.1: {} + ws@8.18.0: {} + + xml2js@0.6.2: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} xmldom-sre@0.1.31: {} @@ -7063,7 +7332,7 @@ snapshots: yoga-wasm-web@0.3.3: {} - zod-to-json-schema@3.23.2(zod@3.23.8): + zod-to-json-schema@3.23.5(zod@3.23.8): dependencies: zod: 3.23.8 diff --git a/public/images/blog/2024-11-17-launch-week-2/launch-week-2-blog-header.png b/public/images/blog/2024-11-17-launch-week-2/launch-week-2-blog-header.png new file mode 100644 index 000000000..ea08969d9 Binary files /dev/null and b/public/images/blog/2024-11-17-launch-week-2/launch-week-2-blog-header.png differ diff --git a/public/images/blog/2024-11-17-launch-week-2/launch-week-2-theme-light.png b/public/images/blog/2024-11-17-launch-week-2/launch-week-2-theme-light.png new file mode 100644 index 000000000..5c3edf3ed Binary files /dev/null and b/public/images/blog/2024-11-17-launch-week-2/launch-week-2-theme-light.png differ diff --git a/public/images/blog/2024-11-17-launch-week-2/launch-week-2-theme.png b/public/images/blog/2024-11-17-launch-week-2/launch-week-2-theme.png new file mode 100644 index 000000000..46048725e Binary files /dev/null and b/public/images/blog/2024-11-17-launch-week-2/launch-week-2-theme.png differ diff --git a/public/images/blog/2024-11-17-launch-week-2/product-hunt-banner.jpg b/public/images/blog/2024-11-17-launch-week-2/product-hunt-banner.jpg new file mode 100644 index 000000000..916985897 Binary files /dev/null and b/public/images/blog/2024-11-17-launch-week-2/product-hunt-banner.jpg differ diff --git a/public/images/blog/2024-11-17-launch-week-2/townhall-invite-image.jpeg b/public/images/blog/2024-11-17-launch-week-2/townhall-invite-image.jpeg new file mode 100644 index 000000000..9c40a9fd1 Binary files /dev/null and b/public/images/blog/2024-11-17-launch-week-2/townhall-invite-image.jpeg differ diff --git a/public/images/blog/2024-11-llm-product-management/og.png b/public/images/blog/2024-11-llm-product-management/og.png new file mode 100644 index 000000000..917e89f93 Binary files /dev/null and b/public/images/blog/2024-11-llm-product-management/og.png differ diff --git a/public/images/blog/2024-11-most-used-oss-llmops-tool/most-used-oss-llmops-solution.png b/public/images/blog/2024-11-most-used-oss-llmops-tool/most-used-oss-llmops-solution.png new file mode 100644 index 000000000..8f2706ccf Binary files /dev/null and b/public/images/blog/2024-11-most-used-oss-llmops-tool/most-used-oss-llmops-solution.png differ diff --git a/public/images/blog/2024-11-most-used-oss-llmops-tool/star-history-aligned-timeline.png b/public/images/blog/2024-11-most-used-oss-llmops-tool/star-history-aligned-timeline.png new file mode 100644 index 000000000..5619fef95 Binary files /dev/null and b/public/images/blog/2024-11-most-used-oss-llmops-tool/star-history-aligned-timeline.png differ diff --git a/public/images/blog/2024-11-most-used-oss-llmops-tool/starhistory-oss-llmops-most-used.png b/public/images/blog/2024-11-most-used-oss-llmops-tool/starhistory-oss-llmops-most-used.png new file mode 100644 index 000000000..095199fd4 Binary files /dev/null and b/public/images/blog/2024-11-most-used-oss-llmops-tool/starhistory-oss-llmops-most-used.png differ diff --git a/public/images/blog/faq/braintrust/braintrust-example-screen.png b/public/images/blog/faq/braintrust/braintrust-example-screen.png new file mode 100644 index 000000000..b8c7482ef Binary files /dev/null and b/public/images/blog/faq/braintrust/braintrust-example-screen.png differ diff --git a/public/images/blog/faq/helicone-alternatives/github-star-history-langfuse-helicone.png b/public/images/blog/faq/helicone-alternatives/github-star-history-langfuse-helicone.png new file mode 100644 index 000000000..5dd841b52 Binary files /dev/null and b/public/images/blog/faq/helicone-alternatives/github-star-history-langfuse-helicone.png differ diff --git a/public/images/blog/faq/helicone-alternatives/helicone-logs-table.png b/public/images/blog/faq/helicone-alternatives/helicone-logs-table.png new file mode 100644 index 000000000..af51e7623 Binary files /dev/null and b/public/images/blog/faq/helicone-alternatives/helicone-logs-table.png differ diff --git a/public/images/blog/faq/phoenix-arize/github-star-history-langfuse-phoenix-arize.png b/public/images/blog/faq/phoenix-arize/github-star-history-langfuse-phoenix-arize.png new file mode 100644 index 000000000..e27f3a191 Binary files /dev/null and b/public/images/blog/faq/phoenix-arize/github-star-history-langfuse-phoenix-arize.png differ diff --git a/public/images/blog/faq/phoenix-arize/phoenix-arize-screen.png b/public/images/blog/faq/phoenix-arize/phoenix-arize-screen.png new file mode 100644 index 000000000..a33741b09 Binary files /dev/null and b/public/images/blog/faq/phoenix-arize/phoenix-arize-screen.png differ diff --git a/public/images/blog/langflow-langfuse/langflow-example-trace.png b/public/images/blog/langflow-langfuse/langflow-example-trace.png new file mode 100644 index 000000000..a56c5b091 Binary files /dev/null and b/public/images/blog/langflow-langfuse/langflow-example-trace.png differ diff --git a/public/images/changelog/2024-11-17-llms-txt.png b/public/images/changelog/2024-11-17-llms-txt.png new file mode 100644 index 000000000..b7857ef46 Binary files /dev/null and b/public/images/changelog/2024-11-17-llms-txt.png differ diff --git a/public/images/changelog/2024-11-17-vercel-ai-sdk-prompt-mgmt/og.png b/public/images/changelog/2024-11-17-vercel-ai-sdk-prompt-mgmt/og.png new file mode 100644 index 000000000..5261a240f Binary files /dev/null and b/public/images/changelog/2024-11-17-vercel-ai-sdk-prompt-mgmt/og.png differ diff --git a/public/images/changelog/2024-11-17-vercel-ai-sdk-prompt-mgmt/trace.png b/public/images/changelog/2024-11-17-vercel-ai-sdk-prompt-mgmt/trace.png new file mode 100644 index 000000000..3598594b7 Binary files /dev/null and b/public/images/changelog/2024-11-17-vercel-ai-sdk-prompt-mgmt/trace.png differ diff --git a/public/images/changelog/2024-11-18-dataset-runs-comparison-view/og.png b/public/images/changelog/2024-11-18-dataset-runs-comparison-view/og.png new file mode 100644 index 000000000..beba7e86d Binary files /dev/null and b/public/images/changelog/2024-11-18-dataset-runs-comparison-view/og.png differ diff --git a/public/images/changelog/2024-11-19-dataset-evaluators.png b/public/images/changelog/2024-11-19-dataset-evaluators.png new file mode 100644 index 000000000..39601de3a Binary files /dev/null and b/public/images/changelog/2024-11-19-dataset-evaluators.png differ diff --git a/public/images/changelog/2024-11-20-full-multi-modal-images-audio-attachments.png b/public/images/changelog/2024-11-20-full-multi-modal-images-audio-attachments.png new file mode 100644 index 000000000..3c6f642f9 Binary files /dev/null and b/public/images/changelog/2024-11-20-full-multi-modal-images-audio-attachments.png differ diff --git a/public/images/changelog/2024-11-21-documentation-update/repos.png b/public/images/changelog/2024-11-21-documentation-update/repos.png new file mode 100644 index 000000000..3cc34d5a3 Binary files /dev/null and b/public/images/changelog/2024-11-21-documentation-update/repos.png differ diff --git a/public/images/changelog/2024-11-21-new-documentation.png b/public/images/changelog/2024-11-21-new-documentation.png new file mode 100644 index 000000000..b538399d2 Binary files /dev/null and b/public/images/changelog/2024-11-21-new-documentation.png differ diff --git a/public/images/docs/lobechat-converstation.png b/public/images/docs/lobechat-converstation.png new file mode 100644 index 000000000..e896a0c48 Binary files /dev/null and b/public/images/docs/lobechat-converstation.png differ diff --git a/public/images/docs/lobechat-docker-desktop-env.png b/public/images/docs/lobechat-docker-desktop-env.png new file mode 100644 index 000000000..536f37d56 Binary files /dev/null and b/public/images/docs/lobechat-docker-desktop-env.png differ diff --git a/public/images/docs/lobechat-example-trace.png b/public/images/docs/lobechat-example-trace.png new file mode 100644 index 000000000..786ed3970 Binary files /dev/null and b/public/images/docs/lobechat-example-trace.png differ diff --git a/public/images/docs/lobechat-settings.png b/public/images/docs/lobechat-settings.png new file mode 100644 index 000000000..fbde4bac2 Binary files /dev/null and b/public/images/docs/lobechat-settings.png differ diff --git a/public/images/docs/multi-modal-trace-attachment.png b/public/images/docs/multi-modal-trace-attachment.png new file mode 100644 index 000000000..889ca5e42 Binary files /dev/null and b/public/images/docs/multi-modal-trace-attachment.png differ diff --git a/public/images/docs/multi-modal-trace-audio.png b/public/images/docs/multi-modal-trace-audio.png new file mode 100644 index 000000000..43efe94f4 Binary files /dev/null and b/public/images/docs/multi-modal-trace-audio.png differ diff --git a/public/images/docs/multi-modal-trace-image.jpg b/public/images/docs/multi-modal-trace-image.jpg new file mode 100644 index 000000000..3e05cc75d Binary files /dev/null and b/public/images/docs/multi-modal-trace-image.jpg differ diff --git a/public/images/docs/multi-modal-trace.png b/public/images/docs/multi-modal-trace.png index 7c45ed290..1fa15119e 100644 Binary files a/public/images/docs/multi-modal-trace.png and b/public/images/docs/multi-modal-trace.png differ diff --git a/public/images/docs/openwebui-integration.gif b/public/images/docs/openwebui-integration.gif new file mode 100644 index 000000000..7585b971c Binary files /dev/null and b/public/images/docs/openwebui-integration.gif differ diff --git a/public/images/docs/prompt-experiments-new-experiment.png b/public/images/docs/prompt-experiments-new-experiment.png new file mode 100644 index 000000000..5381b083e Binary files /dev/null and b/public/images/docs/prompt-experiments-new-experiment.png differ diff --git a/public/images/docs/python-decorator-simple-trace.png b/public/images/docs/python-decorator-simple-trace.png index a2fbf27f4..9ac915261 100644 Binary files a/public/images/docs/python-decorator-simple-trace.png and b/public/images/docs/python-decorator-simple-trace.png differ diff --git a/public/images/docs/session.png b/public/images/docs/session.png index 207bb6b9e..43d894393 100644 Binary files a/public/images/docs/session.png and b/public/images/docs/session.png differ diff --git a/public/images/docs/starhistory-oss-llmops-most-used.png b/public/images/docs/starhistory-oss-llmops-most-used.png new file mode 100644 index 000000000..6b3b378f8 Binary files /dev/null and b/public/images/docs/starhistory-oss-llmops-most-used.png differ diff --git a/public/images/docs/tracing-observation-tree-dark.png b/public/images/docs/tracing-observation-tree-dark.png index 1da01154e..078e294f6 100644 Binary files a/public/images/docs/tracing-observation-tree-dark.png and b/public/images/docs/tracing-observation-tree-dark.png differ diff --git a/public/images/docs/tracing-observation-tree-light.png b/public/images/docs/tracing-observation-tree-light.png index 00f79a280..c599c7c1f 100644 Binary files a/public/images/docs/tracing-observation-tree-light.png and b/public/images/docs/tracing-observation-tree-light.png differ diff --git a/public/images/docs/users-list.png b/public/images/docs/users-list.png index 5aca5db77..c792e8365 100644 Binary files a/public/images/docs/users-list.png and b/public/images/docs/users-list.png differ diff --git a/public/images/docs/vercel-nested-trace.png b/public/images/docs/vercel-nested-trace.png new file mode 100644 index 000000000..5ee9b5313 Binary files /dev/null and b/public/images/docs/vercel-nested-trace.png differ diff --git a/public/images/people/jannikmaierhoefer.jpg b/public/images/people/jannikmaierhoefer.jpg index be805472b..7dfa2a782 100644 Binary files a/public/images/people/jannikmaierhoefer.jpg and b/public/images/people/jannikmaierhoefer.jpg differ diff --git a/public/images/people/steffenschmitz.jpg b/public/images/people/steffenschmitz.jpg new file mode 100644 index 000000000..65b7a0975 Binary files /dev/null and b/public/images/people/steffenschmitz.jpg differ diff --git a/public/images/producthunt-white.png b/public/images/producthunt-white.png new file mode 100644 index 000000000..1cc9fb0ef Binary files /dev/null and b/public/images/producthunt-white.png differ diff --git a/public/images/videos/llm-as-a-judge-eval-on-dataset-experiments.jpg b/public/images/videos/llm-as-a-judge-eval-on-dataset-experiments.jpg new file mode 100644 index 000000000..297f4e8fb Binary files /dev/null and b/public/images/videos/llm-as-a-judge-eval-on-dataset-experiments.jpg differ diff --git a/scripts/generate_llms_txt.js b/scripts/generate_llms_txt.js new file mode 100644 index 000000000..b752311be --- /dev/null +++ b/scripts/generate_llms_txt.js @@ -0,0 +1,99 @@ +const fs = require('fs'); +const xml2js = require('xml2js'); +const path = require('path'); + +const SITEMAP_PATH = 'public/sitemap-0.xml'; +const TITLE = 'Langfuse'; +const INTRO_DESCRIPTION = 'Langfuse is an **open-source LLM engineering platform** ([GitHub](https://github.com/langfuse/langfuse)) that helps teams collaboratively debug, analyze, and iterate on their LLM applications. All platform features are natively integrated to accelerate the development workflow.'; +const MAIN_SECTIONS = [ + 'docs', +]; +const OPTIONAL_SECTIONS = [ + 'guides', + 'changelog', + 'blog', + 'faq' +]; + +async function generateLLMsList() { + try { + const sitemapContent = fs.readFileSync(SITEMAP_PATH, 'utf-8'); + + const parser = new xml2js.Parser(); + const result = await parser.parseStringPromise(sitemapContent); + + // Start building markdown content with the title and blockquote + let markdownContent = `# ${TITLE}\n\n`; + markdownContent += `> ${INTRO_DESCRIPTION}\n\n`; + + // Create a map to store URLs by section + const urlsBySection = { + other: [], + optional: [] + }; + MAIN_SECTIONS.forEach(section => { + urlsBySection[section] = []; + }); + + // Sort URLs into sections + const urls = result.urlset.url.map(url => url.loc[0]); + urls.forEach(url => { + const urlPath = new URL(url).pathname.split('/')[1]; // Get first part of path + + if (MAIN_SECTIONS.includes(urlPath)) { + urlsBySection[urlPath].push({ + title: url.split('/').pop().replace(/-/g, ' ').replace(/\b\w/g, l => l.toUpperCase()), + url: url + }); + } else if (OPTIONAL_SECTIONS.includes(urlPath)) { + urlsBySection.optional.push({ + title: url.split('/').pop().replace(/-/g, ' ').replace(/\b\w/g, l => l.toUpperCase()), + url: url + }); + } else { + urlsBySection.other.push({ + title: url.split('/').pop().replace(/-/g, ' ').replace(/\b\w/g, l => l.toUpperCase()), + url: url + }); + } + }); + + // Generate markdown for main sections + MAIN_SECTIONS.forEach(section => { + if (urlsBySection[section].length > 0) { + markdownContent += `## ${section.charAt(0).toUpperCase() + section.slice(1)}\n\n`; + urlsBySection[section].forEach(({ title, url }) => { + markdownContent += `- [${title}](${url})\n`; + }); + markdownContent += '\n'; + } + }); + + // Add other section + if (urlsBySection.other.length > 0) { + markdownContent += '## Other\n\n'; + urlsBySection.other.forEach(({ title, url }) => { + markdownContent += `- [${title}](${url})\n`; + }); + markdownContent += '\n'; + } + + // Add optional integrations section at the end + if (urlsBySection.optional.length > 0) { + markdownContent += '## Optional\n\n'; + urlsBySection.optional.forEach(({ title, url }) => { + markdownContent += `- [${title}](${url})\n`; + }); + } + + // Write to llms.txt + const outputPath = path.join(process.cwd(), 'public', 'llms.txt'); + fs.writeFileSync(outputPath, markdownContent); + + console.log('Successfully generated llms.txt'); + } catch (error) { + console.error('Error generating llms.txt:', error); + } +} + +generateLLMsList(); \ No newline at end of file diff --git a/src/langfuse_github_discussions.json b/src/langfuse_github_discussions.json index 6a8d0f57b..751c7b9c3 100644 --- a/src/langfuse_github_discussions.json +++ b/src/langfuse_github_discussions.json @@ -1,5722 +1,5714 @@ { - "updated_at": "2024-10-17T06:05:26.684886+00:00", + "updated_at": "2024-11-27T18:05:32.728562+00:00", "categories": [ { - "category": "Ideas", + "category": "Support", "discussions": [ { - "number": 3782, - "title": "Measure time to last generated token", - "href": "https://github.com/orgs/langfuse/discussions/3782", - "created_at": "2024-10-16T17:45:12Z", + "number": 4456, + "title": "I can't see some of my traces", + "href": "https://github.com/orgs/langfuse/discussions/4456", + "created_at": "2024-11-27T06:25:16Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "dsherry", - "html_url": "https://github.com/dsherry" + "login": "MazarSayed", + "html_url": "https://github.com/MazarSayed" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3772, - "title": "Support annotation role permission to only access Annotation Queue feature", - "href": "https://github.com/orgs/langfuse/discussions/3772", - "created_at": "2024-10-16T03:49:43Z", + "number": 4452, + "title": "Take chat history in consideration when running a prompt experiment", + "href": "https://github.com/orgs/langfuse/discussions/4452", + "created_at": "2024-11-27T00:32:20Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, + "comment_count": 4, + "resolved": true, "labels": [ - "feat-annotation" + "feat-prompt-experiments" ], "author": { - "login": "ytqh", - "html_url": "https://github.com/ytqh" + "login": "benjtlv", + "html_url": "https://github.com/benjtlv" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3765, - "title": "OpenAI integration support for realtime api", - "href": "https://github.com/orgs/langfuse/discussions/3765", - "created_at": "2024-10-15T21:35:13Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, + "number": 4444, + "title": "Running Langfuse behind Nginx with custom base path", + "href": "https://github.com/orgs/langfuse/discussions/4444", + "created_at": "2024-11-26T19:57:21Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "integration-openai" + "self-hosting" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "hookenful", + "html_url": "https://github.com/hookenful" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3761, - "title": "DsPY type optimization functionality", - "href": "https://github.com/orgs/langfuse/discussions/3761", - "created_at": "2024-10-15T20:02:39Z", - "upvotes": 1, - "comment_count": 1, - "resolved": false, + "number": 4438, + "title": "Observability with concurrent threads", + "href": "https://github.com/orgs/langfuse/discussions/4438", + "created_at": "2024-11-26T17:08:01Z", + "upvotes": 0, + "comment_count": 2, + "resolved": true, "labels": [ - "integration-dspy" + "integration-python-decorator" ], "author": { - "login": "nikshepsvn", - "html_url": "https://github.com/nikshepsvn" + "login": "DavideSanvito", + "html_url": "https://github.com/DavideSanvito" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3755, - "title": "Intergrate with Ragflow", - "href": "https://github.com/orgs/langfuse/discussions/3755", - "created_at": "2024-10-15T06:54:12Z", - "upvotes": 2, + "number": 4429, + "title": "Is there a way to rotate traces and generations?", + "href": "https://github.com/orgs/langfuse/discussions/4429", + "created_at": "2024-11-26T03:17:35Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [ - "integrations" - ], + "resolved": true, + "labels": [], "author": { - "login": "chuwe000", - "html_url": "https://github.com/chuwe000" + "login": "woung717", + "html_url": "https://github.com/woung717" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3725, - "title": "observe context manager", - "href": "https://github.com/orgs/langfuse/discussions/3725", - "created_at": "2024-10-12T07:33:09Z", - "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [], + "number": 4418, + "title": "Cannot use prompt experiments \"No dataset item contains any variables\"", + "href": "https://github.com/orgs/langfuse/discussions/4418", + "created_at": "2024-11-25T20:32:59Z", + "upvotes": 2, + "comment_count": 5, + "resolved": true, + "labels": [ + "feat-prompt-experiments" + ], "author": { - "login": "eliorc", - "html_url": "https://github.com/eliorc" + "login": "j10sanders", + "html_url": "https://github.com/j10sanders" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3723, - "title": "Terminal version of Langfuse (Langfuse CLI)", - "href": "https://github.com/orgs/langfuse/discussions/3723", - "created_at": "2024-10-11T21:06:48Z", - "upvotes": 3, + "number": 4417, + "title": "does token & cost counting take into consideration prompt caching, eg openai prompt caching?", + "href": "https://github.com/orgs/langfuse/discussions/4417", + "created_at": "2024-11-25T19:59:13Z", + "upvotes": 2, "comment_count": 2, "resolved": false, - "labels": [], + "labels": [ + "feat-cost-tracking" + ], "author": { - "login": "Shahin-rmz", - "html_url": "https://github.com/Shahin-rmz" + "login": "dwstevens", + "html_url": "https://github.com/dwstevens" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3681, - "title": "Evalution of a prompt by a LLM", - "href": "https://github.com/orgs/langfuse/discussions/3681", - "created_at": "2024-10-09T19:17:30Z", - "upvotes": 3, - "comment_count": 0, + "number": 4413, + "title": "Help needed with CustomSSOProvider Configuration for GitHub Enterprise", + "href": "https://github.com/orgs/langfuse/discussions/4413", + "created_at": "2024-11-25T15:30:23Z", + "upvotes": 1, + "comment_count": 4, "resolved": false, "labels": [ - "feat-prompt-management" + "feat-auth", + "self-hosting" ], "author": { - "login": "jannikmaierhoefer", - "html_url": "https://github.com/jannikmaierhoefer" + "login": "jay0129", + "html_url": "https://github.com/jay0129" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3663, - "title": "Dashboard: Add time to first token chart (ttft)", - "href": "https://github.com/orgs/langfuse/discussions/3663", - "created_at": "2024-10-08T23:56:42Z", - "upvotes": 4, - "comment_count": 0, - "resolved": false, + "number": 4393, + "title": "Openai JS: Tracing for multiple iterations and tool calling", + "href": "https://github.com/orgs/langfuse/discussions/4393", + "created_at": "2024-11-23T06:57:40Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "feat-dashboard" + "integration-openai" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "uhhfeef", + "html_url": "https://github.com/uhhfeef" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3646, - "title": "Table sorting and filtering in database runs", - "href": "https://github.com/orgs/langfuse/discussions/3646", - "created_at": "2024-10-08T11:13:52Z", - "upvotes": 2, - "comment_count": 0, + "number": 4389, + "title": "Does Langfuse tracing work in Vercel edge functions?", + "href": "https://github.com/orgs/langfuse/discussions/4389", + "created_at": "2024-11-22T22:41:52Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "FlorDonnaSanders", - "html_url": "https://github.com/FlorDonnaSanders" + "login": "holdenmatt", + "html_url": "https://github.com/holdenmatt" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3618, - "title": "User Aliases", - "href": "https://github.com/orgs/langfuse/discussions/3618", - "created_at": "2024-10-07T07:51:49Z", + "number": 4388, + "title": "How to completely discard image with new multi-modal system?", + "href": "https://github.com/orgs/langfuse/discussions/4388", + "created_at": "2024-11-22T18:56:07Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 3, "resolved": false, "labels": [], "author": { - "login": "FlorDonnaSanders", - "html_url": "https://github.com/FlorDonnaSanders" + "login": "bioshazard", + "html_url": "https://github.com/bioshazard" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3576, - "title": "feat: edit custom model definitions", - "href": "https://github.com/orgs/langfuse/discussions/3576", - "created_at": "2024-10-04T12:40:54Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, + "number": 4374, + "title": "Error while migrating schema", + "href": "https://github.com/orgs/langfuse/discussions/4374", + "created_at": "2024-11-21T22:39:36Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "nialldevlin1", - "html_url": "https://github.com/nialldevlin1" + "login": "geek1s42", + "html_url": "https://github.com/geek1s42" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3558, - "title": "Dashboard: split prompt/completion/total tokens", - "href": "https://github.com/orgs/langfuse/discussions/3558", - "created_at": "2024-10-02T02:17:47Z", + "number": 4373, + "title": "Silent failure when attempting adding scores to trace", + "href": "https://github.com/orgs/langfuse/discussions/4373", + "created_at": "2024-11-21T22:18:26Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, - "labels": [ - "feat-dashboard" - ], + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "bioshazard", + "html_url": "https://github.com/bioshazard" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3551, - "title": "Metrics API to support the OpenMetrics format", - "href": "https://github.com/orgs/langfuse/discussions/3551", - "created_at": "2024-10-01T15:03:02Z", - "upvotes": 3, - "comment_count": 0, - "resolved": false, + "number": 4365, + "title": "Not able to see traces", + "href": "https://github.com/orgs/langfuse/discussions/4365", + "created_at": "2024-11-21T16:56:26Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "shukawam", - "html_url": "https://github.com/shukawam" + "login": "uhhfeef", + "html_url": "https://github.com/uhhfeef" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3550, - "title": "Asynchronous Langfuse Client.", - "href": "https://github.com/orgs/langfuse/discussions/3550", - "created_at": "2024-10-01T14:03:48Z", - "upvotes": 3, + "number": 4363, + "title": "Langchain with ChatVertexAI: Image/Audio Input Not Displayed in Dashboard with Multi-Modal Traces", + "href": "https://github.com/orgs/langfuse/discussions/4363", + "created_at": "2024-11-21T16:41:35Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, + "labels": [], + "author": { + "login": "pleomax0730", + "html_url": "https://github.com/pleomax0730" + }, + "category": "Support" + }, + { + "number": 4361, + "title": "Is downgrade available for self-hosted version?", + "href": "https://github.com/orgs/langfuse/discussions/4361", + "created_at": "2024-11-21T15:52:18Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [ - "sdk-python" - ], + "resolved": true, + "labels": [], "author": { - "login": "fimselamse", - "html_url": "https://github.com/fimselamse" + "login": "skabbit", + "html_url": "https://github.com/skabbit" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3546, - "title": "Add SCIM support for user/role/identity management", - "href": "https://github.com/orgs/langfuse/discussions/3546", - "created_at": "2024-10-01T02:18:33Z", + "number": 4359, + "title": "Unexpected error occurred", + "href": "https://github.com/orgs/langfuse/discussions/4359", + "created_at": "2024-11-21T14:21:11Z", "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "feat-api", - "security" + "self-hosting" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "jguokion", + "html_url": "https://github.com/jguokion" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3538, - "title": "Vector search for datasets for few-shot prompting", - "href": "https://github.com/orgs/langfuse/discussions/3538", - "created_at": "2024-09-30T17:31:18Z", + "number": 4358, + "title": "Tracing of Async Tasks in Agentic Workflow", + "href": "https://github.com/orgs/langfuse/discussions/4358", + "created_at": "2024-11-21T10:46:31Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, - "labels": [ - "feat-datasets" - ], + "labels": [], "author": { - "login": "antoniomdk", - "html_url": "https://github.com/antoniomdk" + "login": "ashish-vwo", + "html_url": "https://github.com/ashish-vwo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3529, - "title": "Sampling for JS/TS SDKs and integrations", - "href": "https://github.com/orgs/langfuse/discussions/3529", - "created_at": "2024-09-30T05:44:07Z", - "upvotes": 2, - "comment_count": 0, + "number": 4352, + "title": "Send metrics to ELK", + "href": "https://github.com/orgs/langfuse/discussions/4352", + "created_at": "2024-11-21T05:57:10Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [ - "feat-sampling" - ], + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "Kratemis", + "html_url": "https://github.com/Kratemis" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3528, - "title": "Add saved filters config", - "href": "https://github.com/orgs/langfuse/discussions/3528", - "created_at": "2024-09-30T05:36:44Z", + "number": 4331, + "title": "UserIds missing on some traces", + "href": "https://github.com/orgs/langfuse/discussions/4331", + "created_at": "2024-11-20T08:27:01Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 3, "resolved": false, - "labels": [ - "ui" - ], + "labels": [], "author": { - "login": "emaugars12", - "html_url": "https://github.com/emaugars12" + "login": "takefy-dev", + "html_url": "https://github.com/takefy-dev" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3527, - "title": "Show prompt-level aggregate metrics on the prompts table", - "href": "https://github.com/orgs/langfuse/discussions/3527", - "created_at": "2024-09-30T00:33:43Z", - "upvotes": 4, - "comment_count": 0, + "number": 4330, + "title": "Request for Simplified Custom `trace_id` Implementation in `CallbackHandler` for LangServe", + "href": "https://github.com/orgs/langfuse/discussions/4330", + "created_at": "2024-11-20T07:55:51Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, "labels": [ - "feat-prompt-management" + "integration-langchain" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "wertycn", + "html_url": "https://github.com/wertycn" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3524, - "title": "Field-level selection for input/output filtering in decorator instead of using update_current_observation/trace", - "href": "https://github.com/orgs/langfuse/discussions/3524", - "created_at": "2024-09-29T08:28:45Z", + "number": 4309, + "title": "Langchain//Langgraph prompt link", + "href": "https://github.com/orgs/langfuse/discussions/4309", + "created_at": "2024-11-19T11:18:16Z", "upvotes": 1, - "comment_count": 4, - "resolved": false, + "comment_count": 3, + "resolved": true, "labels": [ - "integration-python-decorator" + "feat-prompt-management", + "integration-langchain" ], "author": { - "login": "amir-mic-lin", - "html_url": "https://github.com/amir-mic-lin" + "login": "BuragaIonut", + "html_url": "https://github.com/BuragaIonut" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3508, - "title": "feat: organization level dashboard", - "href": "https://github.com/orgs/langfuse/discussions/3508", - "created_at": "2024-09-27T13:48:13Z", + "number": 4293, + "title": "slower than expected langfuse_context.update_current_observation operation?", + "href": "https://github.com/orgs/langfuse/discussions/4293", + "created_at": "2024-11-18T17:00:12Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "nialldevlin1", - "html_url": "https://github.com/nialldevlin1" + "login": "nikcaryo-super", + "html_url": "https://github.com/nikcaryo-super" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3478, - "title": "TextGrad integration", - "href": "https://github.com/orgs/langfuse/discussions/3478", - "created_at": "2024-09-25T16:13:45Z", + "number": 4286, + "title": "Langfuse returning a internal server error message sometimes", + "href": "https://github.com/orgs/langfuse/discussions/4286", + "created_at": "2024-11-18T13:37:41Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, - "labels": [ - "integrations" - ], + "labels": [], "author": { - "login": "sakthi-geek", - "html_url": "https://github.com/sakthi-geek" + "login": "nithin1995", + "html_url": "https://github.com/nithin1995" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3476, - "title": "Chart: usage/metrics grouped by tags", - "href": "https://github.com/orgs/langfuse/discussions/3476", - "created_at": "2024-09-25T13:54:14Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, + "number": 4284, + "title": "Update prompt label programatically", + "href": "https://github.com/orgs/langfuse/discussions/4284", + "created_at": "2024-11-18T13:18:06Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "feat-dashboard", - "feat-tags" + "feat-prompt-management" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "nikitagupta5566", + "html_url": "https://github.com/nikitagupta5566" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3472, - "title": "Dashboard: add chart for unique users (MAU/WAU/DAU)", - "href": "https://github.com/orgs/langfuse/discussions/3472", - "created_at": "2024-09-25T11:37:30Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, - "labels": [ - "feat-dashboard", - "feat-users" - ], + "number": 4281, + "title": "Preventing Input and Output Capture for GENERATION span in Langfuse", + "href": "https://github.com/orgs/langfuse/discussions/4281", + "created_at": "2024-11-18T11:23:08Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "ootkin", + "html_url": "https://github.com/ootkin" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3447, - "title": "Playground: Move messages / add messages in-between others", - "href": "https://github.com/orgs/langfuse/discussions/3447", - "created_at": "2024-09-23T09:16:23Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, - "labels": [ - "feat-playground" - ], + "number": 4262, + "title": "why setup trace is showing SETUP Tracing Pending always and Trace doesn't show in dashboard", + "href": "https://github.com/orgs/langfuse/discussions/4262", + "created_at": "2024-11-15T23:49:20Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, + "labels": [], "author": { - "login": "jannikmaierhoefer", - "html_url": "https://github.com/jannikmaierhoefer" + "login": "msgateway", + "html_url": "https://github.com/msgateway" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3443, - "title": "Why not extend observeOpenAI to support message-level user id?", - "href": "https://github.com/orgs/langfuse/discussions/3443", - "created_at": "2024-09-21T23:57:57Z", + "number": 4261, + "title": "Disable tracing for certain calls", + "href": "https://github.com/orgs/langfuse/discussions/4261", + "created_at": "2024-11-15T22:54:27Z", "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "derrickstaten", - "html_url": "https://github.com/derrickstaten" + "login": "yliuaaron", + "html_url": "https://github.com/yliuaaron" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3439, - "title": "Filtering dataset items", - "href": "https://github.com/orgs/langfuse/discussions/3439", - "created_at": "2024-09-21T01:51:33Z", + "number": 4259, + "title": "Custom trace properties in AsyncOpenAI", + "href": "https://github.com/orgs/langfuse/discussions/4259", + "created_at": "2024-11-15T19:50:10Z", "upvotes": 1, - "comment_count": 0, + "comment_count": 2, "resolved": false, - "labels": [ - "feat-datasets" - ], + "labels": [], "author": { - "login": "emaugars12", - "html_url": "https://github.com/emaugars12" + "login": "yliuaaron", + "html_url": "https://github.com/yliuaaron" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3438, - "title": "Support export for Dataset Items", - "href": "https://github.com/orgs/langfuse/discussions/3438", - "created_at": "2024-09-20T22:57:21Z", - "upvotes": 3, - "comment_count": 0, + "number": 4231, + "title": "Langfuse overwriting ingested usage for gpt-4o-mini models & incorrect inferred usage for low-detail image data", + "href": "https://github.com/orgs/langfuse/discussions/4231", + "created_at": "2024-11-14T12:29:51Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, "labels": [ - "feat-datasets" + "integration-openai", + "feat-cost-tracking" ], "author": { - "login": "uladkaminski", - "html_url": "https://github.com/uladkaminski" + "login": "LastRemote", + "html_url": "https://github.com/LastRemote" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3436, - "title": "Prompt label promotion via api/sdk", - "href": "https://github.com/orgs/langfuse/discussions/3436", - "created_at": "2024-09-20T21:32:07Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, - "labels": [], + "number": 4228, + "title": "Why my langgrpahjs agent can't show token", + "href": "https://github.com/orgs/langfuse/discussions/4228", + "created_at": "2024-11-14T08:46:36Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, + "labels": [ + "integration-langchain" + ], "author": { - "login": "mrdrprofuroboros", - "html_url": "https://github.com/mrdrprofuroboros" + "login": "VittorioYan", + "html_url": "https://github.com/VittorioYan" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3431, - "title": "3rd option for \"sharing\" traces publicly", - "href": "https://github.com/orgs/langfuse/discussions/3431", - "created_at": "2024-09-20T16:29:28Z", + "number": 4223, + "title": "How/which environment var do I need to set to get OAuth2.0 authentication flow?", + "href": "https://github.com/orgs/langfuse/discussions/4223", + "created_at": "2024-11-13T19:57:27Z", "upvotes": 1, - "comment_count": 0, + "comment_count": 3, "resolved": false, - "labels": [], + "labels": [ + "self-hosting" + ], "author": { - "login": "jannikmaierhoefer", - "html_url": "https://github.com/jannikmaierhoefer" + "login": "itay-moav", + "html_url": "https://github.com/itay-moav" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3415, - "title": "Only use traces in the dataset to render score columns", - "href": "https://github.com/orgs/langfuse/discussions/3415", - "created_at": "2024-09-19T17:36:44Z", + "number": 4213, + "title": "Is there a way to keep database connections open longer?", + "href": "https://github.com/orgs/langfuse/discussions/4213", + "created_at": "2024-11-13T13:53:25Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, "labels": [ - "feat-datasets" + "self-hosting" ], "author": { - "login": "micahstairs", - "html_url": "https://github.com/micahstairs" + "login": "tomi-bigpi", + "html_url": "https://github.com/tomi-bigpi" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3412, - "title": "Source code versioning and automatic statistics caluclation from scores", - "href": "https://github.com/orgs/langfuse/discussions/3412", - "created_at": "2024-09-19T10:44:02Z", + "number": 4205, + "title": "Tokenizer config for Qwen 2.5 models", + "href": "https://github.com/orgs/langfuse/discussions/4205", + "created_at": "2024-11-13T08:05:03Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, - "labels": [ - "feat-scores" - ], + "labels": [], "author": { - "login": "ge28yen", - "html_url": "https://github.com/ge28yen" + "login": "mediumsizeworkingdog", + "html_url": "https://github.com/mediumsizeworkingdog" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3409, - "title": "Add graph view for LangGraph traces", - "href": "https://github.com/orgs/langfuse/discussions/3409", - "created_at": "2024-09-19T07:55:02Z", - "upvotes": 5, + "number": 4197, + "title": "[Generations]: Support n parameter", + "href": "https://github.com/orgs/langfuse/discussions/4197", + "created_at": "2024-11-12T18:58:32Z", + "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ - "integration-langchain" + "integration-openai" ], "author": { - "login": "hassiebp", - "html_url": "https://github.com/hassiebp" + "login": "ngamolsky", + "html_url": "https://github.com/ngamolsky" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3402, - "title": "Mask / redact PII from traces logged to langfuse", - "href": "https://github.com/orgs/langfuse/discussions/3402", - "created_at": "2024-09-18T21:04:06Z", - "upvotes": 5, - "comment_count": 1, - "resolved": false, + "number": 4179, + "title": "Is there a way to get process to exit on DB connection errors when rotating database passwords?", + "href": "https://github.com/orgs/langfuse/discussions/4179", + "created_at": "2024-11-11T21:55:56Z", + "upvotes": 1, + "comment_count": 3, + "resolved": true, "labels": [ - "security" + "self-hosting" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "tomi-bigpi", + "html_url": "https://github.com/tomi-bigpi" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3401, - "title": "Make compile and get_langchain_prompt interoperable when using a prompt from langfuse in langchain", - "href": "https://github.com/orgs/langfuse/discussions/3401", - "created_at": "2024-09-18T21:03:20Z", + "number": 4178, + "title": "How to update a score?", + "href": "https://github.com/orgs/langfuse/discussions/4178", + "created_at": "2024-11-11T21:48:51Z", "upvotes": 1, - "comment_count": 2, - "resolved": false, + "comment_count": 1, + "resolved": true, "labels": [ - "feat-prompt-management", - "integration-langchain", - "✅ Done" + "feat-scores" ], "author": { - "login": "ajram23", - "html_url": "https://github.com/ajram23" + "login": "leichx", + "html_url": "https://github.com/leichx" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3396, - "title": "Better mustache/jinja support in langfuse playground", - "href": "https://github.com/orgs/langfuse/discussions/3396", - "created_at": "2024-09-18T11:54:28Z", - "upvotes": 3, + "number": 4172, + "title": "TypeError: LangfuseTracer.trace() got an unexpected keyword argument 'parent_span'", + "href": "https://github.com/orgs/langfuse/discussions/4172", + "created_at": "2024-11-11T13:31:14Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [ - "feat-playground" + "integration-haystack" ], "author": { - "login": "FlorDonnaSanders", - "html_url": "https://github.com/FlorDonnaSanders" + "login": "schwasa", + "html_url": "https://github.com/schwasa" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3395, - "title": "Add fine-grained filtering options in python `fetch_traces` API to match web UI", - "href": "https://github.com/orgs/langfuse/discussions/3395", - "created_at": "2024-09-18T11:18:20Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, - "labels": [], + "number": 4169, + "title": "Tenant based prompt management ?", + "href": "https://github.com/orgs/langfuse/discussions/4169", + "created_at": "2024-11-11T11:22:21Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, + "labels": [ + "feat-prompt-management" + ], "author": { - "login": "evangriffiths", - "html_url": "https://github.com/evangriffiths" + "login": "PreetamGKatakali", + "html_url": "https://github.com/PreetamGKatakali" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3376, - "title": "Allow LangchainCallbackHandler to specify custom input/output?", - "href": "https://github.com/orgs/langfuse/discussions/3376", - "created_at": "2024-09-16T23:45:18Z", + "number": 4134, + "title": "LangGraph traces cause self-hosted instance to hang", + "href": "https://github.com/orgs/langfuse/discussions/4134", + "created_at": "2024-11-08T22:54:34Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, "labels": [ "integration-langchain" ], "author": { - "login": "xxkennyxu", - "html_url": "https://github.com/xxkennyxu" + "login": "rishimo", + "html_url": "https://github.com/rishimo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3375, - "title": "Promptfoo integration", - "href": "https://github.com/orgs/langfuse/discussions/3375", - "created_at": "2024-09-16T23:34:34Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, - "labels": [ - "integrations" - ], + "number": 4123, + "title": "Block strangers from signing in to your app", + "href": "https://github.com/orgs/langfuse/discussions/4123", + "created_at": "2024-11-08T10:14:08Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "aiseei", - "html_url": "https://github.com/aiseei" + "login": "shner-elmo", + "html_url": "https://github.com/shner-elmo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3367, - "title": "Default closed dropdown view in trace details", - "href": "https://github.com/orgs/langfuse/discussions/3367", - "created_at": "2024-09-16T12:47:26Z", - "upvotes": 2, + "number": 4119, + "title": "Can we use Langfuse without any Authentication enabled?", + "href": "https://github.com/orgs/langfuse/discussions/4119", + "created_at": "2024-11-08T08:32:30Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [ - "ui" - ], + "resolved": true, + "labels": [], "author": { - "login": "jannikmaierhoefer", - "html_url": "https://github.com/jannikmaierhoefer" + "login": "SudhaGarimella", + "html_url": "https://github.com/SudhaGarimella" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3363, - "title": "Dashboard: TPM chart", - "href": "https://github.com/orgs/langfuse/discussions/3363", - "created_at": "2024-09-16T07:53:52Z", - "upvotes": 2, + "number": 4118, + "title": "Can I evaluate Span using the External Evaluation Pipeline?", + "href": "https://github.com/orgs/langfuse/discussions/4118", + "created_at": "2024-11-08T08:04:55Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "feat-dashboard" + "feat-evals" ], "author": { - "login": "afonsomatos", - "html_url": "https://github.com/afonsomatos" + "login": "ygt1qa8", + "html_url": "https://github.com/ygt1qa8" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3361, - "title": "Group Similar or Consecutive Traces", - "href": "https://github.com/orgs/langfuse/discussions/3361", - "created_at": "2024-09-16T05:38:40Z", + "number": 4117, + "title": "ERROR - An error occurred: 'function' object is not subscriptable", + "href": "https://github.com/orgs/langfuse/discussions/4117", + "created_at": "2024-11-08T04:51:09Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "rvndbalaji", - "html_url": "https://github.com/rvndbalaji" + "login": "MazarSayed", + "html_url": "https://github.com/MazarSayed" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3358, - "title": "More customization in graphs and dashboard panels", - "href": "https://github.com/orgs/langfuse/discussions/3358", - "created_at": "2024-09-14T03:12:38Z", + "number": 4116, + "title": "How can I implement a knowledge base and multi-turn file dialogue with pip deployment?! How does this “history” work?", + "href": "https://github.com/orgs/langfuse/discussions/4116", + "created_at": "2024-11-08T03:05:40Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [ - "feat-dashboard" - ], + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "emaugars12", - "html_url": "https://github.com/emaugars12" + "login": "SKKKKYLAR", + "html_url": "https://github.com/SKKKKYLAR" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3352, - "title": "LLM Based Evaluation - more control with mapping a variable e.g. {{query}}, {{ground_truth}} etc inside of Input/Output/Metadata observation", - "href": "https://github.com/orgs/langfuse/discussions/3352", - "created_at": "2024-09-13T16:58:05Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, + "number": 4115, + "title": "Configure LangFuse Project within CallbackHandler", + "href": "https://github.com/orgs/langfuse/discussions/4115", + "created_at": "2024-11-07T23:19:13Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-evals" + "integration-langchain" ], "author": { - "login": "stepanogil", - "html_url": "https://github.com/stepanogil" + "login": "krlng", + "html_url": "https://github.com/krlng" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3351, - "title": "Support for Firebase Genkit", - "href": "https://github.com/orgs/langfuse/discussions/3351", - "created_at": "2024-09-13T16:29:07Z", + "number": 4091, + "title": "Openwebui and langfuse", + "href": "https://github.com/orgs/langfuse/discussions/4091", + "created_at": "2024-11-06T22:21:43Z", "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [ - "integrations" - ], + "resolved": true, + "labels": [], "author": { - "login": "debkanchan", - "html_url": "https://github.com/debkanchan" + "login": "flefevre", + "html_url": "https://github.com/flefevre" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3338, - "title": "o1-preview and o1-mini support", - "href": "https://github.com/orgs/langfuse/discussions/3338", - "created_at": "2024-09-13T07:16:22Z", - "upvotes": 2, + "number": 4090, + "title": "Configuring logging", + "href": "https://github.com/orgs/langfuse/discussions/4090", + "created_at": "2024-11-06T21:39:03Z", + "upvotes": 1, + "comment_count": 5, + "resolved": true, + "labels": [], + "author": { + "login": "pcoccoli", + "html_url": "https://github.com/pcoccoli" + }, + "category": "Support" + }, + { + "number": 4080, + "title": "Langfuse User Management with Custom Oauth", + "href": "https://github.com/orgs/langfuse/discussions/4080", + "created_at": "2024-11-06T14:21:39Z", + "upvotes": 1, "comment_count": 3, "resolved": false, "labels": [ - "✅ Done" + "feat-auth", + "self-hosting" ], "author": { - "login": "juan-abia", - "html_url": "https://github.com/juan-abia" + "login": "bziolkowski", + "html_url": "https://github.com/bziolkowski" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3336, - "title": "Add Notification for / in Comments Objects", - "href": "https://github.com/orgs/langfuse/discussions/3336", - "created_at": "2024-09-13T00:04:16Z", + "number": 4079, + "title": "How to prevent strangers from creating an account on your app", + "href": "https://github.com/orgs/langfuse/discussions/4079", + "created_at": "2024-11-06T14:17:46Z", "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "feat-comments" + "self-hosting" ], "author": { - "login": "Zugunruhekami", - "html_url": "https://github.com/Zugunruhekami" + "login": "shner-elmo", + "html_url": "https://github.com/shner-elmo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3335, - "title": "Extend Searchability (through filter) for Comments Objects", - "href": "https://github.com/orgs/langfuse/discussions/3335", - "created_at": "2024-09-12T23:58:17Z", + "number": 4075, + "title": "Does it make sense to use multiple api-keys", + "href": "https://github.com/orgs/langfuse/discussions/4075", + "created_at": "2024-11-06T11:22:45Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, - "labels": [ - "feat-comments" - ], + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "Zugunruhekami", - "html_url": "https://github.com/Zugunruhekami" + "login": "shner-elmo", + "html_url": "https://github.com/shner-elmo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3291, - "title": "Filter by error in sub span", - "href": "https://github.com/orgs/langfuse/discussions/3291", - "created_at": "2024-09-10T13:20:11Z", - "upvotes": 2, - "comment_count": 3, - "resolved": false, - "labels": [ - "✅ Done", - "feat-log-levels" - ], + "number": 4071, + "title": "Authentication not working?", + "href": "https://github.com/orgs/langfuse/discussions/4071", + "created_at": "2024-11-06T01:00:12Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "bettlebrox", - "html_url": "https://github.com/bettlebrox" + "login": "shner-elmo", + "html_url": "https://github.com/shner-elmo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3289, - "title": "Deleting old, unused tags or making them unseen if weren't used in the chosen time window.", - "href": "https://github.com/orgs/langfuse/discussions/3289", - "created_at": "2024-09-10T12:56:43Z", + "number": 4056, + "title": "Langfuse deployment issue on k8", + "href": "https://github.com/orgs/langfuse/discussions/4056", + "created_at": "2024-11-05T11:54:57Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 4, "resolved": false, "labels": [ - "feat-tags" + "self-hosting" ], "author": { - "login": "constalozinschi", - "html_url": "https://github.com/constalozinschi" + "login": "hrone-dev-satyammishra", + "html_url": "https://github.com/hrone-dev-satyammishra" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3285, - "title": "SDK-JS: Allow to delete one or more trace", - "href": "https://github.com/orgs/langfuse/discussions/3285", - "created_at": "2024-09-10T09:26:04Z", - "upvotes": 5, - "comment_count": 2, - "resolved": false, + "number": 4046, + "title": "Should the Langfuse classs initialization be cached (does it do any I/O on init?) ?", + "href": "https://github.com/orgs/langfuse/discussions/4046", + "created_at": "2024-11-04T16:44:27Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "sdk-js" + "integration-langchain" ], "author": { - "login": "Lunik", - "html_url": "https://github.com/Lunik" + "login": "shner-elmo", + "html_url": "https://github.com/shner-elmo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3276, - "title": "Retrieve the trace by metdata", - "href": "https://github.com/orgs/langfuse/discussions/3276", - "created_at": "2024-09-09T20:51:08Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, + "number": 4043, + "title": "\"Custom\" traces not creating when Next.js Vercel instrumentation is on.", + "href": "https://github.com/orgs/langfuse/discussions/4043", + "created_at": "2024-11-04T14:07:46Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-metadata" + "integration-vercel-ai-sdk" ], "author": { - "login": "gingerjx", - "html_url": "https://github.com/gingerjx" + "login": "rovnyart", + "html_url": "https://github.com/rovnyart" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3275, - "title": "Get run's results", - "href": "https://github.com/orgs/langfuse/discussions/3275", - "created_at": "2024-09-09T20:48:16Z", + "number": 4041, + "title": "When running in relatively high amount of concurrent requests we start getting: \"API error occurred: Service unavailable.\" from Langfuse server", + "href": "https://github.com/orgs/langfuse/discussions/4041", + "created_at": "2024-11-04T13:55:19Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, - "labels": [ - "feat-datasets" - ], + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "gingerjx", - "html_url": "https://github.com/gingerjx" + "login": "sternr", + "html_url": "https://github.com/sternr" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3273, - "title": "Custom Themes", - "href": "https://github.com/orgs/langfuse/discussions/3273", - "created_at": "2024-09-09T15:08:25Z", + "number": 4038, + "title": "SSL: CERTIFICATE_VERIFY_FAILED error when access the self hosted langfuse from the code", + "href": "https://github.com/orgs/langfuse/discussions/4038", + "created_at": "2024-11-04T13:14:05Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, + "resolved": true, + "labels": [], + "author": { + "login": "SugumarRavichandran", + "html_url": "https://github.com/SugumarRavichandran" + }, + "category": "Support" + }, + { + "number": 4026, + "title": "Blob is not defined for Node 16", + "href": "https://github.com/orgs/langfuse/discussions/4026", + "created_at": "2024-11-04T04:58:15Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "rvndbalaji", - "html_url": "https://github.com/rvndbalaji" + "login": "jamesyu", + "html_url": "https://github.com/jamesyu" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3263, - "title": "Comment API", - "href": "https://github.com/orgs/langfuse/discussions/3263", - "created_at": "2024-09-07T05:53:31Z", + "number": 4001, + "title": "Cloudron packaging issue with Prisma client", + "href": "https://github.com/orgs/langfuse/discussions/4001", + "created_at": "2024-11-01T14:21:59Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, + "labels": [], + "author": { + "login": "Lanhild", + "html_url": "https://github.com/Lanhild" + }, + "category": "Support" + }, + { + "number": 3996, + "title": "Can you use the app without OAuth?", + "href": "https://github.com/orgs/langfuse/discussions/3996", + "created_at": "2024-11-01T03:36:33Z", "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "feat-api", - "feat-datasets" + "feat-auth", + "self-hosting" ], "author": { - "login": "darvin", - "html_url": "https://github.com/darvin" + "login": "shner-elmo", + "html_url": "https://github.com/shner-elmo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3256, - "title": "Integration with LangChain4j", - "href": "https://github.com/orgs/langfuse/discussions/3256", - "created_at": "2024-09-06T15:50:51Z", + "number": 3985, + "title": "Pending Badge Stuck on Setup Tracing Step", + "href": "https://github.com/orgs/langfuse/discussions/3985", + "created_at": "2024-10-31T15:51:08Z", "upvotes": 1, "comment_count": 2, - "resolved": false, - "labels": [ - "integrations", - "integration-langchain" - ], + "resolved": true, + "labels": [], "author": { - "login": "ruizrube", - "html_url": "https://github.com/ruizrube" + "login": "c0pper", + "html_url": "https://github.com/c0pper" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3252, - "title": "Need to retain the old evaluation history results, including input and all ground truth", - "href": "https://github.com/orgs/langfuse/discussions/3252", - "created_at": "2024-09-06T03:29:17Z", + "number": 3977, + "title": "getPromptStateless received 403 error when using `LangfuseWeb` SDK", + "href": "https://github.com/orgs/langfuse/discussions/3977", + "created_at": "2024-10-31T01:45:19Z", "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "feat-datasets" + "feat-prompt-management" ], "author": { - "login": "serlina", - "html_url": "https://github.com/serlina" + "login": "huangbaitu123", + "html_url": "https://github.com/huangbaitu123" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3243, - "title": "Add organization / project / user / API key management API", - "href": "https://github.com/orgs/langfuse/discussions/3243", - "created_at": "2024-09-05T08:10:12Z", - "upvotes": 9, - "comment_count": 5, - "resolved": false, + "number": 3976, + "title": "Missing scores after pushing scores to Langfuse", + "href": "https://github.com/orgs/langfuse/discussions/3976", + "created_at": "2024-10-31T00:02:59Z", + "upvotes": 1, + "comment_count": 3, + "resolved": true, + "labels": [], + "author": { + "login": "laisalvescw", + "html_url": "https://github.com/laisalvescw" + }, + "category": "Support" + }, + { + "number": 3972, + "title": "For which kinds of data is `ENCRYPTION_KEY` used?", + "href": "https://github.com/orgs/langfuse/discussions/3972", + "created_at": "2024-10-30T18:21:25Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ "self-hosting" ], "author": { - "login": "EricAntidot", - "html_url": "https://github.com/EricAntidot" + "login": "felix-sanchez-unmind", + "html_url": "https://github.com/felix-sanchez-unmind" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3240, - "title": "Ability to export all traces/sessions/scores from langfuse and import back to another langfuse instance", - "href": "https://github.com/orgs/langfuse/discussions/3240", - "created_at": "2024-09-05T07:11:48Z", - "upvotes": 4, + "number": 3965, + "title": "How to set environment variables for custom oauth2.0 sso?", + "href": "https://github.com/orgs/langfuse/discussions/3965", + "created_at": "2024-10-30T06:27:15Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ + "feat-auth", "self-hosting" ], "author": { - "login": "SinghCoder", - "html_url": "https://github.com/SinghCoder" + "login": "IeohMingChan", + "html_url": "https://github.com/IeohMingChan" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3237, - "title": "Support for Selecting Specific Paths from JSON Objects in Evaluation Prompts", - "href": "https://github.com/orgs/langfuse/discussions/3237", - "created_at": "2024-09-05T05:05:48Z", - "upvotes": 2, + "number": 3957, + "title": "Langfuse.create_prompt() got an unexpected keyword argument 'version'", + "href": "https://github.com/orgs/langfuse/discussions/3957", + "created_at": "2024-10-29T13:21:51Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "feat-evals" + "feat-prompt-management" ], "author": { - "login": "divyanshubhuta", - "html_url": "https://github.com/divyanshubhuta" + "login": "silenceliang", + "html_url": "https://github.com/silenceliang" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3220, - "title": "Trace Logprobs from OpenAI models", - "href": "https://github.com/orgs/langfuse/discussions/3220", - "created_at": "2024-09-04T01:25:15Z", + "number": 3949, + "title": "Is there a way to clear trace data in batch?", + "href": "https://github.com/orgs/langfuse/discussions/3949", + "created_at": "2024-10-29T06:10:26Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "integration-openai" + "self-hosting" ], "author": { - "login": "yusuke-intern", - "html_url": "https://github.com/yusuke-intern" + "login": "renwei-work", + "html_url": "https://github.com/renwei-work" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3215, - "title": "(ui) Ability to hide \"scores\" column", - "href": "https://github.com/orgs/langfuse/discussions/3215", - "created_at": "2024-09-03T15:34:14Z", + "number": 3943, + "title": "Improvements of Langfuse-Haystack integration", + "href": "https://github.com/orgs/langfuse/discussions/3943", + "created_at": "2024-10-28T14:49:51Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, + "labels": [ + "integration-haystack" + ], + "author": { + "login": "alex-stoica", + "html_url": "https://github.com/alex-stoica" + }, + "category": "Support" + }, + { + "number": 3924, + "title": "Postgres version mismatch when upgrading langfuse locally", + "href": "https://github.com/orgs/langfuse/discussions/3924", + "created_at": "2024-10-25T18:30:14Z", "upvotes": 2, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "marctorsoc", - "html_url": "https://github.com/marctorsoc" + "login": "nikcaryo-super", + "html_url": "https://github.com/nikcaryo-super" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3212, - "title": "Dataset run description and metadata should not be fixed on the page", - "href": "https://github.com/orgs/langfuse/discussions/3212", - "created_at": "2024-09-03T12:30:34Z", + "number": 3920, + "title": "Rate limit exceed using Langfuse Python SDK", + "href": "https://github.com/orgs/langfuse/discussions/3920", + "created_at": "2024-10-25T14:45:56Z", "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "feat-datasets" + "feat-api" ], "author": { - "login": "justinas-kazanavicius", - "html_url": "https://github.com/justinas-kazanavicius" + "login": "laisalvescw", + "html_url": "https://github.com/laisalvescw" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3208, - "title": "Support for exporting traces to CSV/JSON", - "href": "https://github.com/orgs/langfuse/discussions/3208", - "created_at": "2024-09-03T08:00:36Z", - "upvotes": 4, + "number": 3910, + "title": "If I use Anthropic Claude component in Langflow, the trace data in Langfuse is all null", + "href": "https://github.com/orgs/langfuse/discussions/3910", + "created_at": "2024-10-25T06:50:02Z", + "upvotes": 2, "comment_count": 2, - "resolved": false, + "resolved": true, + "labels": [], + "author": { + "login": "b8heng", + "html_url": "https://github.com/b8heng" + }, + "category": "Support" + }, + { + "number": 3905, + "title": "Allow injection of generation context into evaluation prompt", + "href": "https://github.com/orgs/langfuse/discussions/3905", + "created_at": "2024-10-24T20:39:46Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "✅ Done" + "feat-evals" ], "author": { - "login": "david1542", - "html_url": "https://github.com/david1542" + "login": "dveyarangi", + "html_url": "https://github.com/dveyarangi" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3194, - "title": "Optionally set timestamp when creating a score", - "href": "https://github.com/orgs/langfuse/discussions/3194", - "created_at": "2024-09-02T15:20:20Z", - "upvotes": 1, + "number": 3902, + "title": "How to fetch the output and input tokens of a trace via API?", + "href": "https://github.com/orgs/langfuse/discussions/3902", + "created_at": "2024-10-24T16:16:56Z", + "upvotes": 0, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ "feat-api", - "feat-scores" + "feat-cost-tracking" ], "author": { - "login": "FlorDonnaSanders", - "html_url": "https://github.com/FlorDonnaSanders" + "login": "fdb02983rhy", + "html_url": "https://github.com/fdb02983rhy" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3186, - "title": "Setting trace ID and parent observation ID with Python decorator SDK", - "href": "https://github.com/orgs/langfuse/discussions/3186", - "created_at": "2024-09-02T09:27:36Z", + "number": 3900, + "title": "Sometimes traces lack metadata completely", + "href": "https://github.com/orgs/langfuse/discussions/3900", + "created_at": "2024-10-24T15:06:32Z", "upvotes": 1, - "comment_count": 3, - "resolved": false, - "labels": [ - "✅ Done", - "integration-python-decorator" - ], - "author": { - "login": "MrOrz", - "html_url": "https://github.com/MrOrz" - }, - "category": "Ideas" - }, - { - "number": 3181, - "title": "Log only metadata", - "href": "https://github.com/orgs/langfuse/discussions/3181", - "created_at": "2024-08-31T18:31:11Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, + "comment_count": 4, + "resolved": true, "labels": [], "author": { - "login": "jan-kubica", - "html_url": "https://github.com/jan-kubica" + "login": "RichardSieg", + "html_url": "https://github.com/RichardSieg" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3178, - "title": "The display time on the x-axis of the chart in the Dashboard shows only the date, without hours, minutes, and seconds.", - "href": "https://github.com/orgs/langfuse/discussions/3178", - "created_at": "2024-08-31T04:09:07Z", + "number": 3890, + "title": "how to add invoked langchain tool names as tags or as metadata", + "href": "https://github.com/orgs/langfuse/discussions/3890", + "created_at": "2024-10-24T00:39:02Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ - "bug", - "✅ Done", - "feat-dashboard" + "integration-langchain" ], "author": { - "login": "HGladiator", - "html_url": "https://github.com/HGladiator" + "login": "Wrashionis", + "html_url": "https://github.com/Wrashionis" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3166, - "title": "Support Tool Calls in Playground", - "href": "https://github.com/orgs/langfuse/discussions/3166", - "created_at": "2024-08-30T20:04:34Z", + "number": 3886, + "title": "Azure AD auth: OAUTH_PARSE_PROFILE_ERROR", + "href": "https://github.com/orgs/langfuse/discussions/3886", + "created_at": "2024-10-23T19:40:57Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, - "labels": [ - "feat-playground" - ], + "labels": [], "author": { - "login": "yuyuma", - "html_url": "https://github.com/yuyuma" + "login": "kryvokhyzha", + "html_url": "https://github.com/kryvokhyzha" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3147, - "title": "Add the ability to search by message words in traces and scores", - "href": "https://github.com/orgs/langfuse/discussions/3147", - "created_at": "2024-08-30T08:02:32Z", - "upvotes": 3, - "comment_count": 0, + "number": 3884, + "title": "I cant quite tell if i'm doing the parent span correctly. The trace is appearing but not associated to the Session", + "href": "https://github.com/orgs/langfuse/discussions/3884", + "created_at": "2024-10-23T16:12:44Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "ValentinKovalev", - "html_url": "https://github.com/ValentinKovalev" + "login": "PandelisZ", + "html_url": "https://github.com/PandelisZ" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3131, - "title": "Diff of prompt versions", - "href": "https://github.com/orgs/langfuse/discussions/3131", - "created_at": "2024-08-29T11:43:24Z", - "upvotes": 4, - "comment_count": 1, + "number": 3879, + "title": "No token information in observation of LLM run", + "href": "https://github.com/orgs/langfuse/discussions/3879", + "created_at": "2024-10-23T13:07:43Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, "labels": [ - "feat-prompt-management" + "feat-cost-tracking" ], "author": { - "login": "dylanjcastillo", - "html_url": "https://github.com/dylanjcastillo" + "login": "noInterestIfPaidInFull", + "html_url": "https://github.com/noInterestIfPaidInFull" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3129, - "title": "The LangchainCallbackHandler supports statistical delay of the first token", - "href": "https://github.com/orgs/langfuse/discussions/3129", - "created_at": "2024-08-29T09:26:11Z", - "upvotes": 3, - "comment_count": 2, + "number": 3877, + "title": "Self host Langfuse not working - column `t6.cloud_config` does not exist", + "href": "https://github.com/orgs/langfuse/discussions/3877", + "created_at": "2024-10-23T11:54:13Z", + "upvotes": 1, + "comment_count": 4, "resolved": false, "labels": [ - "integration-langchain", - "✅ Done" + "self-hosting" ], "author": { - "login": "Hacky-DH", - "html_url": "https://github.com/Hacky-DH" + "login": "SugumarRavichandran", + "html_url": "https://github.com/SugumarRavichandran" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3112, - "title": "Request Role elevation from Langfuse UI", - "href": "https://github.com/orgs/langfuse/discussions/3112", - "created_at": "2024-08-28T13:15:21Z", + "number": 3868, + "title": "Langfuse Tracing not showing up on UI", + "href": "https://github.com/orgs/langfuse/discussions/3868", + "created_at": "2024-10-22T21:26:13Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, - "labels": [ - "feat-rbac" - ], + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "thund3rbrd", - "html_url": "https://github.com/thund3rbrd" + "login": "nthanapaisal", + "html_url": "https://github.com/nthanapaisal" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3111, - "title": "Improve RBAC", - "href": "https://github.com/orgs/langfuse/discussions/3111", - "created_at": "2024-08-28T13:08:57Z", + "number": 3863, + "title": "Request Timeout for Dashboard", + "href": "https://github.com/orgs/langfuse/discussions/3863", + "created_at": "2024-10-22T14:18:43Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-rbac" + "self-hosting" ], "author": { - "login": "thund3rbrd", - "html_url": "https://github.com/thund3rbrd" + "login": "mritonia", + "html_url": "https://github.com/mritonia" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3074, - "title": "Add \"image_url\" to Langfuse Prompt types.", - "href": "https://github.com/orgs/langfuse/discussions/3074", - "created_at": "2024-08-26T11:54:32Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, + "number": 3858, + "title": "Monitoring self-hosted langfuse.", + "href": "https://github.com/orgs/langfuse/discussions/3858", + "created_at": "2024-10-22T07:04:26Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-prompt-management" + "self-hosting" ], "author": { - "login": "grobruegge", - "html_url": "https://github.com/grobruegge" + "login": "SinghCoder", + "html_url": "https://github.com/SinghCoder" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3062, - "title": "Support for OpenAI.client.chat.completions.with_raw_response", - "href": "https://github.com/orgs/langfuse/discussions/3062", - "created_at": "2024-08-24T12:55:39Z", + "number": 3854, + "title": "Open AI Python SDK - 'OpenAI' object has no attribute 'langfuse_auth_check'", + "href": "https://github.com/orgs/langfuse/discussions/3854", + "created_at": "2024-10-21T21:41:17Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, + "comment_count": 4, + "resolved": true, "labels": [ "integration-openai" ], "author": { - "login": "aman-gupta-doc", - "html_url": "https://github.com/aman-gupta-doc" + "login": "hjensen", + "html_url": "https://github.com/hjensen" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3053, - "title": "Being able to link Prompts with Traces when using the LangChain integration", - "href": "https://github.com/orgs/langfuse/discussions/3053", - "created_at": "2024-08-23T13:14:21Z", - "upvotes": 2, + "number": 3845, + "title": "Traces: Link a trace to multiple sessions", + "href": "https://github.com/orgs/langfuse/discussions/3845", + "created_at": "2024-10-21T11:31:54Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [ - "✅ Done" + "feat-sessions" ], "author": { - "login": "jonnyforsterMSG", - "html_url": "https://github.com/jonnyforsterMSG" + "login": "nikitagupta5566", + "html_url": "https://github.com/nikitagupta5566" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3050, - "title": "Implement dataset removal method", - "href": "https://github.com/orgs/langfuse/discussions/3050", - "created_at": "2024-08-23T11:40:13Z", - "upvotes": 3, - "comment_count": 0, - "resolved": false, + "number": 3838, + "title": "How do I user wise \"Total Token\" counts via API or via python, As I want to track which user is consuming how much tokens", + "href": "https://github.com/orgs/langfuse/discussions/3838", + "created_at": "2024-10-21T06:51:06Z", + "upvotes": 2, + "comment_count": 3, + "resolved": true, "labels": [ - "feat-datasets" + "feat-cost-tracking" ], "author": { - "login": "justinas-kazanavicius", - "html_url": "https://github.com/justinas-kazanavicius" + "login": "hrone-dev-satyammishra", + "html_url": "https://github.com/hrone-dev-satyammishra" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3023, - "title": "Feature Request - Expose token usage from stream_options", - "href": "https://github.com/orgs/langfuse/discussions/3023", - "created_at": "2024-08-22T17:08:08Z", + "number": 3835, + "title": "To use Gemini on playground", + "href": "https://github.com/orgs/langfuse/discussions/3835", + "created_at": "2024-10-20T12:20:22Z", "upvotes": 1, - "comment_count": 0, + "comment_count": 3, "resolved": false, - "labels": [ - "integration-openai" - ], + "labels": [], "author": { - "login": "kilimchoi", - "html_url": "https://github.com/kilimchoi" + "login": "yu-tarrrr", + "html_url": "https://github.com/yu-tarrrr" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3021, - "title": "Pre-defined user access", - "href": "https://github.com/orgs/langfuse/discussions/3021", - "created_at": "2024-08-22T16:08:19Z", + "number": 3824, + "title": "Traces and events not going through to Langfuse server even though they're generating", + "href": "https://github.com/orgs/langfuse/discussions/3824", + "created_at": "2024-10-18T13:49:53Z", "upvotes": 1, - "comment_count": 0, + "comment_count": 2, "resolved": false, "labels": [ - "self-hosting" + "integration-python-decorator" ], "author": { - "login": "LucasMagnum", - "html_url": "https://github.com/LucasMagnum" + "login": "FaresKi", + "html_url": "https://github.com/FaresKi" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3014, - "title": "Supports filter string using regular expression matching", - "href": "https://github.com/orgs/langfuse/discussions/3014", - "created_at": "2024-08-22T14:39:34Z", + "number": 3800, + "title": "Insert API Keys in database", + "href": "https://github.com/orgs/langfuse/discussions/3800", + "created_at": "2024-10-17T12:40:17Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 3, "resolved": false, "labels": [], "author": { - "login": "chai3", - "html_url": "https://github.com/chai3" + "login": "kryvokhyzha", + "html_url": "https://github.com/kryvokhyzha" }, - "category": "Ideas" + "category": "Support" }, { - "number": 3004, - "title": "Support for more modalities and base64 content", - "href": "https://github.com/orgs/langfuse/discussions/3004", - "created_at": "2024-08-22T09:50:47Z", - "upvotes": 20, - "comment_count": 6, - "resolved": false, + "number": 3799, + "title": "Weird behaviour of metric values and their reasoning", + "href": "https://github.com/orgs/langfuse/discussions/3799", + "created_at": "2024-10-17T12:17:48Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-multimodal" + "feat-evals" ], "author": { - "login": "marliessophie", - "html_url": "https://github.com/marliessophie" + "login": "filipmihal", + "html_url": "https://github.com/filipmihal" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2997, - "title": "Filter Span events in dashboard", - "href": "https://github.com/orgs/langfuse/discussions/2997", - "created_at": "2024-08-21T16:25:02Z", + "number": 3797, + "title": "Filter Categorical Score Values", + "href": "https://github.com/orgs/langfuse/discussions/3797", + "created_at": "2024-10-17T10:15:58Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, - "labels": [], + "comment_count": 3, + "resolved": true, + "labels": [ + "feat-scores" + ], "author": { - "login": "tagaretiro", - "html_url": "https://github.com/tagaretiro" + "login": "alabrashJr", + "html_url": "https://github.com/alabrashJr" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2987, - "title": "Claude/openai/google prompt caching", - "href": "https://github.com/orgs/langfuse/discussions/2987", - "created_at": "2024-08-21T04:18:55Z", - "upvotes": 3, - "comment_count": 4, - "resolved": false, + "number": 3796, + "title": "Manually setting up Langchain Callback handler with explicit values doesn't configure langfuse client in decorator approach", + "href": "https://github.com/orgs/langfuse/discussions/3796", + "created_at": "2024-10-17T08:36:51Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-cost-tracking" + "integration-langchain" ], "author": { - "login": "mrdrprofuroboros", - "html_url": "https://github.com/mrdrprofuroboros" + "login": "FaresKi", + "html_url": "https://github.com/FaresKi" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2978, - "title": "Unexpected event format when using `ibm-watsonx-ai` with LangChain extension", - "href": "https://github.com/orgs/langfuse/discussions/2978", - "created_at": "2024-08-20T11:20:28Z", - "upvotes": 1, - "comment_count": 0, - "resolved": false, + "number": 3780, + "title": "How to use prompt management with litellm's integration with langfuse?", + "href": "https://github.com/orgs/langfuse/discussions/3780", + "created_at": "2024-10-16T16:48:40Z", + "upvotes": 2, + "comment_count": 8, + "resolved": true, "labels": [ - "integration-langchain" + "feat-prompt-management", + "integration-litellm" ], "author": { - "login": "barvhaim", - "html_url": "https://github.com/barvhaim" + "login": "GildeshAbhay", + "html_url": "https://github.com/GildeshAbhay" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2975, - "title": "fetch all users via sdk/api", - "href": "https://github.com/orgs/langfuse/discussions/2975", - "created_at": "2024-08-20T06:52:47Z", + "number": 3779, + "title": "Annotation Queues and Session IDs and Datasets and LLM Security", + "href": "https://github.com/orgs/langfuse/discussions/3779", + "created_at": "2024-10-16T14:55:09Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 3, "resolved": false, - "labels": [ - "feat-users" - ], + "labels": [], "author": { - "login": "vincent-larisma", - "html_url": "https://github.com/vincent-larisma" + "login": "paolotamag", + "html_url": "https://github.com/paolotamag" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2967, - "title": "Tag based usage", - "href": "https://github.com/orgs/langfuse/discussions/2967", - "created_at": "2024-08-19T07:13:26Z", + "number": 3778, + "title": "Observe decorator not working with custom langchain model & custom langfuse callback handler", + "href": "https://github.com/orgs/langfuse/discussions/3778", + "created_at": "2024-10-16T12:36:02Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [ - "feat-dashboard", - "feat-tags" - ], + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "aakash-vwo", - "html_url": "https://github.com/aakash-vwo" + "login": "FaresKi", + "html_url": "https://github.com/FaresKi" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2949, - "title": "Auto-patching Langchain to include Langfuse callback handler", - "href": "https://github.com/orgs/langfuse/discussions/2949", - "created_at": "2024-08-15T12:17:32Z", - "upvotes": 3, - "comment_count": 1, + "number": 3777, + "title": "Error when trying to upgrade my langfuse deployment", + "href": "https://github.com/orgs/langfuse/discussions/3777", + "created_at": "2024-10-16T09:25:53Z", + "upvotes": 2, + "comment_count": 2, "resolved": false, "labels": [ - "integration-langchain" + "self-hosting" ], "author": { - "login": "kongzii", - "html_url": "https://github.com/kongzii" + "login": "nithin1995", + "html_url": "https://github.com/nithin1995" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2923, - "title": "Feature: Add CAS (and maybe SAML) as a authentication method", - "href": "https://github.com/orgs/langfuse/discussions/2923", - "created_at": "2024-08-13T17:18:42Z", + "number": 3766, + "title": "Latency and total cost for runs are not computed", + "href": "https://github.com/orgs/langfuse/discussions/3766", + "created_at": "2024-10-15T21:38:15Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, + "comment_count": 3, + "resolved": true, + "labels": [], + "author": { + "login": "ldbolanos", + "html_url": "https://github.com/ldbolanos" + }, + "category": "Support" + }, + { + "number": 3764, + "title": "Best practices for tracing an app with history and tool usage", + "href": "https://github.com/orgs/langfuse/discussions/3764", + "created_at": "2024-10-15T21:27:34Z", + "upvotes": 2, + "comment_count": 3, + "resolved": true, "labels": [ - "self-hosting" + "integration-openai" ], "author": { - "login": "jayteaftw", - "html_url": "https://github.com/jayteaftw" + "login": "machulav", + "html_url": "https://github.com/machulav" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2919, - "title": "Adding access to User's sessions directly", - "href": "https://github.com/orgs/langfuse/discussions/2919", - "created_at": "2024-08-13T12:42:16Z", + "number": 3756, + "title": "How to create an eval config for prompts using python api?", + "href": "https://github.com/orgs/langfuse/discussions/3756", + "created_at": "2024-10-15T09:20:06Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-users", - "feat-sessions" + "feat-evals" ], "author": { - "login": "Youneesz", - "html_url": "https://github.com/Youneesz" + "login": "GildeshAbhay", + "html_url": "https://github.com/GildeshAbhay" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2883, - "title": "Compare two dataset runs side by side", - "href": "https://github.com/orgs/langfuse/discussions/2883", - "created_at": "2024-08-09T10:40:05Z", - "upvotes": 4, - "comment_count": 1, - "resolved": false, + "number": 3737, + "title": "Monitoring for multi agent systems (OpenWebUI)", + "href": "https://github.com/orgs/langfuse/discussions/3737", + "created_at": "2024-10-14T16:50:17Z", + "upvotes": 1, + "comment_count": 3, + "resolved": true, "labels": [ - "feat-datasets" + "integration-openwebui" ], "author": { - "login": "dmaslov", - "html_url": "https://github.com/dmaslov" + "login": "OM-EL", + "html_url": "https://github.com/OM-EL" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2881, - "title": "feat (ui): Collapse sidebar by default", - "href": "https://github.com/orgs/langfuse/discussions/2881", - "created_at": "2024-08-09T10:03:39Z", + "number": 3735, + "title": "Is it possible to use tools calling and structured output in the Prompts UI and Playground?", + "href": "https://github.com/orgs/langfuse/discussions/3735", + "created_at": "2024-10-14T16:43:23Z", "upvotes": 1, - "comment_count": 4, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "ui" + "feat-prompt-management", + "feat-playground" ], "author": { - "login": "marctorsoc", - "html_url": "https://github.com/marctorsoc" + "login": "mifopen", + "html_url": "https://github.com/mifopen" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2877, - "title": "Make langfuse deployable to AWS Lambda", - "href": "https://github.com/orgs/langfuse/discussions/2877", - "created_at": "2024-08-09T08:24:14Z", - "upvotes": 3, + "number": 3718, + "title": "How to delete a Session?", + "href": "https://github.com/orgs/langfuse/discussions/3718", + "created_at": "2024-10-11T14:51:46Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, - "labels": [], + "resolved": true, + "labels": [ + "feat-sessions" + ], "author": { - "login": "MeddahAbdellah", - "html_url": "https://github.com/MeddahAbdellah" + "login": "augustoolucas", + "html_url": "https://github.com/augustoolucas" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2870, - "title": "custom base path deployments", - "href": "https://github.com/orgs/langfuse/discussions/2870", - "created_at": "2024-08-08T13:15:51Z", + "number": 3717, + "title": "Llamaindex Workflow does't work with Instrumentation Module", + "href": "https://github.com/orgs/langfuse/discussions/3717", + "created_at": "2024-10-11T10:27:09Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [], + "comment_count": 3, + "resolved": true, + "labels": [ + "integraton-llamaindex" + ], "author": { - "login": "marioweid", - "html_url": "https://github.com/marioweid" + "login": "ntdanhtma", + "html_url": "https://github.com/ntdanhtma" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2864, - "title": "Add Bedrock Guardrails to the LLM Security documentation", - "href": "https://github.com/orgs/langfuse/discussions/2864", - "created_at": "2024-08-07T23:56:05Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, + "number": 3698, + "title": "Can I use Amazon Bedrock for Langfuse Evals?", + "href": "https://github.com/orgs/langfuse/discussions/3698", + "created_at": "2024-10-10T15:34:48Z", + "upvotes": 1, + "comment_count": 5, + "resolved": true, "labels": [ - "feat-llm-security", + "feat-evals", "integration-amazon-bedrock" ], "author": { - "login": "wirjo", - "html_url": "https://github.com/wirjo" + "login": "j10sanders", + "html_url": "https://github.com/j10sanders" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2863, - "title": "Add AWS as a deployment option in the documentation", - "href": "https://github.com/orgs/langfuse/discussions/2863", - "created_at": "2024-08-07T23:53:40Z", - "upvotes": 3, - "comment_count": 1, + "number": 3679, + "title": "Langfuse / Langflow not intergrating", + "href": "https://github.com/orgs/langfuse/discussions/3679", + "created_at": "2024-10-09T17:06:32Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, "labels": [ - "✅ Done", - "self-hosting" + "integration-langflow" ], "author": { - "login": "wirjo", - "html_url": "https://github.com/wirjo" + "login": "colecal", + "html_url": "https://github.com/colecal" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2850, - "title": "Feat (ui): Move columns", - "href": "https://github.com/orgs/langfuse/discussions/2850", - "created_at": "2024-08-07T11:55:55Z", + "number": 3678, + "title": "Langfuse not tracing code from my VM (server)", + "href": "https://github.com/orgs/langfuse/discussions/3678", + "created_at": "2024-10-09T14:56:05Z", "upvotes": 1, - "comment_count": 0, + "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "self-hosting" + ], "author": { - "login": "marctorsoc", - "html_url": "https://github.com/marctorsoc" + "login": "akbar-mta", + "html_url": "https://github.com/akbar-mta" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2848, - "title": "Feat: Allow not sorting tags", - "href": "https://github.com/orgs/langfuse/discussions/2848", - "created_at": "2024-08-07T11:50:44Z", + "number": 3674, + "title": "Docs for K8s deployments", + "href": "https://github.com/orgs/langfuse/discussions/3674", + "created_at": "2024-10-09T09:52:05Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-tags" + "self-hosting" ], "author": { - "login": "marctorsoc", - "html_url": "https://github.com/marctorsoc" + "login": "Brant-lzh", + "html_url": "https://github.com/Brant-lzh" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2823, - "title": "Need support for ChatOCIGenAI", - "href": "https://github.com/orgs/langfuse/discussions/2823", - "created_at": "2024-08-05T13:34:30Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, + "number": 3645, + "title": "Cannot Sign In or Sign Up to Local Langfuse Instance", + "href": "https://github.com/orgs/langfuse/discussions/3645", + "created_at": "2024-10-08T11:09:48Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "engchina", - "html_url": "https://github.com/engchina" + "login": "Patryk-Chlanda", + "html_url": "https://github.com/Patryk-Chlanda" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2821, - "title": "Need API endpoints to add projects and users", - "href": "https://github.com/orgs/langfuse/discussions/2821", - "created_at": "2024-08-05T13:10:49Z", + "number": 3641, + "title": "Sign in and Sign up button is greyed out", + "href": "https://github.com/orgs/langfuse/discussions/3641", + "created_at": "2024-10-08T09:32:16Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, + "labels": [], + "author": { + "login": "akbar-mta", + "html_url": "https://github.com/akbar-mta" + }, + "category": "Support" + }, + { + "number": 3637, + "title": "Sign In Button Remains Disabled When Logging in with Email/Password on Langfuse Self-Hosted", + "href": "https://github.com/orgs/langfuse/discussions/3637", + "created_at": "2024-10-08T06:40:05Z", "upvotes": 2, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "kameshbrao", - "html_url": "https://github.com/kameshbrao" + "login": "tubone24", + "html_url": "https://github.com/tubone24" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2812, - "title": "Could you make the Prompt label 36 char long?", - "href": "https://github.com/orgs/langfuse/discussions/2812", - "created_at": "2024-08-02T11:03:08Z", + "number": 3615, + "title": "Failing with internal server error when trying to add score to a trace", + "href": "https://github.com/orgs/langfuse/discussions/3615", + "created_at": "2024-10-07T06:15:14Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [ - "feat-prompt-management", - "✅ Done" - ], + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "DevSageH", - "html_url": "https://github.com/DevSageH" + "login": "nithin1995", + "html_url": "https://github.com/nithin1995" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2810, - "title": "Enable setting a label to an existing prompt version via the api/sdk.", - "href": "https://github.com/orgs/langfuse/discussions/2810", - "created_at": "2024-08-01T16:53:06Z", - "upvotes": 7, - "comment_count": 4, - "resolved": false, - "labels": [ - "feat-prompt-management" - ], + "number": 3592, + "title": "Set trace_id in Langchain CallbackHandler", + "href": "https://github.com/orgs/langfuse/discussions/3592", + "created_at": "2024-10-05T11:09:30Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, + "labels": [], "author": { - "login": "ClementNguyen", - "html_url": "https://github.com/ClementNguyen" + "login": "michaelpoluektov", + "html_url": "https://github.com/michaelpoluektov" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2797, - "title": "Enable list_prompts/search_prompts using client", - "href": "https://github.com/orgs/langfuse/discussions/2797", - "created_at": "2024-07-31T13:45:38Z", - "upvotes": 4, + "number": 3574, + "title": "Automated provisioning of default resources in self hosting", + "href": "https://github.com/orgs/langfuse/discussions/3574", + "created_at": "2024-10-04T06:44:45Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [ - "feat-prompt-management" + "self-hosting" ], "author": { - "login": "krlng", - "html_url": "https://github.com/krlng" + "login": "Harinisri29", + "html_url": "https://github.com/Harinisri29" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2781, - "title": "Add support for custom serialization of observation fields", - "href": "https://github.com/orgs/langfuse/discussions/2781", - "created_at": "2024-07-29T18:49:03Z", - "upvotes": 1, + "number": 3569, + "title": "UnauthorizedError: No authorization header After Switching to Headless Initialization", + "href": "https://github.com/orgs/langfuse/discussions/3569", + "created_at": "2024-10-03T08:52:35Z", + "upvotes": 2, "comment_count": 2, "resolved": false, - "labels": [ - "sdk-python" - ], + "labels": [], "author": { - "login": "ashamlian-roadway", - "html_url": "https://github.com/ashamlian-roadway" + "login": "chandel-aman", + "html_url": "https://github.com/chandel-aman" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2770, - "title": "Add clickable link to the 'release' kwargs in a Trace - this will route to the documentations/change log of that release/version", - "href": "https://github.com/orgs/langfuse/discussions/2770", - "created_at": "2024-07-28T07:08:07Z", + "number": 3559, + "title": "Token Cost using OpenRouter", + "href": "https://github.com/orgs/langfuse/discussions/3559", + "created_at": "2024-10-02T05:25:14Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, + "comment_count": 1, + "resolved": true, "labels": [], "author": { - "login": "stepanogil", - "html_url": "https://github.com/stepanogil" + "login": "austinm911", + "html_url": "https://github.com/austinm911" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2766, - "title": "Support Exporting LangSmith Run Traces into Langfuse!", - "href": "https://github.com/orgs/langfuse/discussions/2766", - "created_at": "2024-07-27T02:34:44Z", - "upvotes": 3, + "number": 3557, + "title": "Link 2 traces", + "href": "https://github.com/orgs/langfuse/discussions/3557", + "created_at": "2024-10-02T02:14:27Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "p-barman", - "html_url": "https://github.com/p-barman" + "login": "saiprasath21", + "html_url": "https://github.com/saiprasath21" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2747, - "title": "A new configuration env variable for custom URL prefix", - "href": "https://github.com/orgs/langfuse/discussions/2747", - "created_at": "2024-07-25T17:00:57Z", + "number": 3556, + "title": "Update a trace", + "href": "https://github.com/orgs/langfuse/discussions/3556", + "created_at": "2024-10-02T02:10:15Z", "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "abdullah-retorio", - "html_url": "https://github.com/abdullah-retorio" + "login": "saiprasath21", + "html_url": "https://github.com/saiprasath21" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2746, - "title": "Returning prompts from expired cache may be disabled using a boolean argument", - "href": "https://github.com/orgs/langfuse/discussions/2746", - "created_at": "2024-07-25T15:57:26Z", + "number": 3553, + "title": "How to track DSPy call within Langgraph", + "href": "https://github.com/orgs/langfuse/discussions/3553", + "created_at": "2024-10-01T20:00:11Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ - "feat-prompt-management" + "integration-langchain", + "integration-dspy" ], "author": { - "login": "ogunoz", - "html_url": "https://github.com/ogunoz" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2745, - "title": "Lazy fallback for get_prompt", - "href": "https://github.com/orgs/langfuse/discussions/2745", - "created_at": "2024-07-25T15:50:32Z", + "number": 3552, + "title": "LlamaIndex traces grouping", + "href": "https://github.com/orgs/langfuse/discussions/3552", + "created_at": "2024-10-01T18:35:11Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-prompt-management" + "integraton-llamaindex" ], "author": { - "login": "ogunoz", - "html_url": "https://github.com/ogunoz" + "login": "ivanviragine", + "html_url": "https://github.com/ivanviragine" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2738, - "title": "Set variables in playground from dataset", - "href": "https://github.com/orgs/langfuse/discussions/2738", - "created_at": "2024-07-25T09:27:30Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, + "number": 3549, + "title": "create api keys pair using some method or api", + "href": "https://github.com/orgs/langfuse/discussions/3549", + "created_at": "2024-10-01T11:45:12Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-datasets", - "feat-playground" + "self-hosting" ], "author": { - "login": "hbenyamina", - "html_url": "https://github.com/hbenyamina" + "login": "ryanrib14", + "html_url": "https://github.com/ryanrib14" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2729, - "title": "Comment thread on Traces", - "href": "https://github.com/orgs/langfuse/discussions/2729", - "created_at": "2024-07-24T13:52:51Z", + "number": 3545, + "title": "How to Set Custom Trace ID with a Decorator and Include langfuse_observation_id?", + "href": "https://github.com/orgs/langfuse/discussions/3545", + "created_at": "2024-10-01T02:04:03Z", "upvotes": 1, - "comment_count": 3, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "✅ Done", - "feat-comments" + "integration-python-decorator" ], "author": { - "login": "guptakvgaurav", - "html_url": "https://github.com/guptakvgaurav" + "login": "octadion", + "html_url": "https://github.com/octadion" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2728, - "title": "Session-level scores", - "href": "https://github.com/orgs/langfuse/discussions/2728", - "created_at": "2024-07-24T10:05:40Z", - "upvotes": 3, - "comment_count": 2, - "resolved": false, + "number": 3540, + "title": "error ❌ tRPC failed on public.checkUpdate: Failed to fetch or json parse the latest releases Failed to fetch or json parse the latest releases", + "href": "https://github.com/orgs/langfuse/discussions/3540", + "created_at": "2024-09-30T20:29:22Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "feat-scores", - "feat-sessions" + "self-hosting" ], "author": { - "login": "felixsg", - "html_url": "https://github.com/felixsg" + "login": "FaresKi", + "html_url": "https://github.com/FaresKi" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2721, - "title": "Add note on each prompt version", - "href": "https://github.com/orgs/langfuse/discussions/2721", - "created_at": "2024-07-23T14:48:02Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, + "number": 3531, + "title": "is it possible to assign a label to an existing prompt via API/SDK ?", + "href": "https://github.com/orgs/langfuse/discussions/3531", + "created_at": "2024-09-30T07:49:28Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ "feat-prompt-management" ], "author": { - "login": "cubxxw", - "html_url": "https://github.com/cubxxw" + "login": "simicvm", + "html_url": "https://github.com/simicvm" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2720, - "title": "Feature request [UI]: Remember column selection PER project in Traces view", - "href": "https://github.com/orgs/langfuse/discussions/2720", - "created_at": "2024-07-23T13:53:38Z", + "number": 3525, + "title": "Applying database migrations failed. This is mostly caused by the database being unavailable", + "href": "https://github.com/orgs/langfuse/discussions/3525", + "created_at": "2024-09-29T11:14:04Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 3, "resolved": false, - "labels": [], + "labels": [ + "self-hosting" + ], "author": { - "login": "justingodden", - "html_url": "https://github.com/justingodden" + "login": "NanthagopalEswaran", + "html_url": "https://github.com/NanthagopalEswaran" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2710, - "title": "Support JSON messages in prompt management", - "href": "https://github.com/orgs/langfuse/discussions/2710", - "created_at": "2024-07-23T01:59:12Z", + "number": 3521, + "title": "is it open source or not?", + "href": "https://github.com/orgs/langfuse/discussions/3521", + "created_at": "2024-09-27T22:07:52Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, + "comment_count": 1, + "resolved": true, "labels": [], "author": { - "login": "jasonslyvia", - "html_url": "https://github.com/jasonslyvia" + "login": "severfire", + "html_url": "https://github.com/severfire" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2704, - "title": "Deleting user's traces via API to be GDPR compliant", - "href": "https://github.com/orgs/langfuse/discussions/2704", - "created_at": "2024-07-22T12:03:22Z", - "upvotes": 7, - "comment_count": 2, - "resolved": false, - "labels": [], + "number": 3520, + "title": "Langfuse not logging costs on Vertex AI gemini-1.5-flash-002.", + "href": "https://github.com/orgs/langfuse/discussions/3520", + "created_at": "2024-09-27T18:51:08Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, + "labels": [ + "integraton-llamaindex" + ], "author": { - "login": "Stormyy", - "html_url": "https://github.com/Stormyy" + "login": "arthurbrenno", + "html_url": "https://github.com/arthurbrenno" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2699, - "title": "Schemad or structured configuration for prompt", - "href": "https://github.com/orgs/langfuse/discussions/2699", - "created_at": "2024-07-22T02:29:13Z", - "upvotes": 1, - "comment_count": 1, - "resolved": false, + "number": 3503, + "title": "Not possible to delete prompts programmatically, (langfuse python library or api)", + "href": "https://github.com/orgs/langfuse/discussions/3503", + "created_at": "2024-09-27T12:33:52Z", + "upvotes": 2, + "comment_count": 2, + "resolved": true, "labels": [ "feat-prompt-management" ], "author": { - "login": "jasonslyvia", - "html_url": "https://github.com/jasonslyvia" + "login": "RealGammaNL", + "html_url": "https://github.com/RealGammaNL" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2697, - "title": "A transparent mode", - "href": "https://github.com/orgs/langfuse/discussions/2697", - "created_at": "2024-07-21T20:55:43Z", + "number": 3496, + "title": "Unable to fetch prompts without production label", + "href": "https://github.com/orgs/langfuse/discussions/3496", + "created_at": "2024-09-27T03:27:52Z", "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [], + "resolved": true, + "labels": [ + "feat-prompt-management" + ], "author": { - "login": "emsi", - "html_url": "https://github.com/emsi" + "login": "chandel-aman", + "html_url": "https://github.com/chandel-aman" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2684, - "title": "Langfuse batch prompts api should return prompt configs as well", - "href": "https://github.com/orgs/langfuse/discussions/2684", - "created_at": "2024-07-19T10:05:45Z", - "upvotes": 2, - "comment_count": 3, + "number": 3489, + "title": "Missing input/output on trace when using openai js integration", + "href": "https://github.com/orgs/langfuse/discussions/3489", + "created_at": "2024-09-26T15:36:06Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, "labels": [ - "feat-prompt-management", - "✅ Done" + "integration-openai" ], "author": { - "login": "ashutoshsaboo", - "html_url": "https://github.com/ashutoshsaboo" + "login": "dimitrydesilias", + "html_url": "https://github.com/dimitrydesilias" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2669, - "title": "Visualisation of graph execution", - "href": "https://github.com/orgs/langfuse/discussions/2669", - "created_at": "2024-07-18T08:44:03Z", + "number": 3486, + "title": "Bind all multiple hierarchical call against session-id instead of opening multiple threads", + "href": "https://github.com/orgs/langfuse/discussions/3486", + "created_at": "2024-09-26T06:31:20Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [], + "comment_count": 3, + "resolved": true, + "labels": [ + "integration-python-decorator" + ], "author": { - "login": "VMinB12", - "html_url": "https://github.com/VMinB12" + "login": "ajeet6261", + "html_url": "https://github.com/ajeet6261" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2668, - "title": "I want to say something about user feedback", - "href": "https://github.com/orgs/langfuse/discussions/2668", - "created_at": "2024-07-18T07:57:50Z", + "number": 3485, + "title": "How to avoid memory leaks due to LangchainCallbackHandler while using userId and sessionId", + "href": "https://github.com/orgs/langfuse/discussions/3485", + "created_at": "2024-09-26T00:07:14Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [], + "comment_count": 6, + "resolved": true, + "labels": [ + "integration-langchain", + "feat-users", + "feat-sessions" + ], "author": { - "login": "cubxxw", - "html_url": "https://github.com/cubxxw" + "login": "Chengdyc", + "html_url": "https://github.com/Chengdyc" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2664, - "title": "Prompts are supported for export", - "href": "https://github.com/orgs/langfuse/discussions/2664", - "created_at": "2024-07-18T00:43:12Z", + "number": 3480, + "title": "How to provide a TLS Cert for PGSQL cloud connection in Langfuse docker container?", + "href": "https://github.com/orgs/langfuse/discussions/3480", + "created_at": "2024-09-25T20:44:17Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [], + "comment_count": 2, + "resolved": true, + "labels": [ + "self-hosting" + ], "author": { - "login": "cubxxw", - "html_url": "https://github.com/cubxxw" + "login": "barvhaim", + "html_url": "https://github.com/barvhaim" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2653, - "title": "Web page request is a little slow, whether to consider using golang to reconstruct", - "href": "https://github.com/orgs/langfuse/discussions/2653", - "created_at": "2024-07-17T07:08:45Z", + "number": 3477, + "title": "LangFuse Low Level SDK does not render images by passing the link", + "href": "https://github.com/orgs/langfuse/discussions/3477", + "created_at": "2024-09-25T15:15:54Z", "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "feat-multimodal" + ], "author": { - "login": "cubxxw", - "html_url": "https://github.com/cubxxw" + "login": "VikramShenoy97", + "html_url": "https://github.com/VikramShenoy97" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2642, - "title": "Add ability to add name or label to a Langfuse API key", - "href": "https://github.com/orgs/langfuse/discussions/2642", - "created_at": "2024-07-16T17:08:42Z", - "upvotes": 5, - "comment_count": 1, + "number": 3469, + "title": "raise exception when handle_span_events", + "href": "https://github.com/orgs/langfuse/discussions/3469", + "created_at": "2024-09-25T00:56:32Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "agibralter", - "html_url": "https://github.com/agibralter" + "login": "nightosong", + "html_url": "https://github.com/nightosong" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2625, - "title": "Track Openai Assistant API costs", - "href": "https://github.com/orgs/langfuse/discussions/2625", - "created_at": "2024-07-15T07:50:18Z", - "upvotes": 3, - "comment_count": 0, - "resolved": false, + "number": 3466, + "title": "How to get costs associated with an API call / user?", + "href": "https://github.com/orgs/langfuse/discussions/3466", + "created_at": "2024-09-24T19:33:56Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "integration-openai" + "feat-users", + "feat-cost-tracking" ], "author": { - "login": "christos-bsq", - "html_url": "https://github.com/christos-bsq" + "login": "punkpeye", + "html_url": "https://github.com/punkpeye" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2624, - "title": "Feature Request: add tool calling and tool messages to Prompt Management", - "href": "https://github.com/orgs/langfuse/discussions/2624", - "created_at": "2024-07-15T06:49:50Z", - "upvotes": 3, - "comment_count": 0, - "resolved": false, + "number": 3465, + "title": "How to run langfuse locally while using a hosted database", + "href": "https://github.com/orgs/langfuse/discussions/3465", + "created_at": "2024-09-24T14:24:29Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "feat-prompt-management" + "self-hosting" ], "author": { - "login": "eloko7", - "html_url": "https://github.com/eloko7" + "login": "wil0u", + "html_url": "https://github.com/wil0u" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2622, - "title": "Inbuild langfuse tracing.", - "href": "https://github.com/orgs/langfuse/discussions/2622", - "created_at": "2024-07-13T10:39:13Z", + "number": 3462, + "title": "how to set user_id or session_id in trace?", + "href": "https://github.com/orgs/langfuse/discussions/3462", + "created_at": "2024-09-24T08:34:59Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, - "labels": [], - "author": { - "login": "rashid-globallogic", - "html_url": "https://github.com/rashid-globallogic" - }, - "category": "Ideas" - }, - { - "number": 2605, - "title": "DSPy tracing", - "href": "https://github.com/orgs/langfuse/discussions/2605", - "created_at": "2024-07-10T12:52:35Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "integrations", - "✅ Done", - "integration-dspy" + "integration-python-decorator", + "feat-users", + "feat-sessions" ], "author": { - "login": "paolotamag", - "html_url": "https://github.com/paolotamag" + "login": "yumc2573", + "html_url": "https://github.com/yumc2573" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2586, - "title": "Feat: Ability to change curreny for model usage costs.", - "href": "https://github.com/orgs/langfuse/discussions/2586", - "created_at": "2024-07-09T15:40:22Z", + "number": 3460, + "title": "Langfuse observation for openai embeddings method", + "href": "https://github.com/orgs/langfuse/discussions/3460", + "created_at": "2024-09-24T06:01:06Z", "upvotes": 2, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ + "integration-openai", + "integration-python-decorator", "feat-cost-tracking" ], "author": { - "login": "jannikstdl", - "html_url": "https://github.com/jannikstdl" + "login": "simrangulati-jktech", + "html_url": "https://github.com/simrangulati-jktech" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2578, - "title": "Conditional Trace Content/Message submission", - "href": "https://github.com/orgs/langfuse/discussions/2578", - "created_at": "2024-07-09T09:57:26Z", - "upvotes": 3, + "number": 3446, + "title": "Right way to migrate langfuse deployed on K8s within an AWS account", + "href": "https://github.com/orgs/langfuse/discussions/3446", + "created_at": "2024-09-23T06:32:02Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [], + "resolved": true, + "labels": [ + "self-hosting" + ], "author": { - "login": "simonwh", - "html_url": "https://github.com/simonwh" + "login": "nithin1995", + "html_url": "https://github.com/nithin1995" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2577, - "title": "Detailed and Interactive Plot Visualization like WandB", - "href": "https://github.com/orgs/langfuse/discussions/2577", - "created_at": "2024-07-09T09:19:38Z", + "number": 3435, + "title": "Langfuse is inconsistently generating span latencies table in traces greater than 36K entiries", + "href": "https://github.com/orgs/langfuse/discussions/3435", + "created_at": "2024-09-20T18:54:28Z", "upvotes": 1, "comment_count": 3, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "yusuke-intern", - "html_url": "https://github.com/yusuke-intern" + "login": "databloom", + "html_url": "https://github.com/databloom" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2576, - "title": "Log prob on Langfuse", - "href": "https://github.com/orgs/langfuse/discussions/2576", - "created_at": "2024-07-09T09:16:23Z", + "number": 3429, + "title": "Async version of Langfuse.get_prompt", + "href": "https://github.com/orgs/langfuse/discussions/3429", + "created_at": "2024-09-20T14:26:51Z", "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "integration-openai" + "feat-prompt-management" ], "author": { - "login": "yusuke-intern", - "html_url": "https://github.com/yusuke-intern" + "login": "antoniomdk", + "html_url": "https://github.com/antoniomdk" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2573, - "title": "Prompt Cataloguing and prompt github", - "href": "https://github.com/orgs/langfuse/discussions/2573", - "created_at": "2024-07-08T20:05:23Z", + "number": 3420, + "title": "Help setting up GCP host (cloudbuild or console)", + "href": "https://github.com/orgs/langfuse/discussions/3420", + "created_at": "2024-09-20T04:34:35Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 3, "resolved": false, "labels": [ - "feat-prompt-management" + "self-hosting" ], "author": { - "login": "kunal2002", - "html_url": "https://github.com/kunal2002" + "login": "elliottower", + "html_url": "https://github.com/elliottower" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2571, - "title": "If Data/Metadata given to Langfuse SDK that exceeds Langfuse's limit, log/throw/emit Stack Trace", - "href": "https://github.com/orgs/langfuse/discussions/2571", - "created_at": "2024-07-08T15:17:52Z", + "number": 3410, + "title": "Configuring Evaluation with \"Correctness\" Template & Python Code Invocation", + "href": "https://github.com/orgs/langfuse/discussions/3410", + "created_at": "2024-09-19T09:44:42Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [], - "author": { - "login": "josiahbryan", - "html_url": "https://github.com/josiahbryan" - }, - "category": "Ideas" - }, - { - "number": 2539, - "title": "Include request's `tools` configuration in OpenAI LLM calls", - "href": "https://github.com/orgs/langfuse/discussions/2539", - "created_at": "2024-07-04T11:39:43Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, + "comment_count": 3, + "resolved": true, "labels": [ - "integration-openai" + "feat-scores" ], "author": { - "login": "ricwo", - "html_url": "https://github.com/ricwo" + "login": "zoulou00", + "html_url": "https://github.com/zoulou00" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2534, - "title": "Simple graphs and metrics for scores and evaluations", - "href": "https://github.com/orgs/langfuse/discussions/2534", - "created_at": "2024-07-03T17:14:42Z", - "upvotes": 2, + "number": 3406, + "title": "Module not found: Can't resolve '@langfuse'", + "href": "https://github.com/orgs/langfuse/discussions/3406", + "created_at": "2024-09-19T05:57:04Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [], + "resolved": true, + "labels": [ + "self-hosting" + ], "author": { - "login": "justinwiley", - "html_url": "https://github.com/justinwiley" + "login": "christosuster", + "html_url": "https://github.com/christosuster" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2529, - "title": "feat: Track Exceptions while using Decorators", - "href": "https://github.com/orgs/langfuse/discussions/2529", - "created_at": "2024-07-03T11:40:19Z", + "number": 3397, + "title": "tokens and usage cost", + "href": "https://github.com/orgs/langfuse/discussions/3397", + "created_at": "2024-09-18T13:05:07Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "integration-python-decorator" + "feat-cost-tracking" ], "author": { - "login": "Manonandan", - "html_url": "https://github.com/Manonandan" + "login": "Karanaiinfox", + "html_url": "https://github.com/Karanaiinfox" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2523, - "title": "Feature Request: Sidebar Display for Trace Details in Dataset Runs", - "href": "https://github.com/orgs/langfuse/discussions/2523", - "created_at": "2024-07-02T15:00:47Z", - "upvotes": 1, - "comment_count": 3, - "resolved": false, + "number": 3393, + "title": "Self-Host evaluation feature", + "href": "https://github.com/orgs/langfuse/discussions/3393", + "created_at": "2024-09-18T07:55:30Z", + "upvotes": 2, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-datasets" + "feat-evals" ], "author": { - "login": "tuan3w", - "html_url": "https://github.com/tuan3w" + "login": "MayankBitcot", + "html_url": "https://github.com/MayankBitcot" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2511, - "title": "Scoring dataset runs, e.g. precision, recall, f-value", - "href": "https://github.com/orgs/langfuse/discussions/2511", - "created_at": "2024-07-02T08:10:21Z", - "upvotes": 6, - "comment_count": 1, + "number": 3392, + "title": "not able to track entire request end to end in langchain + langfuse", + "href": "https://github.com/orgs/langfuse/discussions/3392", + "created_at": "2024-09-18T07:08:49Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, "labels": [ - "feat-datasets" + "integration-langchain" ], "author": { - "login": "yusuke-intern", - "html_url": "https://github.com/yusuke-intern" + "login": "jaiswalvineet", + "html_url": "https://github.com/jaiswalvineet" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2510, - "title": "How can we see traces of MULTIMODAL llms over langfuse ?", - "href": "https://github.com/orgs/langfuse/discussions/2510", - "created_at": "2024-07-02T05:15:59Z", - "upvotes": 4, + "number": 3379, + "title": "Feedback for “Langfuse Documentation”", + "href": "https://github.com/orgs/langfuse/discussions/3379", + "created_at": "2024-09-17T07:44:56Z", + "upvotes": 1, "comment_count": 3, "resolved": false, - "labels": [ - "✅ Done", - "feat-multimodal" - ], + "labels": [], "author": { - "login": "Aaryaveerkrishna23", - "html_url": "https://github.com/Aaryaveerkrishna23" + "login": "Preet1234-ux", + "html_url": "https://github.com/Preet1234-ux" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2509, - "title": "Support OpenTelemetry-based instrumentation (traceloop openllmetry and others)", - "href": "https://github.com/orgs/langfuse/discussions/2509", - "created_at": "2024-07-02T02:29:14Z", - "upvotes": 5, - "comment_count": 6, - "resolved": false, + "number": 3364, + "title": "Hey want to change the Eval Templates name, can we do it from UI", + "href": "https://github.com/orgs/langfuse/discussions/3364", + "created_at": "2024-09-16T08:07:30Z", + "upvotes": 1, + "comment_count": 3, + "resolved": true, "labels": [ - "integrations" + "feat-evals" ], "author": { - "login": "gyliu513", - "html_url": "https://github.com/gyliu513" + "login": "divyanshubhuta", + "html_url": "https://github.com/divyanshubhuta" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2508, - "title": "Enable Langfuse can expose metrics in Prometheus format", - "href": "https://github.com/orgs/langfuse/discussions/2508", - "created_at": "2024-07-02T02:25:24Z", - "upvotes": 6, - "comment_count": 1, + "number": 3344, + "title": "How to use langfuse with LangGraph Studio", + "href": "https://github.com/orgs/langfuse/discussions/3344", + "created_at": "2024-09-13T11:35:53Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, - "labels": [], + "labels": [ + "integration-langchain" + ], "author": { - "login": "gyliu513", - "html_url": "https://github.com/gyliu513" + "login": "debkanchan", + "html_url": "https://github.com/debkanchan" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2501, - "title": "Use Langchain LCEL + Langserve + run time user_id/session_id", - "href": "https://github.com/orgs/langfuse/discussions/2501", - "created_at": "2024-07-01T15:51:47Z", - "upvotes": 4, + "number": 3321, + "title": "Session ids for Langserve", + "href": "https://github.com/orgs/langfuse/discussions/3321", + "created_at": "2024-09-11T22:40:01Z", + "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ "integration-langchain", - "feat-users", "feat-sessions" ], "author": { - "login": "ravediamond", - "html_url": "https://github.com/ravediamond" + "login": "YaphetKG", + "html_url": "https://github.com/YaphetKG" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2493, - "title": "Easy token price estimates for 400+ LLMs", - "href": "https://github.com/orgs/langfuse/discussions/2493", - "created_at": "2024-07-01T06:55:56Z", + "number": 3313, + "title": "how to pass custom user managed model name to calculate the cost via langchain", + "href": "https://github.com/orgs/langfuse/discussions/3313", + "created_at": "2024-09-11T13:25:48Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, + "comment_count": 3, + "resolved": true, "labels": [ + "integration-langchain", "feat-cost-tracking" ], "author": { - "login": "derevyan", - "html_url": "https://github.com/derevyan" + "login": "jaiswalvineet", + "html_url": "https://github.com/jaiswalvineet" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2488, - "title": "Add contextmanager support to python decorator", - "href": "https://github.com/orgs/langfuse/discussions/2488", - "created_at": "2024-06-29T20:43:50Z", - "upvotes": 4, - "comment_count": 2, - "resolved": false, + "number": 3308, + "title": "Automated Prompt Management across Environments", + "href": "https://github.com/orgs/langfuse/discussions/3308", + "created_at": "2024-09-11T09:31:26Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "integration-python-decorator" + "feat-prompt-management" ], "author": { - "login": "yaniv-aknin", - "html_url": "https://github.com/yaniv-aknin" + "login": "jonnyforsterMSG", + "html_url": "https://github.com/jonnyforsterMSG" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2469, - "title": "Adding userId / author to score (custom metadata)", - "href": "https://github.com/orgs/langfuse/discussions/2469", - "created_at": "2024-06-27T19:02:17Z", - "upvotes": 3, - "comment_count": 2, - "resolved": false, + "number": 3307, + "title": "DataSet Scores are not being displayed", + "href": "https://github.com/orgs/langfuse/discussions/3307", + "created_at": "2024-09-11T08:46:31Z", + "upvotes": 1, + "comment_count": 3, + "resolved": true, "labels": [ - "feat-scores", - "feat-users" + "feat-datasets" ], "author": { - "login": "ivanviragine", - "html_url": "https://github.com/ivanviragine" + "login": "MaxYaz", + "html_url": "https://github.com/MaxYaz" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2456, - "title": "Export to CSV feature in the Traces", - "href": "https://github.com/orgs/langfuse/discussions/2456", - "created_at": "2024-06-27T11:02:47Z", + "number": 3305, + "title": "bug: cost usage are not getting captured automatically from llm response", + "href": "https://github.com/orgs/langfuse/discussions/3305", + "created_at": "2024-09-11T05:02:03Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "Aniket3007", - "html_url": "https://github.com/Aniket3007" + "login": "ajeet6261", + "html_url": "https://github.com/ajeet6261" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2454, - "title": "Expand all json-views of Dataset items etc.", - "href": "https://github.com/orgs/langfuse/discussions/2454", - "created_at": "2024-06-27T08:18:23Z", + "number": 3271, + "title": "Understanding pricing model (self-hosting vs cloud serving) from security perspective", + "href": "https://github.com/orgs/langfuse/discussions/3271", + "created_at": "2024-09-09T14:07:32Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, - "labels": [ - "✅ Done", - "feat-datasets" - ], + "labels": [], "author": { - "login": "tkreuder", - "html_url": "https://github.com/tkreuder" + "login": "uahmad235", + "html_url": "https://github.com/uahmad235" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2438, - "title": "Bedrock provider when using llamaindex", - "href": "https://github.com/orgs/langfuse/discussions/2438", - "created_at": "2024-06-26T11:00:54Z", + "number": 3267, + "title": "python decorator grouping in trace when using FastAPI Server Sent Events and Langraph + custom function", + "href": "https://github.com/orgs/langfuse/discussions/3267", + "created_at": "2024-09-09T11:10:00Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 4, "resolved": false, "labels": [ - "integraton-llamaindex", - "integration-amazon-bedrock" + "integration-langchain", + "integration-python-decorator" ], "author": { - "login": "mdciri", - "html_url": "https://github.com/mdciri" + "login": "lixxvsky", + "html_url": "https://github.com/lixxvsky" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2437, - "title": "Project members management via public API", - "href": "https://github.com/orgs/langfuse/discussions/2437", - "created_at": "2024-06-26T10:03:50Z", - "upvotes": 3, + "number": 3254, + "title": "Vercel AI SDK and Svelte. How to push traces intermittently back to langfuse", + "href": "https://github.com/orgs/langfuse/discussions/3254", + "created_at": "2024-09-06T13:37:17Z", + "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ - "feat-rbac" + "integration-vercel-ai-sdk" ], "author": { - "login": "tmarenko", - "html_url": "https://github.com/tmarenko" + "login": "oghaAI", + "html_url": "https://github.com/oghaAI" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2402, - "title": "Add string data type in score config", - "href": "https://github.com/orgs/langfuse/discussions/2402", - "created_at": "2024-06-24T11:12:54Z", + "number": 3210, + "title": "When using callbacks, the langfuse_context.update_current_trace method does not function properly.", + "href": "https://github.com/orgs/langfuse/discussions/3210", + "created_at": "2024-09-03T10:29:29Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 4, "resolved": false, - "labels": [ - "feat-scores" - ], + "labels": [], "author": { - "login": "emfhal", - "html_url": "https://github.com/emfhal" + "login": "hgliyuhao", + "html_url": "https://github.com/hgliyuhao" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2400, - "title": "Support for Custom Base URL Prefix in Langfuse (nextjs basepath)", - "href": "https://github.com/orgs/langfuse/discussions/2400", - "created_at": "2024-06-24T09:57:57Z", - "upvotes": 20, - "comment_count": 9, - "resolved": false, - "labels": [ - "✅ Done", - "self-hosting" - ], + "number": 3207, + "title": "change of data region", + "href": "https://github.com/orgs/langfuse/discussions/3207", + "created_at": "2024-09-03T06:06:48Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, + "labels": [], "author": { - "login": "databill86", - "html_url": "https://github.com/databill86" + "login": "divyanshubhuta", + "html_url": "https://github.com/divyanshubhuta" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2397, - "title": "Add ARM64 docker image", - "href": "https://github.com/orgs/langfuse/discussions/2397", - "created_at": "2024-06-21T13:35:24Z", + "number": 3191, + "title": "Evaluation config setup related query", + "href": "https://github.com/orgs/langfuse/discussions/3191", + "created_at": "2024-09-02T14:48:01Z", "upvotes": 1, "comment_count": 2, "resolved": false, - "labels": [ - "✅ Done", - "self-hosting" - ], + "labels": [], "author": { - "login": "lucasiscovici", - "html_url": "https://github.com/lucasiscovici" + "login": "divyanshubhuta", + "html_url": "https://github.com/divyanshubhuta" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2390, - "title": "Implement Duplication Check for Prompt Versions in Langfuse", - "href": "https://github.com/orgs/langfuse/discussions/2390", - "created_at": "2024-06-21T08:03:39Z", + "number": 3182, + "title": "What does `version` means when ingesting trace?", + "href": "https://github.com/orgs/langfuse/discussions/3182", + "created_at": "2024-08-31T20:44:26Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [ - "feat-prompt-management" - ], + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "sapipoZZZ", - "html_url": "https://github.com/sapipoZZZ" + "login": "STRRL", + "html_url": "https://github.com/STRRL" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2378, - "title": "Number of times a prompt was fetched", - "href": "https://github.com/orgs/langfuse/discussions/2378", - "created_at": "2024-06-20T07:37:12Z", - "upvotes": 3, - "comment_count": 0, - "resolved": false, - "labels": [ - "feat-prompt-management" - ], + "number": 3176, + "title": "Get all the generations, events, etc. under Trace", + "href": "https://github.com/orgs/langfuse/discussions/3176", + "created_at": "2024-08-31T02:10:28Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, + "labels": [], "author": { - "login": "subhampasari", - "html_url": "https://github.com/subhampasari" + "login": "bytecod3r", + "html_url": "https://github.com/bytecod3r" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2376, - "title": "Allow for custom OAuth scopes when self-hosing", - "href": "https://github.com/orgs/langfuse/discussions/2376", - "created_at": "2024-06-19T22:23:59Z", + "number": 3168, + "title": "usage pattern for new llamaindex integration", + "href": "https://github.com/orgs/langfuse/discussions/3168", + "created_at": "2024-08-30T20:23:17Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-auth" + "integraton-llamaindex" ], "author": { - "login": "0x77dev", - "html_url": "https://github.com/0x77dev" + "login": "erik-squared", + "html_url": "https://github.com/erik-squared" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2371, - "title": "SBS Markdown mode for dataset runs", - "href": "https://github.com/orgs/langfuse/discussions/2371", - "created_at": "2024-06-19T14:57:32Z", + "number": 3132, + "title": "Tracing ChatGoogleGenerativeAI calls in langchain doesn't return usage metadata", + "href": "https://github.com/orgs/langfuse/discussions/3132", + "created_at": "2024-08-29T13:09:13Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ - "feat-datasets" + "integration-langchain" ], "author": { - "login": "pfurovYnP", - "html_url": "https://github.com/pfurovYnP" + "login": "NeerajG03", + "html_url": "https://github.com/NeerajG03" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2358, - "title": "Add view mode to Settings", - "href": "https://github.com/orgs/langfuse/discussions/2358", - "created_at": "2024-06-17T12:48:04Z", + "number": 3124, + "title": "Generation does not come under @observe trace", + "href": "https://github.com/orgs/langfuse/discussions/3124", + "created_at": "2024-08-29T00:28:14Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "emfhal", - "html_url": "https://github.com/emfhal" + "login": "SatheeshJM", + "html_url": "https://github.com/SatheeshJM" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2352, - "title": "Support SAML login protocol", - "href": "https://github.com/orgs/langfuse/discussions/2352", - "created_at": "2024-06-17T07:14:14Z", - "upvotes": 3, - "comment_count": 1, + "number": 3120, + "title": "Langfuse 2.74.0 integration with Flowise 2.0.5", + "href": "https://github.com/orgs/langfuse/discussions/3120", + "created_at": "2024-08-28T20:18:19Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, - "labels": [ - "self-hosting" - ], + "labels": [], "author": { - "login": "emfhal", - "html_url": "https://github.com/emfhal" + "login": "harshad-c1", + "html_url": "https://github.com/harshad-c1" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2343, - "title": "Bring Langfuse to Cloud Marketplaces", - "href": "https://github.com/orgs/langfuse/discussions/2343", - "created_at": "2024-06-14T06:41:18Z", - "upvotes": 2, + "number": 3110, + "title": "How to set SMTP_CONNECTION_URL and reset password?", + "href": "https://github.com/orgs/langfuse/discussions/3110", + "created_at": "2024-08-28T10:05:06Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, + "resolved": true, + "labels": [], + "author": { + "login": "zs856", + "html_url": "https://github.com/zs856" + }, + "category": "Support" + }, + { + "number": 3105, + "title": "Dockerfile of langfuse/langfuse:2 image", + "href": "https://github.com/orgs/langfuse/discussions/3105", + "created_at": "2024-08-28T00:13:57Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ "self-hosting" ], "author": { - "login": "aiakubovich", - "html_url": "https://github.com/aiakubovich" + "login": "pparreira", + "html_url": "https://github.com/pparreira" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2336, - "title": "Saving a filter", - "href": "https://github.com/orgs/langfuse/discussions/2336", - "created_at": "2024-06-13T09:15:59Z", + "number": 3100, + "title": "Time to first token is not populating in trace detail or generations view", + "href": "https://github.com/orgs/langfuse/discussions/3100", + "created_at": "2024-08-27T20:12:14Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "avinash361-devrev", - "html_url": "https://github.com/avinash361-devrev" + "login": "databloom", + "html_url": "https://github.com/databloom" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2331, - "title": "Pendo integration", - "href": "https://github.com/orgs/langfuse/discussions/2331", - "created_at": "2024-06-12T18:22:32Z", + "number": 3099, + "title": "Pulling prompts by tag?", + "href": "https://github.com/orgs/langfuse/discussions/3099", + "created_at": "2024-08-27T20:01:45Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "mrunaaaaaal", - "html_url": "https://github.com/mrunaaaaaal" + "login": "mayajosifo", + "html_url": "https://github.com/mayajosifo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2282, - "title": "[Dashboard] Update Scores Chart to include number of scores on secondary y axis", - "href": "https://github.com/orgs/langfuse/discussions/2282", - "created_at": "2024-06-10T08:41:41Z", + "number": 3092, + "title": "Deployment into Azure", + "href": "https://github.com/orgs/langfuse/discussions/3092", + "created_at": "2024-08-27T10:05:32Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-dashboard" + "self-hosting" ], "author": { - "login": "charlieviettq", - "html_url": "https://github.com/charlieviettq" + "login": "GaryFail", + "html_url": "https://github.com/GaryFail" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2278, - "title": "Type of input and output of each span visible in the UI", - "href": "https://github.com/orgs/langfuse/discussions/2278", - "created_at": "2024-06-08T21:17:48Z", + "number": 3079, + "title": "How to change the Level to ERROR when there is an error in SPAN?", + "href": "https://github.com/orgs/langfuse/discussions/3079", + "created_at": "2024-08-26T15:46:23Z", "upvotes": 3, + "comment_count": 2, + "resolved": true, + "labels": [ + "feat-log-levels" + ], + "author": { + "login": "kftam1994", + "html_url": "https://github.com/kftam1994" + }, + "category": "Support" + }, + { + "number": 3056, + "title": "Support for configuring SMTP email at project level", + "href": "https://github.com/orgs/langfuse/discussions/3056", + "created_at": "2024-08-23T14:41:45Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "ui" + "self-hosting" ], "author": { - "login": "arthurGrigo", - "html_url": "https://github.com/arthurGrigo" + "login": "rvndbalaji", + "html_url": "https://github.com/rvndbalaji" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2268, - "title": "Langfuse retention settings", - "href": "https://github.com/orgs/langfuse/discussions/2268", - "created_at": "2024-06-07T12:27:32Z", - "upvotes": 6, - "comment_count": 6, + "number": 3003, + "title": "Example GenAI bot with guardrails", + "href": "https://github.com/orgs/langfuse/discussions/3003", + "created_at": "2024-08-22T06:37:29Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "sudhanshu746", - "html_url": "https://github.com/sudhanshu746" + "login": "wangxj03", + "html_url": "https://github.com/wangxj03" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2241, - "title": "Tracing integration with unify.ai", - "href": "https://github.com/orgs/langfuse/discussions/2241", - "created_at": "2024-06-05T15:17:00Z", - "upvotes": 5, - "comment_count": 3, - "resolved": false, + "number": 2990, + "title": "[Question] using langfuse with llama_index", + "href": "https://github.com/orgs/langfuse/discussions/2990", + "created_at": "2024-08-21T08:00:59Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "integrations" + "integraton-llamaindex" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "nightosong", + "html_url": "https://github.com/nightosong" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2237, - "title": "Add Langchain Support to Prompt Management", - "href": "https://github.com/orgs/langfuse/discussions/2237", - "created_at": "2024-06-05T10:05:13Z", - "upvotes": 32, - "comment_count": 5, - "resolved": false, + "number": 2988, + "title": "Non-langchain generation nested within LangGraph execution", + "href": "https://github.com/orgs/langfuse/discussions/2988", + "created_at": "2024-08-21T05:13:51Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-prompt-management", - "integration-langchain", - "✅ Done" + "integration-langchain" ], "author": { - "login": "guidev", - "html_url": "https://github.com/guidev" + "login": "mrdrprofuroboros", + "html_url": "https://github.com/mrdrprofuroboros" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2226, - "title": "Monitoring Costs and Traces generated by RAGAS", - "href": "https://github.com/orgs/langfuse/discussions/2226", - "created_at": "2024-06-04T09:35:25Z", - "upvotes": 4, + "number": 2983, + "title": "Tracing directly to queue instead of http api", + "href": "https://github.com/orgs/langfuse/discussions/2983", + "created_at": "2024-08-20T14:33:17Z", + "upvotes": 0, "comment_count": 1, - "resolved": false, - "labels": [], + "resolved": true, + "labels": [ + "self-hosting" + ], "author": { - "login": "paolotamag", - "html_url": "https://github.com/paolotamag" + "login": "exotikh3", + "html_url": "https://github.com/exotikh3" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2215, - "title": "new chart in dashboard for booleans metrics", - "href": "https://github.com/orgs/langfuse/discussions/2215", - "created_at": "2024-06-03T12:48:37Z", + "number": 3901, + "title": "How to resolve memory leak when integrating Langfuse with LangChain", + "href": "https://github.com/orgs/langfuse/discussions/3901", + "created_at": "2024-08-20T03:14:45Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [], + "comment_count": 6, + "resolved": true, + "labels": [ + "integration-langchain" + ], "author": { - "login": "paolotamag", - "html_url": "https://github.com/paolotamag" + "login": "ivan-94", + "html_url": "https://github.com/ivan-94" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2210, - "title": "MessagesPlaceholder in \"Create New Prompt\" panel", - "href": "https://github.com/orgs/langfuse/discussions/2210", - "created_at": "2024-06-03T06:58:45Z", - "upvotes": 6, + "number": 2959, + "title": "Duplicate usage data in observation api endpoint response", + "href": "https://github.com/orgs/langfuse/discussions/2959", + "created_at": "2024-08-16T10:57:00Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, - "labels": [ - "feat-prompt-management" - ], + "resolved": true, + "labels": [], "author": { - "login": "NIKsun", - "html_url": "https://github.com/NIKsun" + "login": "jonnyforsterMSG", + "html_url": "https://github.com/jonnyforsterMSG" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2209, - "title": "Enhance data in daily metrics api endpoint", - "href": "https://github.com/orgs/langfuse/discussions/2209", - "created_at": "2024-06-02T14:38:15Z", + "number": 2958, + "title": "Time to first token query", + "href": "https://github.com/orgs/langfuse/discussions/2958", + "created_at": "2024-08-16T10:08:42Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, - "labels": [ - "✅ Done", - "feat-api" - ], + "labels": [], "author": { - "login": "matthiaslau", - "html_url": "https://github.com/matthiaslau" + "login": "GaryFail", + "html_url": "https://github.com/GaryFail" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2203, - "title": "Feature request: Ability to add comments to versions of prompts", - "href": "https://github.com/orgs/langfuse/discussions/2203", - "created_at": "2024-06-01T13:13:27Z", - "upvotes": 2, - "comment_count": 3, + "number": 2952, + "title": "Locally hosted PrivateGPT + pgpt_python + Langfuse", + "href": "https://github.com/orgs/langfuse/discussions/2952", + "created_at": "2024-08-15T15:12:16Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [ - "feat-prompt-management" - ], + "labels": [], "author": { - "login": "ajram23", - "html_url": "https://github.com/ajram23" + "login": "qdingle404", + "html_url": "https://github.com/qdingle404" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2195, - "title": "Timeline/graph visualization for traces", - "href": "https://github.com/orgs/langfuse/discussions/2195", - "created_at": "2024-05-31T08:18:11Z", - "upvotes": 7, - "comment_count": 4, - "resolved": false, - "labels": [ - "✅ Done" - ], + "number": 2945, + "title": "Unit of token count for cost analysis", + "href": "https://github.com/orgs/langfuse/discussions/2945", + "created_at": "2024-08-15T09:33:59Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, + "labels": [], "author": { - "login": "david1542", - "html_url": "https://github.com/david1542" + "login": "thomasjv799", + "html_url": "https://github.com/thomasjv799" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2194, - "title": "Terraform Provider for internal Langfuse configuration", - "href": "https://github.com/orgs/langfuse/discussions/2194", - "created_at": "2024-05-31T06:23:11Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, + "number": 2933, + "title": "how to return trace_id in openai completion response when using langfuse as a proxy in litellm?", + "href": "https://github.com/orgs/langfuse/discussions/2933", + "created_at": "2024-08-14T07:52:30Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "self-hosting" + "integration-litellm" ], "author": { - "login": "mroedder-d7", - "html_url": "https://github.com/mroedder-d7" + "login": "octadion", + "html_url": "https://github.com/octadion" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2184, - "title": "support query prompt via prompt id", - "href": "https://github.com/orgs/langfuse/discussions/2184", - "created_at": "2024-05-30T02:55:59Z", + "number": 2927, + "title": "Span created with Langchain not showing up in traces.", + "href": "https://github.com/orgs/langfuse/discussions/2927", + "created_at": "2024-08-13T20:32:35Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [], + "comment_count": 2, + "resolved": true, + "labels": [ + "integration-langchain" + ], "author": { - "login": "hu9029", - "html_url": "https://github.com/hu9029" + "login": "HardKothari", + "html_url": "https://github.com/HardKothari" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2181, - "title": "Support for SDK entry-point wrapper around async REST API client", - "href": "https://github.com/orgs/langfuse/discussions/2181", - "created_at": "2024-05-29T17:50:22Z", + "number": 2909, + "title": "Change port database in file docker-compose.yml", + "href": "https://github.com/orgs/langfuse/discussions/2909", + "created_at": "2024-08-13T08:05:37Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, - "labels": [], - "author": { - "login": "blazing-gig", - "html_url": "https://github.com/blazing-gig" - }, - "category": "Ideas" - }, - { - "number": 2176, - "title": "Support querying Users (GET) to support analytics pipeline solutions", - "href": "https://github.com/orgs/langfuse/discussions/2176", - "created_at": "2024-05-29T02:42:13Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-users" + "self-hosting" ], "author": { - "login": "Tjmstudios", - "html_url": "https://github.com/Tjmstudios" + "login": "hungvipqt15", + "html_url": "https://github.com/hungvipqt15" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2161, - "title": "Prompt version only create when different", - "href": "https://github.com/orgs/langfuse/discussions/2161", - "created_at": "2024-05-27T23:47:21Z", - "upvotes": 4, - "comment_count": 2, + "number": 2907, + "title": "Change port connection in docker compose", + "href": "https://github.com/orgs/langfuse/discussions/2907", + "created_at": "2024-08-13T06:40:30Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, "labels": [ - "feat-prompt-management" + "self-hosting" ], "author": { - "login": "brightsparc", - "html_url": "https://github.com/brightsparc" + "login": "hungvipqt15", + "html_url": "https://github.com/hungvipqt15" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2140, - "title": "clickhouse support", - "href": "https://github.com/orgs/langfuse/discussions/2140", - "created_at": "2024-05-24T15:21:14Z", + "number": 2904, + "title": "How to append current trace when calling function second time?", + "href": "https://github.com/orgs/langfuse/discussions/2904", + "created_at": "2024-08-12T15:12:22Z", "upvotes": 2, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "work-in-progress", - "performance" + "integration-python-decorator" ], "author": { - "login": "newcworld", - "html_url": "https://github.com/newcworld" + "login": "nathan-vo810", + "html_url": "https://github.com/nathan-vo810" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2131, - "title": "Export to data warehouses (BigQuery etc)", - "href": "https://github.com/orgs/langfuse/discussions/2131", - "created_at": "2024-05-23T15:52:18Z", - "upvotes": 18, + "number": 2895, + "title": "How to update an event", + "href": "https://github.com/orgs/langfuse/discussions/2895", + "created_at": "2024-08-11T16:51:18Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "rohan-mehta", - "html_url": "https://github.com/rohan-mehta" + "login": "bytecod3r", + "html_url": "https://github.com/bytecod3r" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2124, - "title": "Proposal: Add Support for Uploading Dataset Items via UI", - "href": "https://github.com/orgs/langfuse/discussions/2124", - "created_at": "2024-05-22T10:58:04Z", - "upvotes": 5, - "comment_count": 1, - "resolved": false, + "number": 2888, + "title": "How to change the level of a trace?", + "href": "https://github.com/orgs/langfuse/discussions/2888", + "created_at": "2024-08-09T14:35:34Z", + "upvotes": 3, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-datasets" + "feat-log-levels" ], "author": { - "login": "vaddenz", - "html_url": "https://github.com/vaddenz" + "login": "ldbolanos", + "html_url": "https://github.com/ldbolanos" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2119, - "title": "Phidata support", - "href": "https://github.com/orgs/langfuse/discussions/2119", - "created_at": "2024-05-21T14:20:09Z", + "number": 2879, + "title": "ERROR:langfuse:status_code: 404, body: {'message': 'Trace not found within authorized project', 'error': 'LangfuseNotFoundError'}", + "href": "https://github.com/orgs/langfuse/discussions/2879", + "created_at": "2024-08-09T09:31:33Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 3, "resolved": false, - "labels": [ - "integrations" - ], + "labels": [], "author": { - "login": "michaelpoluektov", - "html_url": "https://github.com/michaelpoluektov" + "login": "nithin1995", + "html_url": "https://github.com/nithin1995" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2104, - "title": "Feature Request: Tracing Sampling Rate Configuration for Langfuse", - "href": "https://github.com/orgs/langfuse/discussions/2104", - "created_at": "2024-05-20T16:23:05Z", - "upvotes": 2, - "comment_count": 1, + "number": 2874, + "title": "Does langfuse trace parallel api calls? I tried a sample with parallel call but it didn't traced.", + "href": "https://github.com/orgs/langfuse/discussions/2874", + "created_at": "2024-08-09T05:09:26Z", + "upvotes": 1, + "comment_count": 4, "resolved": false, - "labels": [ - "✅ Done" - ], + "labels": [], "author": { - "login": "himansrivastava", - "html_url": "https://github.com/himansrivastava" + "login": "ksundarraj-c-rpx", + "html_url": "https://github.com/ksundarraj-c-rpx" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2101, - "title": "feat: Adding AWS Cognito Authentication", - "href": "https://github.com/orgs/langfuse/discussions/2101", - "created_at": "2024-05-20T14:30:32Z", + "number": 2871, + "title": "Self-hosted Langfuse running as a Google cloud service not showing traces", + "href": "https://github.com/orgs/langfuse/discussions/2871", + "created_at": "2024-08-08T13:40:34Z", "upvotes": 1, "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [ - "✅ Done", - "feat-auth" + "🐞❔ unconfirmed bug" ], "author": { - "login": "Shekswess", - "html_url": "https://github.com/Shekswess" + "login": "SectumPsempra", + "html_url": "https://github.com/SectumPsempra" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2097, - "title": "Markdown Rendering Option", - "href": "https://github.com/orgs/langfuse/discussions/2097", - "created_at": "2024-05-18T16:58:37Z", - "upvotes": 4, - "comment_count": 4, + "number": 2867, + "title": "Using the API to record traces from multiple platforms?", + "href": "https://github.com/orgs/langfuse/discussions/2867", + "created_at": "2024-08-08T13:15:49Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [ - "✅ Done" - ], + "labels": [], "author": { - "login": "hburrichter", - "html_url": "https://github.com/hburrichter" + "login": "appliraz", + "html_url": "https://github.com/appliraz" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2081, - "title": "feat: inject langfuse info into langchain metadata", - "href": "https://github.com/orgs/langfuse/discussions/2081", - "created_at": "2024-05-16T20:43:41Z", + "number": 2858, + "title": "Langfuse observeOpenAI not logging generations using new zodResponseFormat.", + "href": "https://github.com/orgs/langfuse/discussions/2858", + "created_at": "2024-08-07T21:45:41Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, - "labels": [ - "integration-langchain" - ], + "comment_count": 3, + "resolved": true, + "labels": [], "author": { - "login": "benobytes", - "html_url": "https://github.com/benobytes" + "login": "fabstu", + "html_url": "https://github.com/fabstu" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2072, - "title": "Adding prompt tags via Python SDK (or other code based interactions)", - "href": "https://github.com/orgs/langfuse/discussions/2072", - "created_at": "2024-05-16T09:46:20Z", - "upvotes": 5, + "number": 2852, + "title": "How run Langfuse evaluations over specifics spans?", + "href": "https://github.com/orgs/langfuse/discussions/2852", + "created_at": "2024-08-07T13:40:02Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, - "labels": [], + "resolved": true, + "labels": [ + "integration-langchain", + "feat-evals" + ], "author": { - "login": "simon-hiel", - "html_url": "https://github.com/simon-hiel" + "login": "joaoCrulhas", + "html_url": "https://github.com/joaoCrulhas" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2071, - "title": "Save playground conversation to a dataset", - "href": "https://github.com/orgs/langfuse/discussions/2071", - "created_at": "2024-05-16T09:24:29Z", + "number": 2844, + "title": "LangFuse not logging LlamaIndex events", + "href": "https://github.com/orgs/langfuse/discussions/2844", + "created_at": "2024-08-07T10:46:19Z", "upvotes": 2, - "comment_count": 0, + "comment_count": 3, "resolved": false, "labels": [ - "feat-datasets", - "feat-playground" + "integraton-llamaindex" ], "author": { - "login": "bderenzi", - "html_url": "https://github.com/bderenzi" + "login": "adieyal", + "html_url": "https://github.com/adieyal" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2065, - "title": "Support multiple prompts attached to a generation.", - "href": "https://github.com/orgs/langfuse/discussions/2065", - "created_at": "2024-05-15T22:16:35Z", - "upvotes": 3, + "number": 2830, + "title": "UpdateRoot in the callback handler seems not work", + "href": "https://github.com/orgs/langfuse/discussions/2830", + "created_at": "2024-08-06T08:58:25Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "jansenderr", - "html_url": "https://github.com/jansenderr" + "login": "joaoCrulhas", + "html_url": "https://github.com/joaoCrulhas" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2064, - "title": "Show explicit error when viewing a project that doesn't exist", - "href": "https://github.com/orgs/langfuse/discussions/2064", - "created_at": "2024-05-15T16:49:32Z", + "number": 2828, + "title": "Issue: Integration of Langfuse with DSPy Framework - Zero Values for Cost and Token Usage", + "href": "https://github.com/orgs/langfuse/discussions/2828", + "created_at": "2024-08-06T05:55:30Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, - "labels": [], - "author": { - "login": "backmask", - "html_url": "https://github.com/backmask" - }, - "category": "Ideas" - }, - { - "number": 2045, - "title": "Requesting official support OpenAI's new gpt-4o model", - "href": "https://github.com/orgs/langfuse/discussions/2045", - "created_at": "2024-05-13T21:37:38Z", - "upvotes": 3, - "comment_count": 5, - "resolved": false, - "labels": [ - "integration-openai", - "✅ Done", - "feat-cost-tracking" - ], - "author": { - "login": "varenc", - "html_url": "https://github.com/varenc" - }, - "category": "Ideas" - }, - { - "number": 2043, - "title": "Support instrumentation through openllmetry", - "href": "https://github.com/orgs/langfuse/discussions/2043", - "created_at": "2024-05-13T19:27:59Z", - "upvotes": 8, - "comment_count": 1, - "resolved": false, + "comment_count": 3, + "resolved": true, "labels": [ - "integrations" + "integration-dspy" ], "author": { - "login": "baggiponte", - "html_url": "https://github.com/baggiponte" + "login": "mahitha-29", + "html_url": "https://github.com/mahitha-29" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2039, - "title": "Introduce the concept of \"sub-prompt\" to improve prompt reusability", - "href": "https://github.com/orgs/langfuse/discussions/2039", - "created_at": "2024-05-13T10:14:44Z", - "upvotes": 3, + "number": 2817, + "title": "Praise for the Langfuse library! 🚀", + "href": "https://github.com/orgs/langfuse/discussions/2817", + "created_at": "2024-08-03T10:53:41Z", + "upvotes": 2, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "khaelys", - "html_url": "https://github.com/khaelys" + "login": "ttamg", + "html_url": "https://github.com/ttamg" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2030, - "title": "Add number of 'successful request' to traces list view", - "href": "https://github.com/orgs/langfuse/discussions/2030", - "created_at": "2024-05-09T23:25:27Z", + "number": 2809, + "title": "No space left on device db error", + "href": "https://github.com/orgs/langfuse/discussions/2809", + "created_at": "2024-08-01T15:10:52Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [], + "comment_count": 2, + "resolved": true, + "labels": [ + "self-hosting" + ], "author": { - "login": "arthurGrigo", - "html_url": "https://github.com/arthurGrigo" + "login": "nithin1995", + "html_url": "https://github.com/nithin1995" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2021, - "title": "Ask for a import/export on prompt management page", - "href": "https://github.com/orgs/langfuse/discussions/2021", - "created_at": "2024-05-09T03:17:50Z", + "number": 2808, + "title": "Dynamic prompt generation", + "href": "https://github.com/orgs/langfuse/discussions/2808", + "created_at": "2024-08-01T14:41:48Z", "upvotes": 1, "comment_count": 2, - "resolved": false, - "labels": [], + "resolved": true, + "labels": [ + "feat-prompt-management" + ], "author": { - "login": "ShaunDeng", - "html_url": "https://github.com/ShaunDeng" + "login": "LLazzar", + "html_url": "https://github.com/LLazzar" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2006, - "title": "Gitlab Auth Provider", - "href": "https://github.com/orgs/langfuse/discussions/2006", - "created_at": "2024-05-08T10:12:51Z", + "number": 2801, + "title": "Unable to update generation span after LLM invocation", + "href": "https://github.com/orgs/langfuse/discussions/2801", + "created_at": "2024-08-01T03:23:15Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [], + "comment_count": 2, + "resolved": true, + "labels": [ + "integration-langchain" + ], "author": { - "login": "jsirex", - "html_url": "https://github.com/jsirex" + "login": "Heucles", + "html_url": "https://github.com/Heucles" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1990, - "title": "Add batch actions to traces", - "href": "https://github.com/orgs/langfuse/discussions/1990", - "created_at": "2024-05-07T09:37:42Z", - "upvotes": 3, - "comment_count": 0, + "number": 2787, + "title": "Self-hosted (Railway) Authorization error (401) while connecting to host", + "href": "https://github.com/orgs/langfuse/discussions/2787", + "created_at": "2024-07-30T19:23:59Z", + "upvotes": 1, + "comment_count": 3, "resolved": false, "labels": [], "author": { - "login": "nimbusaeta", - "html_url": "https://github.com/nimbusaeta" + "login": "vishnumallela", + "html_url": "https://github.com/vishnumallela" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1988, - "title": "Upload datasets via UI", - "href": "https://github.com/orgs/langfuse/discussions/1988", - "created_at": "2024-05-06T20:25:20Z", - "upvotes": 8, - "comment_count": 1, - "resolved": false, + "number": 2769, + "title": "Continue trace on Celery worker with observe decorator", + "href": "https://github.com/orgs/langfuse/discussions/2769", + "created_at": "2024-07-27T18:23:13Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-datasets" + "integration-python-decorator" ], "author": { - "login": "assafweinberg", - "html_url": "https://github.com/assafweinberg" + "login": "artefactop", + "html_url": "https://github.com/artefactop" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1987, - "title": "API/UI to delete dataset items and runs", - "href": "https://github.com/orgs/langfuse/discussions/1987", - "created_at": "2024-05-06T17:13:16Z", - "upvotes": 20, + "number": 2768, + "title": "How do i register the token count and cost for observe decorator", + "href": "https://github.com/orgs/langfuse/discussions/2768", + "created_at": "2024-07-27T14:47:58Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [ - "feat-datasets" + "integration-python-decorator", + "feat-cost-tracking" ], "author": { - "login": "tomek82", - "html_url": "https://github.com/tomek82" + "login": "yevkim", + "html_url": "https://github.com/yevkim" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1963, - "title": "Is it possible integrate Langfuse with Microsoft Copilot Studio?", - "href": "https://github.com/orgs/langfuse/discussions/1963", - "created_at": "2024-05-03T03:33:22Z", + "number": 2767, + "title": "Missing evaluation metrics", + "href": "https://github.com/orgs/langfuse/discussions/2767", + "created_at": "2024-07-27T05:07:56Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "aiakubovich", - "html_url": "https://github.com/aiakubovich" + "login": "MayankBitcot", + "html_url": "https://github.com/MayankBitcot" }, - "category": "Ideas" + "category": "Support" }, { - "number": 2055, - "title": "Openai: Support IO capture when streaming function / tool call", - "href": "https://github.com/orgs/langfuse/discussions/2055", - "created_at": "2024-05-01T15:25:15Z", - "upvotes": 10, - "comment_count": 7, + "number": 2736, + "title": "Ability to upload Cost and Usage metrics in Langfuse for Gemini Models from LlamaIndex", + "href": "https://github.com/orgs/langfuse/discussions/2736", + "created_at": "2024-07-25T06:17:14Z", + "upvotes": 2, + "comment_count": 1, "resolved": false, "labels": [ - "sdk-python", - "integration-openai", - "✅ Done" + "integraton-llamaindex", + "feat-cost-tracking" ], "author": { - "login": "DanrForetellix", - "html_url": "https://github.com/DanrForetellix" + "login": "ansu86d", + "html_url": "https://github.com/ansu86d" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1941, - "title": "Looking into allowing more customization of the table", - "href": "https://github.com/orgs/langfuse/discussions/1941", - "created_at": "2024-05-01T14:47:32Z", + "number": 2735, + "title": "Deployment on K8s", + "href": "https://github.com/orgs/langfuse/discussions/2735", + "created_at": "2024-07-25T04:38:19Z", "upvotes": 1, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "Mohamed-Ayaan358", - "html_url": "https://github.com/Mohamed-Ayaan358" + "login": "nithin1995", + "html_url": "https://github.com/nithin1995" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1916, - "title": "Langchain integration Improvements", - "href": "https://github.com/orgs/langfuse/discussions/1916", - "created_at": "2024-04-30T13:23:19Z", + "number": 2718, + "title": "How to ignore inputs when using LangChain?", + "href": "https://github.com/orgs/langfuse/discussions/2718", + "created_at": "2024-07-23T10:58:07Z", "upvotes": 2, - "comment_count": 2, + "comment_count": 3, "resolved": false, "labels": [ - "integration-langchain", - "✅ Done" + "integration-langchain" ], "author": { - "login": "ajram23", - "html_url": "https://github.com/ajram23" + "login": "justingodden", + "html_url": "https://github.com/justingodden" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1904, - "title": "Retrieve prompts based on versioning rather than times for caching", - "href": "https://github.com/orgs/langfuse/discussions/1904", - "created_at": "2024-04-29T14:04:27Z", + "number": 2716, + "title": "Langgraph with langfuse", + "href": "https://github.com/orgs/langfuse/discussions/2716", + "created_at": "2024-07-23T09:12:20Z", "upvotes": 1, - "comment_count": 2, - "resolved": false, + "comment_count": 4, + "resolved": true, "labels": [ - "feat-prompt-management" + "integration-langchain" ], "author": { - "login": "ajram23", - "html_url": "https://github.com/ajram23" + "login": "MayankBitcot", + "html_url": "https://github.com/MayankBitcot" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1896, - "title": "Delete Session", - "href": "https://github.com/orgs/langfuse/discussions/1896", - "created_at": "2024-04-29T08:01:05Z", - "upvotes": 7, - "comment_count": 0, - "resolved": false, - "labels": [ - "feat-sessions" - ], + "number": 2714, + "title": "Using langfuse without saving promps", + "href": "https://github.com/orgs/langfuse/discussions/2714", + "created_at": "2024-07-23T08:44:44Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "rohan-gt", - "html_url": "https://github.com/rohan-gt" + "login": "molntamas", + "html_url": "https://github.com/molntamas" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1895, - "title": "linking prompts with tracing in langchain integration", - "href": "https://github.com/orgs/langfuse/discussions/1895", - "created_at": "2024-04-28T13:13:08Z", - "upvotes": 10, - "comment_count": 3, + "number": 2712, + "title": "cannot execute INSERT in a read-only transaction", + "href": "https://github.com/orgs/langfuse/discussions/2712", + "created_at": "2024-07-23T07:49:30Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, "labels": [ - "feat-prompt-management", - "integration-langchain", - "✅ Done" + "self-hosting" ], "author": { - "login": "SatheeshJM", - "html_url": "https://github.com/SatheeshJM" + "login": "damianradowiecki", + "html_url": "https://github.com/damianradowiecki" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1867, - "title": "Add integration with evaluation frameworks", - "href": "https://github.com/orgs/langfuse/discussions/1867", - "created_at": "2024-04-25T23:09:03Z", - "upvotes": 1, + "number": 2706, + "title": "Disable tracing of input and output for nested elements with in a chain.", + "href": "https://github.com/orgs/langfuse/discussions/2706", + "created_at": "2024-07-22T16:17:53Z", + "upvotes": 2, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "johnnydevriese", - "html_url": "https://github.com/johnnydevriese" + "login": "jaitd", + "html_url": "https://github.com/jaitd" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1862, - "title": "Support Linking Execution Trace to DatasetItem without Fetching Entire Dataset", - "href": "https://github.com/orgs/langfuse/discussions/1862", - "created_at": "2024-04-25T18:57:08Z", + "number": 2705, + "title": "Support for adding traces/observations/sessions/events/spans/generations related logging to LF via API", + "href": "https://github.com/orgs/langfuse/discussions/2705", + "created_at": "2024-07-22T12:57:05Z", "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [ - "feat-datasets" - ], + "resolved": true, + "labels": [], "author": { - "login": "sfarthin", - "html_url": "https://github.com/sfarthin" + "login": "ashutoshsaboo", + "html_url": "https://github.com/ashutoshsaboo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1858, - "title": "Platform User roles to allow or disable project creation", - "href": "https://github.com/orgs/langfuse/discussions/1858", - "created_at": "2024-04-25T16:00:12Z", + "number": 2671, + "title": "Cannot connect prompt to trace when using Langchain AzureChatOpenai", + "href": "https://github.com/orgs/langfuse/discussions/2671", + "created_at": "2024-07-18T13:30:14Z", "upvotes": 1, "comment_count": 2, "resolved": false, + "labels": [], + "author": { + "login": "nihadazimli", + "html_url": "https://github.com/nihadazimli" + }, + "category": "Support" + }, + { + "number": 2658, + "title": "how to customize trace id when using callback handler in langchain integration", + "href": "https://github.com/orgs/langfuse/discussions/2658", + "created_at": "2024-07-17T13:38:18Z", + "upvotes": 3, + "comment_count": 2, + "resolved": true, "labels": [ - "✅ Done", - "feat-rbac" + "integration-langchain" ], "author": { - "login": "JMcGenn", - "html_url": "https://github.com/JMcGenn" + "login": "shawnzhu", + "html_url": "https://github.com/shawnzhu" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1851, - "title": "[oauth] Keycloak provider support", - "href": "https://github.com/orgs/langfuse/discussions/1851", - "created_at": "2024-04-25T12:39:26Z", - "upvotes": 7, + "number": 2640, + "title": "Adding Scores to langfuse with dify", + "href": "https://github.com/orgs/langfuse/discussions/2640", + "created_at": "2024-07-16T16:00:11Z", + "upvotes": 2, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "self-hosting" + "integration-dify" ], "author": { - "login": "9teen90nine", - "html_url": "https://github.com/9teen90nine" + "login": "shaquelsamir", + "html_url": "https://github.com/shaquelsamir" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1843, - "title": "Support GigaChat model from LangChain", - "href": "https://github.com/orgs/langfuse/discussions/1843", - "created_at": "2024-04-25T09:24:07Z", + "number": 2619, + "title": "How to add a function to current trace instead of seperate since it's outside lcel chain?", + "href": "https://github.com/orgs/langfuse/discussions/2619", + "created_at": "2024-07-12T07:08:47Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, + "comment_count": 1, + "resolved": true, "labels": [ "integration-langchain" ], "author": { - "login": "Rai220", - "html_url": "https://github.com/Rai220" + "login": "sarim2000", + "html_url": "https://github.com/sarim2000" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1830, - "title": "Decorator should also be able to return JSON or Dictionary object", - "href": "https://github.com/orgs/langfuse/discussions/1830", - "created_at": "2024-04-24T09:41:39Z", + "number": 2616, + "title": "Weird Output for scores when using fetch_traces()", + "href": "https://github.com/orgs/langfuse/discussions/2616", + "created_at": "2024-07-11T12:46:23Z", "upvotes": 1, "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "nathan-vo810", - "html_url": "https://github.com/nathan-vo810" + "login": "kevinpkaria", + "html_url": "https://github.com/kevinpkaria" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1826, - "title": "Having a session_with_user client", - "href": "https://github.com/orgs/langfuse/discussions/1826", - "created_at": "2024-04-24T08:31:05Z", - "upvotes": 1, - "comment_count": 0, + "number": 2600, + "title": "Add input Price and Output price for gemini-1.5-pro and gemini-1.5-flash in Models", + "href": "https://github.com/orgs/langfuse/discussions/2600", + "created_at": "2024-07-10T09:52:23Z", + "upvotes": 4, + "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "rtzy7", - "html_url": "https://github.com/rtzy7" + "login": "fjeanchar", + "html_url": "https://github.com/fjeanchar" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1823, - "title": "Change `/api/chatCompletion` to be a standard OpenAI proxy on `/api/v1/chat/completions`?", - "href": "https://github.com/orgs/langfuse/discussions/1823", - "created_at": "2024-04-23T19:48:34Z", + "number": 2599, + "title": "Overall projects dashboard?", + "href": "https://github.com/orgs/langfuse/discussions/2599", + "created_at": "2024-07-10T09:09:02Z", "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [], + "resolved": true, + "labels": [ + "feat-dashboard" + ], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "justingodden", + "html_url": "https://github.com/justingodden" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1820, - "title": "Auth using Microsoft Entra ID", - "href": "https://github.com/orgs/langfuse/discussions/1820", - "created_at": "2024-04-23T18:32:42Z", + "number": 2597, + "title": "[Errno 111] Connection refused when connecting to langfuse within docker compose", + "href": "https://github.com/orgs/langfuse/discussions/2597", + "created_at": "2024-07-10T09:00:34Z", "upvotes": 1, - "comment_count": 2, - "resolved": false, + "comment_count": 1, + "resolved": true, "labels": [ - "✅ Done", "self-hosting" ], "author": { - "login": "Stadly", - "html_url": "https://github.com/Stadly" + "login": "bspetrov", + "html_url": "https://github.com/bspetrov" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1816, - "title": "Add a metrics endpoint for Prometheus", - "href": "https://github.com/orgs/langfuse/discussions/1816", - "created_at": "2024-04-23T14:33:38Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, - "labels": [], + "number": 2595, + "title": "Migrate a local deployment of langfuse from one computer to another", + "href": "https://github.com/orgs/langfuse/discussions/2595", + "created_at": "2024-07-10T07:46:04Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, + "labels": [ + "self-hosting" + ], "author": { - "login": "nolwennz", - "html_url": "https://github.com/nolwennz" + "login": "nithin1995", + "html_url": "https://github.com/nithin1995" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1813, - "title": "Provide an integration with Matomo Analytics so as for Posthog", - "href": "https://github.com/orgs/langfuse/discussions/1813", - "created_at": "2024-04-23T12:24:41Z", - "upvotes": 12, - "comment_count": 4, + "number": 2590, + "title": "Experiments running but inputs and outputs of LLM are not linked to dashboard", + "href": "https://github.com/orgs/langfuse/discussions/2590", + "created_at": "2024-07-09T18:29:22Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [ - "integrations" - ], + "labels": [], "author": { - "login": "Chardonneaur", - "html_url": "https://github.com/Chardonneaur" + "login": "IbrahimAhmed03", + "html_url": "https://github.com/IbrahimAhmed03" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1800, - "title": "Add command r/command r plus via Azure Marketplace", - "href": "https://github.com/orgs/langfuse/discussions/1800", - "created_at": "2024-04-22T16:11:38Z", + "number": 2574, + "title": "how to embed langfuse dashboard in other tool", + "href": "https://github.com/orgs/langfuse/discussions/2574", + "created_at": "2024-07-08T21:24:13Z", "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "bug", - "integration-langchain" + "feat-dashboard" ], "author": { - "login": "jayfk", - "html_url": "https://github.com/jayfk" + "login": "deepakdeore2004", + "html_url": "https://github.com/deepakdeore2004" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1794, - "title": "User-level dashboard", - "href": "https://github.com/orgs/langfuse/discussions/1794", - "created_at": "2024-04-22T01:56:15Z", + "number": 2567, + "title": "How to use prompt management with openai JS?", + "href": "https://github.com/orgs/langfuse/discussions/2567", + "created_at": "2024-07-08T08:22:49Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, "labels": [ - "feat-users" + "feat-prompt-management" ], "author": { - "login": "secsilm", - "html_url": "https://github.com/secsilm" + "login": "oscarmorrison", + "html_url": "https://github.com/oscarmorrison" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1793, - "title": "Request chart of min/avg/max input/output tokens", - "href": "https://github.com/orgs/langfuse/discussions/1793", - "created_at": "2024-04-21T13:33:39Z", - "upvotes": 2, - "comment_count": 1, + "number": 2564, + "title": "Update metadata when using OpenAI JS Integration", + "href": "https://github.com/orgs/langfuse/discussions/2564", + "created_at": "2024-07-08T07:37:38Z", + "upvotes": 1, + "comment_count": 3, "resolved": false, "labels": [], "author": { - "login": "secsilm", - "html_url": "https://github.com/secsilm" - }, - "category": "Ideas" + "login": "oscarmorrison", + "html_url": "https://github.com/oscarmorrison" + }, + "category": "Support" }, { - "number": 1783, - "title": "Limit new user registration", - "href": "https://github.com/orgs/langfuse/discussions/1783", - "created_at": "2024-04-19T09:34:55Z", - "upvotes": 1, - "comment_count": 1, + "number": 2527, + "title": "Can't set trace params e.g session_id when using with llhama_index", + "href": "https://github.com/orgs/langfuse/discussions/2527", + "created_at": "2024-07-02T20:41:53Z", + "upvotes": 2, + "comment_count": 2, "resolved": false, "labels": [ - "self-hosting" + "integraton-llamaindex" ], "author": { - "login": "secsilm", - "html_url": "https://github.com/secsilm" - }, - "category": "Ideas" - }, - { - "number": 1781, - "title": "feature for python client:get traces by score", - "href": "https://github.com/orgs/langfuse/discussions/1781", - "created_at": "2024-04-19T09:12:48Z", - "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [], - "author": { - "login": "StarsSparkle", - "html_url": "https://github.com/StarsSparkle" + "login": "famoraes", + "html_url": "https://github.com/famoraes" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1780, - "title": "Log for Function Calling", - "href": "https://github.com/orgs/langfuse/discussions/1780", - "created_at": "2024-04-19T06:40:55Z", - "upvotes": 6, + "number": 2498, + "title": "Method to update prompt template for Langserve use case", + "href": "https://github.com/orgs/langfuse/discussions/2498", + "created_at": "2024-07-01T11:20:08Z", + "upvotes": 2, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "integration-openai" + "integration-langchain" ], "author": { - "login": "jaindees", - "html_url": "https://github.com/jaindees" + "login": "quadcube", + "html_url": "https://github.com/quadcube" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1776, - "title": "SSO: Cognito", - "href": "https://github.com/orgs/langfuse/discussions/1776", - "created_at": "2024-04-18T20:40:43Z", + "number": 2486, + "title": "Cost of embedding in langfuse", + "href": "https://github.com/orgs/langfuse/discussions/2486", + "created_at": "2024-06-29T07:50:06Z", "upvotes": 1, "comment_count": 2, - "resolved": false, - "labels": [ - "✅ Done", - "self-hosting" - ], + "resolved": true, + "labels": [], "author": { - "login": "theluk", - "html_url": "https://github.com/theluk" + "login": "Amitt1412", + "html_url": "https://github.com/Amitt1412" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1774, - "title": "PromptClient: Support mustache type export to langchain", - "href": "https://github.com/orgs/langfuse/discussions/1774", - "created_at": "2024-04-18T18:52:40Z", + "number": 2481, + "title": "Getting all traces logged in a timerange for custom scoring", + "href": "https://github.com/orgs/langfuse/discussions/2481", + "created_at": "2024-06-28T12:09:14Z", "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [], + "resolved": true, + "labels": [ + "feat-scores" + ], "author": { - "login": "maxjacu", - "html_url": "https://github.com/maxjacu" + "login": "sanandnarayan", + "html_url": "https://github.com/sanandnarayan" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1770, - "title": "New REST API endpoint to get all prompts", - "href": "https://github.com/orgs/langfuse/discussions/1770", - "created_at": "2024-04-18T02:40:14Z", + "number": 2479, + "title": "Cost of embedding", + "href": "https://github.com/orgs/langfuse/discussions/2479", + "created_at": "2024-06-28T06:58:16Z", "upvotes": 1, - "comment_count": 2, - "resolved": false, + "comment_count": 3, + "resolved": true, "labels": [], "author": { - "login": "zoltan-fedor", - "html_url": "https://github.com/zoltan-fedor" + "login": "Amitt1412", + "html_url": "https://github.com/Amitt1412" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1769, - "title": "Request chart of the generation speed of tokens (tokens/s)", - "href": "https://github.com/orgs/langfuse/discussions/1769", - "created_at": "2024-04-18T02:14:37Z", + "number": 2455, + "title": "Getting issue with local setup", + "href": "https://github.com/orgs/langfuse/discussions/2455", + "created_at": "2024-06-27T10:23:02Z", "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [], - "author": { - "login": "secsilm", - "html_url": "https://github.com/secsilm" - }, - "category": "Ideas" - }, - { - "number": 1760, - "title": "annotation of traces in langfuse console?", - "href": "https://github.com/orgs/langfuse/discussions/1760", - "created_at": "2024-04-17T17:51:47Z", - "upvotes": 3, - "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [ - "✅ Done", - "feat-annotation" + "self-hosting" ], "author": { - "login": "erik-squared", - "html_url": "https://github.com/erik-squared" + "login": "kiranraut7709", + "html_url": "https://github.com/kiranraut7709" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1755, - "title": "feat: Prompt API Search (by tags)", - "href": "https://github.com/orgs/langfuse/discussions/1755", - "created_at": "2024-04-17T09:37:50Z", - "upvotes": 2, - "comment_count": 2, + "number": 2447, + "title": "Access observation id in langchain runnable", + "href": "https://github.com/orgs/langfuse/discussions/2447", + "created_at": "2024-06-26T21:03:07Z", + "upvotes": 4, + "comment_count": 1, "resolved": false, "labels": [ - "✅ Done" + "integration-langchain" ], "author": { - "login": "bryan-agicap", - "html_url": "https://github.com/bryan-agicap" + "login": "snikch", + "html_url": "https://github.com/snikch" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1744, - "title": "Is it possible to support Dify?", - "href": "https://github.com/orgs/langfuse/discussions/1744", - "created_at": "2024-04-16T20:55:11Z", - "upvotes": 2, + "number": 2431, + "title": "Trying to work with llama3 in Azure using AzureMLChatOnlineEndpoint but no cost showing up", + "href": "https://github.com/orgs/langfuse/discussions/2431", + "created_at": "2024-06-25T21:20:25Z", + "upvotes": 1, "comment_count": 2, "resolved": false, - "labels": [ - "integrations", - "✅ Done", - "integration-dify" - ], + "labels": [], "author": { - "login": "jtsang4", - "html_url": "https://github.com/jtsang4" + "login": "spacepirate0001", + "html_url": "https://github.com/spacepirate0001" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1716, - "title": "feat: Add `TRACE_EVENTS` flag", - "href": "https://github.com/orgs/langfuse/discussions/1716", - "created_at": "2024-04-15T12:29:30Z", + "number": 2416, + "title": "some tests failed for langfuse-js", + "href": "https://github.com/orgs/langfuse/discussions/2416", + "created_at": "2024-06-25T04:31:35Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 3, "resolved": false, - "labels": [ - "✅ Done" - ], + "labels": [], "author": { - "login": "JorisAndrade", - "html_url": "https://github.com/JorisAndrade" + "login": "4t8dd", + "html_url": "https://github.com/4t8dd" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1715, - "title": "Add support for ZITADEL OIDC", - "href": "https://github.com/orgs/langfuse/discussions/1715", - "created_at": "2024-04-15T12:27:54Z", + "number": 2415, + "title": "AUTH AZURE AD returns AADSTS9002325: Proof Key for Code Exchange is required for cross-origin authorization code redemption.", + "href": "https://github.com/orgs/langfuse/discussions/2415", + "created_at": "2024-06-24T18:00:45Z", "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [ - "self-hosting" - ], + "resolved": true, + "labels": [], "author": { - "login": "bitfactory-sem-denbroeder", - "html_url": "https://github.com/bitfactory-sem-denbroeder" + "login": "spacepirate0001", + "html_url": "https://github.com/spacepirate0001" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1711, - "title": "Webhook to trigger CI/CD pipeline when new prompt version is created", - "href": "https://github.com/orgs/langfuse/discussions/1711", - "created_at": "2024-04-14T13:46:30Z", - "upvotes": 5, + "number": 2401, + "title": "Trying to understand why in Langfuse Trace under Stream Completion I get this output:", + "href": "https://github.com/orgs/langfuse/discussions/2401", + "created_at": "2024-06-21T12:22:38Z", + "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [ - "feat-prompt-management", - "feat-api" - ], + "labels": [], "author": { - "login": "tamdoEH", - "html_url": "https://github.com/tamdoEH" + "login": "howtodoml", + "html_url": "https://github.com/howtodoml" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1710, - "title": "Review feature for prompt deployment", - "href": "https://github.com/orgs/langfuse/discussions/1710", - "created_at": "2024-04-14T13:39:50Z", - "upvotes": 3, + "number": 2385, + "title": "Modify trace after getting response from OpenAI", + "href": "https://github.com/orgs/langfuse/discussions/2385", + "created_at": "2024-06-20T18:00:09Z", + "upvotes": 2, "comment_count": 3, "resolved": false, - "labels": [ - "feat-prompt-management" - ], + "labels": [], "author": { - "login": "tamdoEH", - "html_url": "https://github.com/tamdoEH" + "login": "tylerlittlefield", + "html_url": "https://github.com/tylerlittlefield" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1707, - "title": "API for custom model <> token usage pricing", - "href": "https://github.com/orgs/langfuse/discussions/1707", - "created_at": "2024-04-13T22:37:38Z", + "number": 2381, + "title": "LangFuse UI doesn't show all traces despite debug logging saying that all are sent to the server", + "href": "https://github.com/orgs/langfuse/discussions/2381", + "created_at": "2024-06-20T14:02:12Z", "upvotes": 3, - "comment_count": 2, + "comment_count": 1, "resolved": false, + "labels": [], + "author": { + "login": "stokedout", + "html_url": "https://github.com/stokedout" + }, + "category": "Support" + }, + { + "number": 2379, + "title": "Langfuse was not able to parse the LLM model", + "href": "https://github.com/orgs/langfuse/discussions/2379", + "created_at": "2024-06-20T08:56:57Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "✅ Done", - "feat-api" + "integration-langchain", + "integration-amazon-bedrock" ], "author": { - "login": "rydamckinney", - "html_url": "https://github.com/rydamckinney" + "login": "fdbvega", + "html_url": "https://github.com/fdbvega" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1696, - "title": "Export & import for prompts, copy between projects", - "href": "https://github.com/orgs/langfuse/discussions/1696", - "created_at": "2024-04-12T20:28:47Z", - "upvotes": 9, - "comment_count": 5, - "resolved": false, + "number": 2377, + "title": "Can't see any traces or logs when running Langfuse locally.", + "href": "https://github.com/orgs/langfuse/discussions/2377", + "created_at": "2024-06-19T23:51:46Z", + "upvotes": 1, + "comment_count": 6, + "resolved": true, "labels": [ - "feat-prompt-management" + "self-hosting" ], "author": { - "login": "zoltan-fedor", - "html_url": "https://github.com/zoltan-fedor" + "login": "ibdafna", + "html_url": "https://github.com/ibdafna" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1692, - "title": "Read-only prompt keys?", - "href": "https://github.com/orgs/langfuse/discussions/1692", - "created_at": "2024-04-12T00:57:44Z", - "upvotes": 2, - "comment_count": 2, + "number": 2373, + "title": "Not recording llamaindex response. Please help", + "href": "https://github.com/orgs/langfuse/discussions/2373", + "created_at": "2024-06-19T19:26:30Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "integraton-llamaindex" + ], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "mraguth", + "html_url": "https://github.com/mraguth" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1671, - "title": "Ability to run langfuse in tests automatically without manual involvement", - "href": "https://github.com/orgs/langfuse/discussions/1671", - "created_at": "2024-04-11T05:29:44Z", + "number": 2366, + "title": "Add label to prompt from Langfuse UI", + "href": "https://github.com/orgs/langfuse/discussions/2366", + "created_at": "2024-06-18T14:26:14Z", "upvotes": 1, - "comment_count": 2, - "resolved": false, + "comment_count": 1, + "resolved": true, "labels": [ - "✅ Done", - "self-hosting" + "feat-prompt-management" ], "author": { - "login": "SinghCoder", - "html_url": "https://github.com/SinghCoder" + "login": "charlieviettq", + "html_url": "https://github.com/charlieviettq" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1664, - "title": "\"Task\" and \"Bot\" core abstractions", - "href": "https://github.com/orgs/langfuse/discussions/1664", - "created_at": "2024-04-10T20:24:53Z", + "number": 2354, + "title": "Link Prompt & Trace with langchain CallbackHandler", + "href": "https://github.com/orgs/langfuse/discussions/2354", + "created_at": "2024-06-17T08:21:56Z", "upvotes": 2, - "comment_count": 1, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "sfarthin", - "html_url": "https://github.com/sfarthin" + "login": "derevyan", + "html_url": "https://github.com/derevyan" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1660, - "title": "Prompt Composability", - "href": "https://github.com/orgs/langfuse/discussions/1660", - "created_at": "2024-04-10T15:25:05Z", - "upvotes": 7, - "comment_count": 5, - "resolved": false, + "number": 2353, + "title": "[Migration] Auto-migration DB error when upgrade langfuse version", + "href": "https://github.com/orgs/langfuse/discussions/2353", + "created_at": "2024-06-17T08:02:03Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "feat-prompt-management" + "self-hosting" ], "author": { - "login": "meissnereric", - "html_url": "https://github.com/meissnereric" + "login": "charlieviettq", + "html_url": "https://github.com/charlieviettq" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1633, - "title": "feat: Function Calling Under OpenAI Format", - "href": "https://github.com/orgs/langfuse/discussions/1633", - "created_at": "2024-04-09T08:49:58Z", - "upvotes": 2, - "comment_count": 1, + "number": 2351, + "title": "Customize Langchain callback handler to add spans to existing traces created by separate thread/process", + "href": "https://github.com/orgs/langfuse/discussions/2351", + "created_at": "2024-06-17T03:41:57Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, "labels": [ - "feat-playground" + "integration-langchain" ], "author": { - "login": "anhphong22", - "html_url": "https://github.com/anhphong22" + "login": "Chengdyc", + "html_url": "https://github.com/Chengdyc" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1630, - "title": "Groq - Mixtral", - "href": "https://github.com/orgs/langfuse/discussions/1630", - "created_at": "2024-04-09T05:11:12Z", + "number": 2348, + "title": "not serializable object of type: LangfuseResponseGeneratorSync", + "href": "https://github.com/orgs/langfuse/discussions/2348", + "created_at": "2024-06-14T22:33:09Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "mike4lyf", - "html_url": "https://github.com/mike4lyf" + "login": "howtodoml", + "html_url": "https://github.com/howtodoml" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1627, - "title": "VertexAI support", - "href": "https://github.com/orgs/langfuse/discussions/1627", - "created_at": "2024-04-08T22:43:38Z", - "upvotes": 2, + "number": 2346, + "title": "Chain two prompts", + "href": "https://github.com/orgs/langfuse/discussions/2346", + "created_at": "2024-06-14T08:20:48Z", + "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ + "feat-prompt-management", "integration-langchain" ], "author": { - "login": "eles13", - "html_url": "https://github.com/eles13" + "login": "darkostanimirovic", + "html_url": "https://github.com/darkostanimirovic" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1613, - "title": "[Feature] Add a score value filter", - "href": "https://github.com/orgs/langfuse/discussions/1613", - "created_at": "2024-04-08T07:58:58Z", + "number": 2344, + "title": "Can you use internal Kubernetes DNS to receive traffic from other Kubernetes workloads?", + "href": "https://github.com/orgs/langfuse/discussions/2344", + "created_at": "2024-06-14T08:15:36Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, + "comment_count": 1, + "resolved": true, "labels": [], "author": { - "login": "Hacky-DH", - "html_url": "https://github.com/Hacky-DH" + "login": "smeasures", + "html_url": "https://github.com/smeasures" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1612, - "title": "DSPY integration", - "href": "https://github.com/orgs/langfuse/discussions/1612", - "created_at": "2024-04-07T18:54:32Z", + "number": 2342, + "title": "Getting trace id out of a langchain runnable", + "href": "https://github.com/orgs/langfuse/discussions/2342", + "created_at": "2024-06-14T01:15:26Z", "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "wdhitchc", - "html_url": "https://github.com/wdhitchc" + "login": "salmanmashayekh", + "html_url": "https://github.com/salmanmashayekh" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1566, - "title": "LangchainCallbackHandler httpx_client not accessible", - "href": "https://github.com/orgs/langfuse/discussions/1566", - "created_at": "2024-04-03T09:18:12Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, - "labels": [ - "integration-langchain" - ], - "author": { - "login": "dlmatt", - "html_url": "https://github.com/dlmatt" - }, - "category": "Ideas" - }, - { - "number": 1541, - "title": "Disable events logging", - "href": "https://github.com/orgs/langfuse/discussions/1541", - "created_at": "2024-03-29T18:08:13Z", - "upvotes": 8, - "comment_count": 3, + "number": 2338, + "title": "Can RBAC Role Assignment be done using Azure AD SSO token?", + "href": "https://github.com/orgs/langfuse/discussions/2338", + "created_at": "2024-06-13T11:29:59Z", + "upvotes": 4, + "comment_count": 2, "resolved": false, "labels": [ - "✅ Done" + "feat-rbac", + "self-hosting" ], "author": { - "login": "omgovich", - "html_url": "https://github.com/omgovich" + "login": "joshwright10", + "html_url": "https://github.com/joshwright10" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1535, - "title": "Request for Integration of Mistral Models into Langfuse", - "href": "https://github.com/orgs/langfuse/discussions/1535", - "created_at": "2024-03-28T16:10:25Z", - "upvotes": 5, - "comment_count": 2, + "number": 2298, + "title": "llamaindex: function_call does not generate subspans for a custom AsyncBaseTool class", + "href": "https://github.com/orgs/langfuse/discussions/2298", + "created_at": "2024-06-11T09:28:33Z", + "upvotes": 1, + "comment_count": 3, "resolved": false, "labels": [ - "integrations", - "✅ Done" + "integraton-llamaindex" ], "author": { - "login": "Zherdev1996", - "html_url": "https://github.com/Zherdev1996" + "login": "ootkin", + "html_url": "https://github.com/ootkin" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1533, - "title": "Managing Embeddings", - "href": "https://github.com/orgs/langfuse/discussions/1533", - "created_at": "2024-03-28T15:36:21Z", + "number": 2290, + "title": "There are no evaluation component in the 2.50 version", + "href": "https://github.com/orgs/langfuse/discussions/2290", + "created_at": "2024-06-10T19:36:30Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, + "comment_count": 1, + "resolved": true, "labels": [], "author": { - "login": "Botman-Hotman", - "html_url": "https://github.com/Botman-Hotman" + "login": "yanlinchn", + "html_url": "https://github.com/yanlinchn" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1513, - "title": "Langfuse Trace with OpenAI Assistants", - "href": "https://github.com/orgs/langfuse/discussions/1513", - "created_at": "2024-03-27T11:47:19Z", - "upvotes": 9, - "comment_count": 4, - "resolved": false, + "number": 2254, + "title": "Unable to get hello world program working due to incorrect public key / host", + "href": "https://github.com/orgs/langfuse/discussions/2254", + "created_at": "2024-06-06T09:13:53Z", + "upvotes": 3, + "comment_count": 1, + "resolved": true, "labels": [ - "integration-openai" + "self-hosting" ], "author": { - "login": "marco-introvigne", - "html_url": "https://github.com/marco-introvigne" + "login": "mr-nano", + "html_url": "https://github.com/mr-nano" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1500, - "title": "Comment column can have any name the user chooses, there could be multiple comment columns per metric", - "href": "https://github.com/orgs/langfuse/discussions/1500", - "created_at": "2024-03-26T08:42:45Z", + "number": 2244, + "title": "2 traces generated instead of 1", + "href": "https://github.com/orgs/langfuse/discussions/2244", + "created_at": "2024-06-05T17:06:52Z", "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [], + "resolved": true, + "labels": [ + "integration-langchain", + "feat-datasets" + ], "author": { - "login": "emailic", - "html_url": "https://github.com/emailic" + "login": "nithin1995", + "html_url": "https://github.com/nithin1995" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1488, - "title": "Make Langfuse switchable", - "href": "https://github.com/orgs/langfuse/discussions/1488", - "created_at": "2024-03-25T21:05:17Z", - "upvotes": 2, + "number": 2211, + "title": "How to clean the langfuse cache data periodically?", + "href": "https://github.com/orgs/langfuse/discussions/2211", + "created_at": "2024-06-03T07:40:22Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "MrMojoR", - "html_url": "https://github.com/MrMojoR" + "login": "He-Huang", + "html_url": "https://github.com/He-Huang" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1479, - "title": "Add total filtered Generations to UI", - "href": "https://github.com/orgs/langfuse/discussions/1479", - "created_at": "2024-03-24T17:19:51Z", + "number": 2207, + "title": "Model Cost does not show up", + "href": "https://github.com/orgs/langfuse/discussions/2207", + "created_at": "2024-06-02T11:08:58Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, - "labels": [], + "comment_count": 1, + "resolved": true, + "labels": [ + "feat-cost-tracking" + ], "author": { - "login": "PhiBrandon", - "html_url": "https://github.com/PhiBrandon" + "login": "jannikstdl", + "html_url": "https://github.com/jannikstdl" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1461, - "title": "Loose prisma datasource db provider.", - "href": "https://github.com/orgs/langfuse/discussions/1461", - "created_at": "2024-03-21T13:09:15Z", + "number": 2206, + "title": "Possibilities for auth", + "href": "https://github.com/orgs/langfuse/discussions/2206", + "created_at": "2024-06-01T23:38:39Z", "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ "self-hosting" ], "author": { - "login": "muazhari", - "html_url": "https://github.com/muazhari" + "login": "Getty", + "html_url": "https://github.com/Getty" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1460, - "title": "Langfuse images for arm64 (mac silicon, some cloud vms)", - "href": "https://github.com/orgs/langfuse/discussions/1460", - "created_at": "2024-03-21T05:48:56Z", - "upvotes": 1, - "comment_count": 1, + "number": 2200, + "title": "How does one replace values for a ChatPromptTemplate for Langchain", + "href": "https://github.com/orgs/langfuse/discussions/2200", + "created_at": "2024-05-31T19:39:14Z", + "upvotes": 0, + "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "verdverm", - "html_url": "https://github.com/verdverm" + "login": "ajram23", + "html_url": "https://github.com/ajram23" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1454, - "title": "Add a time based filter option", - "href": "https://github.com/orgs/langfuse/discussions/1454", - "created_at": "2024-03-20T16:06:15Z", - "upvotes": 4, - "comment_count": 2, + "number": 2188, + "title": "Time to first token?", + "href": "https://github.com/orgs/langfuse/discussions/2188", + "created_at": "2024-05-30T12:45:37Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [ - "✅ Done" - ], + "labels": [], "author": { - "login": "Kurumindla-Kranthivardhan", - "html_url": "https://github.com/Kurumindla-Kranthivardhan" + "login": "jrcapicua", + "html_url": "https://github.com/jrcapicua" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1431, - "title": "Integration with Langserve", - "href": "https://github.com/orgs/langfuse/discussions/1431", - "created_at": "2024-03-18T08:40:32Z", + "number": 2172, + "title": "How to reuse callback handler in langchain integration?", + "href": "https://github.com/orgs/langfuse/discussions/2172", + "created_at": "2024-05-28T15:25:39Z", "upvotes": 1, "comment_count": 2, "resolved": false, - "labels": [], + "labels": [ + "integration-langchain" + ], "author": { - "login": "Haxeebraja", - "html_url": "https://github.com/Haxeebraja" + "login": "SebastianStehle", + "html_url": "https://github.com/SebastianStehle" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1428, - "title": "allow to delete sessions", - "href": "https://github.com/orgs/langfuse/discussions/1428", - "created_at": "2024-03-16T15:56:35Z", - "upvotes": 4, - "comment_count": 2, + "number": 2165, + "title": "Auth0 not working", + "href": "https://github.com/orgs/langfuse/discussions/2165", + "created_at": "2024-05-28T11:38:43Z", + "upvotes": 2, + "comment_count": 3, "resolved": false, "labels": [ - "feat-sessions" + "self-hosting" ], "author": { - "login": "morganveyret", - "html_url": "https://github.com/morganveyret" + "login": "mforell", + "html_url": "https://github.com/mforell" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1427, - "title": "Toggle collection of traces on a per-trace basis", - "href": "https://github.com/orgs/langfuse/discussions/1427", - "created_at": "2024-03-16T15:19:07Z", - "upvotes": 1, + "number": 2162, + "title": "Connect Prompt ID to GENERATIONS when integrate Langfuse in LangChain.", + "href": "https://github.com/orgs/langfuse/discussions/2162", + "created_at": "2024-05-28T00:56:34Z", + "upvotes": 8, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "foragerr", - "html_url": "https://github.com/foragerr" + "login": "hdp173", + "html_url": "https://github.com/hdp173" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1415, - "title": "Add a \"correction\" field on the user feedback info", - "href": "https://github.com/orgs/langfuse/discussions/1415", - "created_at": "2024-03-14T14:18:30Z", - "upvotes": 3, + "number": 2154, + "title": "__root__ -> items -> 0 -> datasetName field required (type=value_error.missing)", + "href": "https://github.com/orgs/langfuse/discussions/2154", + "created_at": "2024-05-27T11:26:24Z", + "upvotes": 1, "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "almirb", - "html_url": "https://github.com/almirb" + "login": "emailic", + "html_url": "https://github.com/emailic" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1408, - "title": "Trace Latencies line chart please", - "href": "https://github.com/orgs/langfuse/discussions/1408", - "created_at": "2024-03-13T15:00:35Z", - "upvotes": 2, - "comment_count": 0, + "number": 2152, + "title": "get_langchain_handler() alwasy start from trace root.", + "href": "https://github.com/orgs/langfuse/discussions/2152", + "created_at": "2024-05-27T10:47:42Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "integration-langchain" + ], "author": { - "login": "Huarong", - "html_url": "https://github.com/Huarong" + "login": "hdp173", + "html_url": "https://github.com/hdp173" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1398, - "title": "What standardized dataset formats are people using?", - "href": "https://github.com/orgs/langfuse/discussions/1398", - "created_at": "2024-03-12T15:47:53Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, + "number": 2146, + "title": "Customize LangChain Integration.", + "href": "https://github.com/orgs/langfuse/discussions/2146", + "created_at": "2024-05-27T06:12:41Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "feat-datasets" + "integration-langchain" ], "author": { - "login": "norton120", - "html_url": "https://github.com/norton120" + "login": "hdp173", + "html_url": "https://github.com/hdp173" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1397, - "title": "Reorder columns in tables", - "href": "https://github.com/orgs/langfuse/discussions/1397", - "created_at": "2024-03-12T14:45:37Z", - "upvotes": 3, + "number": 2145, + "title": "Need help on syntax for editing project roles", + "href": "https://github.com/orgs/langfuse/discussions/2145", + "created_at": "2024-05-26T18:50:59Z", + "upvotes": 1, "comment_count": 2, "resolved": false, - "labels": [ - "✅ Done" - ], + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "hrithik062", + "html_url": "https://github.com/hrithik062" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1394, - "title": "Adding a \"Select all\" button to tables", - "href": "https://github.com/orgs/langfuse/discussions/1394", - "created_at": "2024-03-12T10:37:23Z", - "upvotes": 2, + "number": 2142, + "title": "Unable to login with SSO", + "href": "https://github.com/orgs/langfuse/discussions/2142", + "created_at": "2024-05-24T18:40:35Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "samyxdev", - "html_url": "https://github.com/samyxdev" + "login": "alecor191", + "html_url": "https://github.com/alecor191" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1392, - "title": "Hide prompts/completions (privacy)", - "href": "https://github.com/orgs/langfuse/discussions/1392", - "created_at": "2024-03-12T07:48:22Z", - "upvotes": 9, + "number": 2137, + "title": "Latency (Avg) showing 0 for dataset runs", + "href": "https://github.com/orgs/langfuse/discussions/2137", + "created_at": "2024-05-24T07:33:51Z", + "upvotes": 4, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "ziodave", - "html_url": "https://github.com/ziodave" + "login": "karthik-TLIT", + "html_url": "https://github.com/karthik-TLIT" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1391, - "title": "Enhancements for Langfuse User Sign-Up Control", - "href": "https://github.com/orgs/langfuse/discussions/1391", - "created_at": "2024-03-11T23:38:18Z", - "upvotes": 6, - "comment_count": 0, - "resolved": false, + "number": 2130, + "title": "Evaluations Not Available in Self-Hosted Version?", + "href": "https://github.com/orgs/langfuse/discussions/2130", + "created_at": "2024-05-23T14:31:16Z", + "upvotes": 3, + "comment_count": 1, + "resolved": true, "labels": [ - "self-hosting" + "feat-evals" ], "author": { - "login": "udit-001", - "html_url": "https://github.com/udit-001" + "login": "c0pper", + "html_url": "https://github.com/c0pper" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1385, - "title": "bug: Not allowing to limit Azure AD authentication for selected users in same tenent", - "href": "https://github.com/orgs/langfuse/discussions/1385", - "created_at": "2024-03-11T17:42:05Z", - "upvotes": 2, - "comment_count": 2, - "resolved": false, + "number": 2114, + "title": "Careers link on HN is broken", + "href": "https://github.com/orgs/langfuse/discussions/2114", + "created_at": "2024-05-21T07:28:26Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, + "labels": [], + "author": { + "login": "davherrmann", + "html_url": "https://github.com/davherrmann" + }, + "category": "Support" + }, + { + "number": 2111, + "title": "Token cost is counted even if langchains LLM cache is utilized", + "href": "https://github.com/orgs/langfuse/discussions/2111", + "created_at": "2024-05-20T23:23:44Z", + "upvotes": 5, + "comment_count": 1, + "resolved": true, "labels": [ - "self-hosting" + "integration-langchain" ], "author": { - "login": "SathinduGA", - "html_url": "https://github.com/SathinduGA" + "login": "arthurGrigo", + "html_url": "https://github.com/arthurGrigo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1378, - "title": "Aggregate cost per span", - "href": "https://github.com/orgs/langfuse/discussions/1378", - "created_at": "2024-03-08T16:06:04Z", - "upvotes": 2, + "number": 2106, + "title": "Hability to store pre defined initial message", + "href": "https://github.com/orgs/langfuse/discussions/2106", + "created_at": "2024-05-20T20:40:23Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "ladislasdellinger", - "html_url": "https://github.com/ladislasdellinger" + "login": "Lunik", + "html_url": "https://github.com/Lunik" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1376, - "title": "Support parsing LLM model for ChatOllama", - "href": "https://github.com/orgs/langfuse/discussions/1376", - "created_at": "2024-03-08T14:13:58Z", + "number": 2099, + "title": "Deleting Duplicate Items in a Dataset", + "href": "https://github.com/orgs/langfuse/discussions/2099", + "created_at": "2024-05-20T09:48:58Z", "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [], + "resolved": true, + "labels": [ + "feat-datasets" + ], "author": { - "login": "kleebaum", - "html_url": "https://github.com/kleebaum" + "login": "emailic", + "html_url": "https://github.com/emailic" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1374, - "title": "Add LLamaIndexTS example", - "href": "https://github.com/orgs/langfuse/discussions/1374", - "created_at": "2024-03-08T00:42:30Z", - "upvotes": 1, + "number": 2098, + "title": "Wrong model for billing", + "href": "https://github.com/orgs/langfuse/discussions/2098", + "created_at": "2024-05-20T09:29:33Z", + "upvotes": 2, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "luandro", - "html_url": "https://github.com/luandro" + "login": "wdxwj", + "html_url": "https://github.com/wdxwj" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1361, - "title": "Add a retention window for unnecessary data", - "href": "https://github.com/orgs/langfuse/discussions/1361", - "created_at": "2024-03-07T14:42:07Z", + "number": 2077, + "title": "Error Encountered During Migration for Applying Newly Supported Models to Existing Data", + "href": "https://github.com/orgs/langfuse/discussions/2077", + "created_at": "2024-05-16T15:30:33Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "albertoforcato", - "html_url": "https://github.com/albertoforcato" + "login": "Zherdev1996", + "html_url": "https://github.com/Zherdev1996" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1337, - "title": "Support for Langchain ChatAnthropic", - "href": "https://github.com/orgs/langfuse/discussions/1337", - "created_at": "2024-03-06T10:42:36Z", - "upvotes": 2, - "comment_count": 1, - "resolved": false, + "number": 2073, + "title": "Will Playground be available for self-hosted?", + "href": "https://github.com/orgs/langfuse/discussions/2073", + "created_at": "2024-05-16T12:40:30Z", + "upvotes": 5, + "comment_count": 2, + "resolved": true, "labels": [ - "integration-langchain" + "feat-playground" ], "author": { - "login": "dotrunghieu96", - "html_url": "https://github.com/dotrunghieu96" + "login": "sabatesduran", + "html_url": "https://github.com/sabatesduran" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1331, - "title": "Adding cost to the datasets tables", - "href": "https://github.com/orgs/langfuse/discussions/1331", - "created_at": "2024-03-05T18:53:25Z", + "number": 2070, + "title": "Error on Local Deployment: \"Evals available in cloud only\" when Adding LLM API Key", + "href": "https://github.com/orgs/langfuse/discussions/2070", + "created_at": "2024-05-16T09:02:43Z", "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [ - "✅ Done" - ], + "labels": [], "author": { - "login": "ladislasdellinger", - "html_url": "https://github.com/ladislasdellinger" + "login": "youngsj951104", + "html_url": "https://github.com/youngsj951104" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1321, - "title": "More prompt environments/tags instead of just `active`", - "href": "https://github.com/orgs/langfuse/discussions/1321", - "created_at": "2024-03-05T11:05:17Z", - "upvotes": 3, - "comment_count": 2, - "resolved": false, - "labels": [ - "feat-prompt-management", - "✅ Done" - ], + "number": 2069, + "title": "Does langfuse uses any Postgres-only features?", + "href": "https://github.com/orgs/langfuse/discussions/2069", + "created_at": "2024-05-16T06:36:16Z", + "upvotes": 2, + "comment_count": 1, + "resolved": true, + "labels": [], "author": { - "login": "ladislasdellinger", - "html_url": "https://github.com/ladislasdellinger" + "login": "rohts-patil", + "html_url": "https://github.com/rohts-patil" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1309, - "title": "Log used prompt on generations when using Langchain", - "href": "https://github.com/orgs/langfuse/discussions/1309", - "created_at": "2024-03-04T09:03:35Z", - "upvotes": 5, - "comment_count": 2, + "number": 2063, + "title": "Exception(\"parent run not found\")", + "href": "https://github.com/orgs/langfuse/discussions/2063", + "created_at": "2024-05-15T14:45:00Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [ - "integration-langchain", - "✅ Done" - ], + "labels": [], "author": { - "login": "TobinShaw", - "html_url": "https://github.com/TobinShaw" + "login": "emailic", + "html_url": "https://github.com/emailic" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1306, - "title": "[TS] Generating through OpenAI SDK directly", - "href": "https://github.com/orgs/langfuse/discussions/1306", - "created_at": "2024-03-02T10:56:07Z", - "upvotes": 1, - "comment_count": 2, - "resolved": false, + "number": 2042, + "title": "Availability of evals when self-hosting", + "href": "https://github.com/orgs/langfuse/discussions/2042", + "created_at": "2024-05-13T14:06:11Z", + "upvotes": 2, + "comment_count": 1, + "resolved": true, "labels": [ - "integrations", - "integration-openai", - "✅ Done" + "feat-evals" ], "author": { - "login": "louis030195", - "html_url": "https://github.com/louis030195" + "login": "derevyan", + "html_url": "https://github.com/derevyan" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1305, - "title": "Allow Project-Specific Default Time Ranges", - "href": "https://github.com/orgs/langfuse/discussions/1305", - "created_at": "2024-03-02T03:42:42Z", + "number": 2031, + "title": "Starting a demo from JS SDK and local running Langfuse, but cannot create init trace currently", + "href": "https://github.com/orgs/langfuse/discussions/2031", + "created_at": "2024-05-10T08:49:40Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "dkindlund", - "html_url": "https://github.com/dkindlund" + "login": "JamieLee0510", + "html_url": "https://github.com/JamieLee0510" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1300, - "title": "Consider adding support for DSPy", - "href": "https://github.com/orgs/langfuse/discussions/1300", - "created_at": "2024-03-01T15:42:23Z", + "number": 2009, + "title": "Custom name of Span when using Langchain handler instead of RunnableSequence", + "href": "https://github.com/orgs/langfuse/discussions/2009", + "created_at": "2024-05-08T12:23:08Z", "upvotes": 1, - "comment_count": 2, - "resolved": false, - "labels": [], + "comment_count": 1, + "resolved": true, + "labels": [ + "integration-langchain" + ], "author": { - "login": "sutyum", - "html_url": "https://github.com/sutyum" + "login": "nathan-vo810", + "html_url": "https://github.com/nathan-vo810" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1295, - "title": "Support DSPy", - "href": "https://github.com/orgs/langfuse/discussions/1295", - "created_at": "2024-03-01T11:34:05Z", - "upvotes": 19, - "comment_count": 9, + "number": 2008, + "title": "Not able to add dataset item", + "href": "https://github.com/orgs/langfuse/discussions/2008", + "created_at": "2024-05-08T12:11:04Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [ - "integrations", - "✅ Done", - "integration-dspy" - ], + "labels": [], "author": { - "login": "sandangel", - "html_url": "https://github.com/sandangel" + "login": "nithin1995", + "html_url": "https://github.com/nithin1995" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1291, - "title": "Integration: LlamaIndex JS/TS", - "href": "https://github.com/orgs/langfuse/discussions/1291", - "created_at": "2024-02-29T11:56:42Z", - "upvotes": 31, - "comment_count": 3, + "number": 2007, + "title": "Langfuse in PHP. Which are the minimum functions needed to implement?", + "href": "https://github.com/orgs/langfuse/discussions/2007", + "created_at": "2024-05-08T10:55:07Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [ - "sdk-js", - "integrations", - "integraton-llamaindex" - ], + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "phpia", + "html_url": "https://github.com/phpia" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1287, - "title": "Add filtering by errors", - "href": "https://github.com/orgs/langfuse/discussions/1287", - "created_at": "2024-02-28T22:52:59Z", - "upvotes": 3, + "number": 2005, + "title": "How to get trace data with langfuse-langchain in JS/TS?", + "href": "https://github.com/orgs/langfuse/discussions/2005", + "created_at": "2024-05-08T08:08:42Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [ - "ui" + "integration-langchain" ], "author": { - "login": "ankerbachryhl", - "html_url": "https://github.com/ankerbachryhl" + "login": "AdiletBekmuratov", + "html_url": "https://github.com/AdiletBekmuratov" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1277, - "title": "Add Audit Logging System to Worker Tasks", - "href": "https://github.com/orgs/langfuse/discussions/1277", - "created_at": "2024-02-28T11:53:15Z", - "upvotes": 1, - "comment_count": 3, + "number": 1982, + "title": "trace doesn't work with .batch handler on langserve", + "href": "https://github.com/orgs/langfuse/discussions/1982", + "created_at": "2024-05-06T02:32:30Z", + "upvotes": 2, + "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "khareyash05", - "html_url": "https://github.com/khareyash05" + "login": "restuprajna", + "html_url": "https://github.com/restuprajna" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1268, - "title": "Possible with different units for input and output", - "href": "https://github.com/orgs/langfuse/discussions/1268", - "created_at": "2024-02-27T13:45:21Z", + "number": 1979, + "title": "get_prompt function failed in langfuse-python 2.28.3", + "href": "https://github.com/orgs/langfuse/discussions/1979", + "created_at": "2024-05-05T19:57:40Z", "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "Stadly", - "html_url": "https://github.com/Stadly" + "login": "nathan-vo810", + "html_url": "https://github.com/nathan-vo810" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1264, - "title": "ChatML/ChatMessage Prompt Templates", - "href": "https://github.com/orgs/langfuse/discussions/1264", - "created_at": "2024-02-27T01:59:05Z", - "upvotes": 4, - "comment_count": 3, + "number": 1969, + "title": "How to utilize a dataset w/ typescript and langchain integration", + "href": "https://github.com/orgs/langfuse/discussions/1969", + "created_at": "2024-05-03T15:22:21Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, "labels": [ - "feat-prompt-management", - "✅ Done" + "✅ Done", + "feat-datasets" ], "author": { - "login": "tuan3w", - "html_url": "https://github.com/tuan3w" + "login": "sahellebusch", + "html_url": "https://github.com/sahellebusch" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1258, - "title": "Dashboard for all projects of an organization", - "href": "https://github.com/orgs/langfuse/discussions/1258", - "created_at": "2024-02-26T20:12:22Z", - "upvotes": 11, + "number": 1957, + "title": "DevOps: What is the best way to create separate Langfuse instances in different environments: Dev, Test, QA, Prod?", + "href": "https://github.com/orgs/langfuse/discussions/1957", + "created_at": "2024-05-02T21:28:07Z", + "upvotes": 2, "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [ - "feat-dashboard" + "self-hosting" ], "author": { "login": "aiakubovich", "html_url": "https://github.com/aiakubovich" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1221, - "title": "Add Haystack integration", - "href": "https://github.com/orgs/langfuse/discussions/1221", - "created_at": "2024-02-21T13:06:06Z", - "upvotes": 9, - "comment_count": 2, + "number": 1952, + "title": "How to communicate trace-id between backend and frontend ? (langchain+langserve integration)", + "href": "https://github.com/orgs/langfuse/discussions/1952", + "created_at": "2024-05-02T13:48:20Z", + "upvotes": 1, + "comment_count": 3, "resolved": false, "labels": [ - "integrations", - "✅ Done", - "integration-haystack" + "integration-langchain" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "Sinnaeve", + "html_url": "https://github.com/Sinnaeve" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1220, - "title": "Export to S3", - "href": "https://github.com/orgs/langfuse/discussions/1220", - "created_at": "2024-02-21T12:46:58Z", - "upvotes": 1, - "comment_count": 0, - "resolved": false, + "number": 1946, + "title": "Not able to build docker image from web/Dockerfile", + "href": "https://github.com/orgs/langfuse/discussions/1946", + "created_at": "2024-05-02T09:41:18Z", + "upvotes": 2, + "comment_count": 1, + "resolved": true, "labels": [ - "integrations" + "self-hosting" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "Subham0793", + "html_url": "https://github.com/Subham0793" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1219, - "title": "Export to BigQuery", - "href": "https://github.com/orgs/langfuse/discussions/1219", - "created_at": "2024-02-21T12:46:26Z", - "upvotes": 3, - "comment_count": 0, - "resolved": false, - "labels": [ - "integrations" - ], + "number": 1940, + "title": "Simple Prompt -> LLM error with Usage Object?", + "href": "https://github.com/orgs/langfuse/discussions/1940", + "created_at": "2024-05-01T13:47:14Z", + "upvotes": 2, + "comment_count": 1, + "resolved": true, + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "tzilkha", + "html_url": "https://github.com/tzilkha" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1212, - "title": "Adding support for async Langchain methods", - "href": "https://github.com/orgs/langfuse/discussions/1212", - "created_at": "2024-02-20T13:09:19Z", - "upvotes": 23, - "comment_count": 5, + "number": 1864, + "title": "Can't see traces in the webUI if callback_handler passed to LLM init constructor", + "href": "https://github.com/orgs/langfuse/discussions/1864", + "created_at": "2024-04-25T21:01:54Z", + "upvotes": 2, + "comment_count": 1, "resolved": false, - "labels": [ - "integration-langchain", - "✅ Done" - ], + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "gabrielfior", + "html_url": "https://github.com/gabrielfior" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1208, - "title": "Add Images in Tracing", - "href": "https://github.com/orgs/langfuse/discussions/1208", - "created_at": "2024-02-20T00:41:41Z", - "upvotes": 11, - "comment_count": 2, - "resolved": false, + "number": 1860, + "title": "Alter generation names with LangChain integration", + "href": "https://github.com/orgs/langfuse/discussions/1860", + "created_at": "2024-04-25T18:12:35Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "✅ Done", - "feat-multimodal" + "integration-langchain" ], "author": { - "login": "aiakubovich", - "html_url": "https://github.com/aiakubovich" + "login": "nic-asnes-klaviyo", + "html_url": "https://github.com/nic-asnes-klaviyo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1190, - "title": "Request to add 75 percentile under Model latency section as shown in image below", - "href": "https://github.com/orgs/langfuse/discussions/1190", - "created_at": "2024-02-16T21:41:29Z", - "upvotes": 1, + "number": 1831, + "title": "how to check only output tokens and models costs related to only output tokens?", + "href": "https://github.com/orgs/langfuse/discussions/1831", + "created_at": "2024-04-24T12:27:17Z", + "upvotes": 2, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "ssubburaj85", - "html_url": "https://github.com/ssubburaj85" + "login": "manishiitg", + "html_url": "https://github.com/manishiitg" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1170, - "title": "LLM Playground", - "href": "https://github.com/orgs/langfuse/discussions/1170", - "created_at": "2024-02-15T17:44:42Z", - "upvotes": 7, - "comment_count": 6, - "resolved": false, + "number": 1814, + "title": "Deploy to heroku", + "href": "https://github.com/orgs/langfuse/discussions/1814", + "created_at": "2024-04-23T13:56:27Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "feat-prompt-management", - "✅ Done", - "feat-playground" + "self-hosting" ], "author": { - "login": "reza-mohideen", - "html_url": "https://github.com/reza-mohideen" + "login": "MarcoSteinke", + "html_url": "https://github.com/MarcoSteinke" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1159, - "title": "Looking for users (that are migrating off of something) to co-build Langfuse integration with", - "href": "https://github.com/orgs/langfuse/discussions/1159", - "created_at": "2024-02-14T19:05:27Z", + "number": 1788, + "title": "Need help with resolving long runtimes when Langfuse tracing is enabled", + "href": "https://github.com/orgs/langfuse/discussions/1788", + "created_at": "2024-04-19T17:46:05Z", "upvotes": 2, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "skrawcz", - "html_url": "https://github.com/skrawcz" + "login": "pooja1423", + "html_url": "https://github.com/pooja1423" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1156, - "title": "Possible to set timestamp when creating trace", - "href": "https://github.com/orgs/langfuse/discussions/1156", - "created_at": "2024-02-14T14:26:22Z", + "number": 1785, + "title": "How to limit the number of traces", + "href": "https://github.com/orgs/langfuse/discussions/1785", + "created_at": "2024-04-19T10:29:17Z", "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [ - "sdk-js" - ], + "labels": [], "author": { - "login": "Stadly", - "html_url": "https://github.com/Stadly" + "login": "secsilm", + "html_url": "https://github.com/secsilm" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1154, - "title": "Dedicated user object which can include groups/teams and other attributes", - "href": "https://github.com/orgs/langfuse/discussions/1154", - "created_at": "2024-02-14T09:45:40Z", - "upvotes": 5, - "comment_count": 3, + "number": 1773, + "title": "Flowise 1.6.5 can not Trace", + "href": "https://github.com/orgs/langfuse/discussions/1773", + "created_at": "2024-04-18T11:55:32Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [ - "feat-users" - ], + "labels": [], "author": { - "login": "bryan-agicap", - "html_url": "https://github.com/bryan-agicap" + "login": "lknbv5", + "html_url": "https://github.com/lknbv5" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1133, - "title": "API to delete scores", - "href": "https://github.com/orgs/langfuse/discussions/1133", - "created_at": "2024-02-12T11:19:59Z", - "upvotes": 2, + "number": 1759, + "title": "How to get generations and scores in the same trace when using OpenAI sdk or other tools", + "href": "https://github.com/orgs/langfuse/discussions/1759", + "created_at": "2024-04-17T15:56:51Z", + "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [ - "feat-api", - "feat-scores" - ], + "labels": [], "author": { - "login": "Jason-CKY", - "html_url": "https://github.com/Jason-CKY" + "login": "databill86", + "html_url": "https://github.com/databill86" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1128, - "title": "Display all traces within a session", - "href": "https://github.com/orgs/langfuse/discussions/1128", - "created_at": "2024-02-10T17:36:48Z", - "upvotes": 2, + "number": 1712, + "title": "Invalid public key", + "href": "https://github.com/orgs/langfuse/discussions/1712", + "created_at": "2024-04-14T18:11:51Z", + "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [ - "ui", - "feat-sessions" - ], + "labels": [], "author": { - "login": "benm5678", - "html_url": "https://github.com/benm5678" + "login": "taaha3244", + "html_url": "https://github.com/taaha3244" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1118, - "title": "[Simple Feature/WebUI] Adding a button to hide the sidebar", - "href": "https://github.com/orgs/langfuse/discussions/1118", - "created_at": "2024-02-09T09:43:34Z", - "upvotes": 3, - "comment_count": 1, + "number": 1672, + "title": "Cookies not allowed", + "href": "https://github.com/orgs/langfuse/discussions/1672", + "created_at": "2024-04-11T07:43:53Z", + "upvotes": 1, + "comment_count": 3, "resolved": false, - "labels": [ - "ui" - ], + "labels": [], "author": { - "login": "samyxdev", - "html_url": "https://github.com/samyxdev" + "login": "danielpirs", + "html_url": "https://github.com/danielpirs" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1115, - "title": "Prioritize traces captured from LangGraph by relevance", - "href": "https://github.com/orgs/langfuse/discussions/1115", - "created_at": "2024-02-08T06:44:34Z", - "upvotes": 8, - "comment_count": 3, + "number": 1649, + "title": "Run Langchain Evaluations on data in Langfuse , Why is the prompt not considered, and could this lead to evaluation flaws?", + "href": "https://github.com/orgs/langfuse/discussions/1649", + "created_at": "2024-04-10T05:25:28Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, + "labels": [], + "author": { + "login": "pengpengIlove", + "html_url": "https://github.com/pengpengIlove" + }, + "category": "Support" + }, + { + "number": 1610, + "title": "Scoring a trace after the LLM chain returns", + "href": "https://github.com/orgs/langfuse/discussions/1610", + "created_at": "2024-04-07T15:12:34Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "ui", - "integration-langchain" + "feat-scores" ], "author": { - "login": "litagent", - "html_url": "https://github.com/litagent" + "login": "pooja1423", + "html_url": "https://github.com/pooja1423" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1114, - "title": "Pulling prompt/completions via API", - "href": "https://github.com/orgs/langfuse/discussions/1114", - "created_at": "2024-02-08T00:52:10Z", + "number": 1601, + "title": "Okta auth got `read ECONNRESET`", + "href": "https://github.com/orgs/langfuse/discussions/1601", + "created_at": "2024-04-04T03:46:08Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "mukundt", - "html_url": "https://github.com/mukundt" + "login": "tmwatchanan", + "html_url": "https://github.com/tmwatchanan" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1106, - "title": "Prompt version comments", - "href": "https://github.com/orgs/langfuse/discussions/1106", - "created_at": "2024-02-07T15:38:07Z", - "upvotes": 5, - "comment_count": 2, + "number": 1538, + "title": "Trace input is null when passing in nodes, or Documents with transformations to VectorStoreIndex constructor", + "href": "https://github.com/orgs/langfuse/discussions/1538", + "created_at": "2024-03-29T00:30:49Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [ - "ui", - "feat-prompt-management" - ], + "labels": [], "author": { - "login": "mukundt", - "html_url": "https://github.com/mukundt" + "login": "mwertheim-zco", + "html_url": "https://github.com/mwertheim-zco" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1105, - "title": "\"Git diff\" view between two prompt versions", - "href": "https://github.com/orgs/langfuse/discussions/1105", - "created_at": "2024-02-07T15:37:18Z", - "upvotes": 12, + "number": 1536, + "title": "Tracing and Session support on Integrations like LiteLLM Proxy and others and Is LangFuse logging a background process?", + "href": "https://github.com/orgs/langfuse/discussions/1536", + "created_at": "2024-03-28T20:22:49Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "ui", - "feat-prompt-management" + "integration-litellm", + "feat-sessions" ], "author": { - "login": "mukundt", - "html_url": "https://github.com/mukundt" + "login": "Harryalways317", + "html_url": "https://github.com/Harryalways317" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1097, - "title": "Ability to post-process generation data", - "href": "https://github.com/orgs/langfuse/discussions/1097", - "created_at": "2024-02-06T17:45:58Z", - "upvotes": 2, + "number": 1528, + "title": "Aggregated project from multiple langfuse servers", + "href": "https://github.com/orgs/langfuse/discussions/1528", + "created_at": "2024-03-28T09:01:37Z", + "upvotes": 3, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "denisergashbaev", - "html_url": "https://github.com/denisergashbaev" + "login": "juan-abia", + "html_url": "https://github.com/juan-abia" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1096, - "title": "[Python SDK] Link prompt to OpenAI Chat Completion directly", - "href": "https://github.com/orgs/langfuse/discussions/1096", - "created_at": "2024-02-06T17:19:29Z", - "upvotes": 2, + "number": 1524, + "title": "How to add default user and project to self-hosted docker?", + "href": "https://github.com/orgs/langfuse/discussions/1524", + "created_at": "2024-03-28T08:00:07Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [ - "sdk-python", - "feat-prompt-management", - "integration-openai" + "self-hosting" ], "author": { - "login": "fancyweb", - "html_url": "https://github.com/fancyweb" + "login": "tzsombor95", + "html_url": "https://github.com/tzsombor95" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1089, - "title": "Use JWTs for API private key", - "href": "https://github.com/orgs/langfuse/discussions/1089", - "created_at": "2024-02-06T02:11:39Z", - "upvotes": 1, - "comment_count": 2, - "resolved": false, + "number": 1512, + "title": "[Alerts] Connect to Slack", + "href": "https://github.com/orgs/langfuse/discussions/1512", + "created_at": "2024-03-27T08:04:49Z", + "upvotes": 4, + "comment_count": 1, + "resolved": true, "labels": [], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "hypernovas", + "html_url": "https://github.com/hypernovas" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1082, - "title": "Add LLM call duration on session and trace table", - "href": "https://github.com/orgs/langfuse/discussions/1082", - "created_at": "2024-02-05T20:52:23Z", - "upvotes": 1, + "number": 1486, + "title": "Update/delete score using python sdk", + "href": "https://github.com/orgs/langfuse/discussions/1486", + "created_at": "2024-03-25T20:13:55Z", + "upvotes": 5, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [ - "ui" + "feat-scores" ], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "msanand", + "html_url": "https://github.com/msanand" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1077, - "title": "Flowise: Allow adding metadata in API call to populate Langfuse trace metadata", - "href": "https://github.com/orgs/langfuse/discussions/1077", - "created_at": "2024-02-05T15:55:07Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, + "number": 1481, + "title": "502-Bad Request", + "href": "https://github.com/orgs/langfuse/discussions/1481", + "created_at": "2024-03-22T13:06:18Z", + "upvotes": 1, + "comment_count": 3, + "resolved": true, "labels": [ - "integration-flowise" + "self-hosting" ], "author": { - "login": "jpmin7", - "html_url": "https://github.com/jpmin7" + "login": "tbarbito", + "html_url": "https://github.com/tbarbito" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1076, - "title": "Flowise: Allow Langfuse traceId to be set or passed on with API response", - "href": "https://github.com/orgs/langfuse/discussions/1076", - "created_at": "2024-02-05T14:58:23Z", + "number": 1466, + "title": "bug: Potential bug with AzureAD auth setup", + "href": "https://github.com/orgs/langfuse/discussions/1466", + "created_at": "2024-03-22T07:12:43Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ - "sdk-js", - "integration-flowise" + "self-hosting" ], "author": { - "login": "jpmin7", - "html_url": "https://github.com/jpmin7" + "login": "mprudra", + "html_url": "https://github.com/mprudra" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1074, - "title": "Model costs in terms of energy for self hosted models (or cloud hosted)", - "href": "https://github.com/orgs/langfuse/discussions/1074", - "created_at": "2024-02-05T10:15:27Z", + "number": 1449, + "title": "Langfuse session ID when using Chainlit", + "href": "https://github.com/orgs/langfuse/discussions/1449", + "created_at": "2024-03-20T00:57:09Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "vquilon", - "html_url": "https://github.com/vquilon" + "login": "tituslhy", + "html_url": "https://github.com/tituslhy" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1073, - "title": "Use proper logger for backend API to make it configurable", - "href": "https://github.com/orgs/langfuse/discussions/1073", - "created_at": "2024-02-05T09:19:01Z", - "upvotes": 3, - "comment_count": 5, + "number": 1445, + "title": "Linking dataset run items with existing callback handler", + "href": "https://github.com/orgs/langfuse/discussions/1445", + "created_at": "2024-03-19T16:54:54Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, "labels": [ - "✅ Done", - "self-hosting" + "feat-datasets" ], "author": { - "login": "code-haven", - "html_url": "https://github.com/code-haven" + "login": "subandwho", + "html_url": "https://github.com/subandwho" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1049, - "title": "API Examples for Generations", - "href": "https://github.com/orgs/langfuse/discussions/1049", - "created_at": "2024-02-02T07:02:08Z", - "upvotes": 2, + "number": 1434, + "title": "Add UserID and Feedback when using LlamaIndex Integration", + "href": "https://github.com/orgs/langfuse/discussions/1434", + "created_at": "2024-03-18T20:24:29Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, + "labels": [ + "integraton-llamaindex" + ], + "author": { + "login": "skelleex", + "html_url": "https://github.com/skelleex" + }, + "category": "Support" + }, + { + "number": 1432, + "title": "langfuse.api.resources.commons.errors.not_found_error.NotFoundError: status_code: 404, body: {'message': 'Observation not found'}", + "href": "https://github.com/orgs/langfuse/discussions/1432", + "created_at": "2024-03-18T13:29:05Z", + "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "emailic", + "html_url": "https://github.com/emailic" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1048, - "title": "Allow sharing traces as a self contained HTML file via presigned S3 URL", - "href": "https://github.com/orgs/langfuse/discussions/1048", - "created_at": "2024-02-02T06:05:47Z", - "upvotes": 2, - "comment_count": 0, - "resolved": false, + "number": 1429, + "title": "Hybrid usage Langfuse among OpenAI calls as well Langchain", + "href": "https://github.com/orgs/langfuse/discussions/1429", + "created_at": "2024-03-17T14:09:57Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "mikeon", + "html_url": "https://github.com/mikeon" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1043, - "title": "Ability to query entities from SDK", - "href": "https://github.com/orgs/langfuse/discussions/1043", - "created_at": "2024-02-01T23:51:00Z", - "upvotes": 4, + "number": 1420, + "title": "Datasets list / by id", + "href": "https://github.com/orgs/langfuse/discussions/1420", + "created_at": "2024-03-15T02:22:27Z", + "upvotes": 2, "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [ - "feat-api" + "feat-datasets" ], "author": { - "login": "Pranov1", - "html_url": "https://github.com/Pranov1" + "login": "norton120", + "html_url": "https://github.com/norton120" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1033, - "title": "Subscribe to Langfuse Events via Webhooks", - "href": "https://github.com/orgs/langfuse/discussions/1033", - "created_at": "2024-02-01T18:59:56Z", - "upvotes": 23, - "comment_count": 4, - "resolved": false, + "number": 1417, + "title": "Running Langfuse in Kubernetes", + "href": "https://github.com/orgs/langfuse/discussions/1417", + "created_at": "2024-03-14T19:59:42Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "mikeon", + "html_url": "https://github.com/mikeon" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1032, - "title": "Periodic reports (email or slack)", - "href": "https://github.com/orgs/langfuse/discussions/1032", - "created_at": "2024-02-01T18:57:42Z", - "upvotes": 11, - "comment_count": 1, + "number": 1382, + "title": "Match LLMs from AWS Bedrock to added model definition", + "href": "https://github.com/orgs/langfuse/discussions/1382", + "created_at": "2024-03-09T08:28:53Z", + "upvotes": 2, + "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "DominikNeumaier", + "html_url": "https://github.com/DominikNeumaier" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1021, - "title": "Add `Embedding` observation type", - "href": "https://github.com/orgs/langfuse/discussions/1021", - "created_at": "2024-02-01T03:15:17Z", - "upvotes": 49, + "number": 1380, + "title": "Langfuse flush() taking a long time and hangs", + "href": "https://github.com/orgs/langfuse/discussions/1380", + "created_at": "2024-03-09T00:09:55Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "venu-shapley", + "html_url": "https://github.com/venu-shapley" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1020, - "title": "Leveraging Azure OpenAI Diagnostic Settings?", - "href": "https://github.com/orgs/langfuse/discussions/1020", - "created_at": "2024-02-01T02:58:54Z", + "number": 1373, + "title": "How to fix error when running docs app demo chat", + "href": "https://github.com/orgs/langfuse/discussions/1373", + "created_at": "2024-03-08T00:08:46Z", "upvotes": 1, - "comment_count": 0, - "resolved": false, - "labels": [ - "integration-openai", - "integration-litellm" - ], + "comment_count": 1, + "resolved": true, + "labels": [], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "luandro", + "html_url": "https://github.com/luandro" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1011, - "title": "Configurable dashboards", - "href": "https://github.com/orgs/langfuse/discussions/1011", - "created_at": "2024-01-31T13:40:59Z", - "upvotes": 17, + "number": 1357, + "title": "Run items not appearing when linking to a trace and not a span or a generation", + "href": "https://github.com/orgs/langfuse/discussions/1357", + "created_at": "2024-03-07T10:17:34Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [ - "ui", - "feat-dashboard" + "feat-datasets" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "ladislasdellinger", + "html_url": "https://github.com/ladislasdellinger" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1010, - "title": "Add new integration: LLM Proxy", - "href": "https://github.com/orgs/langfuse/discussions/1010", - "created_at": "2024-01-31T12:40:35Z", - "upvotes": 2, + "number": 1353, + "title": "How do I add custom LLM APIs to the Langfuse UI?", + "href": "https://github.com/orgs/langfuse/discussions/1353", + "created_at": "2024-03-07T06:33:23Z", + "upvotes": 0, "comment_count": 1, "resolved": false, - "labels": [ - "integrations" - ], + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "yudhiesh", + "html_url": "https://github.com/yudhiesh" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1009, - "title": "Decorator-based integration with Langfuse", - "href": "https://github.com/orgs/langfuse/discussions/1009", - "created_at": "2024-01-31T12:19:26Z", - "upvotes": 7, - "comment_count": 3, + "number": 1336, + "title": "Applying database migrations failed. This is mostly caused by the database being unavailable.", + "href": "https://github.com/orgs/langfuse/discussions/1336", + "created_at": "2024-03-06T09:10:19Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, - "labels": [ - "sdk-python", - "integrations", - "✅ Done", - "integration-python-decorator" - ], + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "everyfin-in", + "html_url": "https://github.com/everyfin-in" }, - "category": "Ideas" + "category": "Support" }, { - "number": 1004, - "title": "should work with OpenAI-compatible self-hosted endpoints", - "href": "https://github.com/orgs/langfuse/discussions/1004", - "created_at": "2024-01-31T09:04:28Z", - "upvotes": 2, - "comment_count": 2, + "number": 1335, + "title": "Openai and null traces for input/output/metadata", + "href": "https://github.com/orgs/langfuse/discussions/1335", + "created_at": "2024-03-06T02:02:46Z", + "upvotes": 2, + "comment_count": 0, "resolved": false, - "labels": [ - "sdk-python", - "integration-openai" - ], + "labels": [], "author": { - "login": "7flash", - "html_url": "https://github.com/7flash" + "login": "aiakubovich", + "html_url": "https://github.com/aiakubovich" }, - "category": "Ideas" + "category": "Support" }, { - "number": 999, - "title": "Users should be able to pass metadata and tags via `overrideConfig` when using the Flowise integration", - "href": "https://github.com/orgs/langfuse/discussions/999", - "created_at": "2024-01-30T19:52:41Z", - "upvotes": 2, + "number": 1328, + "title": "Incompatibility between openllmetry and langfuse OpenAI wrapper", + "href": "https://github.com/orgs/langfuse/discussions/1328", + "created_at": "2024-03-05T17:03:34Z", + "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [ - "sdk-js", - "integration-flowise", - "✅ Done" - ], + "labels": [], "author": { - "login": "giorgosera", - "html_url": "https://github.com/giorgosera" + "login": "pamelafox", + "html_url": "https://github.com/pamelafox" }, - "category": "Ideas" + "category": "Support" }, { - "number": 991, - "title": "Inferring cost of trace from metadata field if optionally provided", - "href": "https://github.com/orgs/langfuse/discussions/991", - "created_at": "2024-01-30T07:38:56Z", + "number": 1326, + "title": "Does Langfuse integrate with LiteLLM Proxy Server?", + "href": "https://github.com/orgs/langfuse/discussions/1326", + "created_at": "2024-03-05T15:25:37Z", "upvotes": 1, - "comment_count": 2, - "resolved": false, + "comment_count": 1, + "resolved": true, "labels": [], "author": { - "login": "sumba101", - "html_url": "https://github.com/sumba101" + "login": "alphanome", + "html_url": "https://github.com/alphanome" }, - "category": "Ideas" + "category": "Support" }, { - "number": 990, - "title": "filtering sessions with metadata", - "href": "https://github.com/orgs/langfuse/discussions/990", - "created_at": "2024-01-30T06:21:42Z", - "upvotes": 6, - "comment_count": 2, + "number": 1325, + "title": "Do you need a helm chart of langfuse?", + "href": "https://github.com/orgs/langfuse/discussions/1325", + "created_at": "2024-03-05T15:02:42Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [ - "ui", - "feat-sessions", - "feat-metadata" - ], + "labels": [], "author": { - "login": "litagent", - "html_url": "https://github.com/litagent" + "login": "artemus717", + "html_url": "https://github.com/artemus717" }, - "category": "Ideas" + "category": "Support" }, { - "number": 989, - "title": "Enable Collaboration Platforms for Project Members", - "href": "https://github.com/orgs/langfuse/discussions/989", - "created_at": "2024-01-30T04:00:26Z", - "upvotes": 1, - "comment_count": 1, - "resolved": false, + "number": 1323, + "title": "When referencing the local langfuse in the langserve code, an error occurs:“ImportError: cannot import name 'ChatDeepInfra' from 'langchain_community.chat_models...”", + "href": "https://github.com/orgs/langfuse/discussions/1323", + "created_at": "2024-03-05T13:03:49Z", + "upvotes": 2, + "comment_count": 2, + "resolved": true, "labels": [], "author": { - "login": "khareyash05", - "html_url": "https://github.com/khareyash05" + "login": "zhenlong-zhu", + "html_url": "https://github.com/zhenlong-zhu" }, - "category": "Ideas" + "category": "Support" }, { - "number": 982, - "title": "Supporting OpenAI Vision", - "href": "https://github.com/orgs/langfuse/discussions/982", - "created_at": "2024-01-29T19:06:44Z", - "upvotes": 7, - "comment_count": 2, - "resolved": false, + "number": 1225, + "title": "Can Langfuse be used to record the records of ConversationChain in LangChain?", + "href": "https://github.com/orgs/langfuse/discussions/1225", + "created_at": "2024-02-22T09:24:34Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "integration-openai", - "✅ Done", - "feat-multimodal" + "integration-langchain" ], "author": { - "login": "pj747", - "html_url": "https://github.com/pj747" + "login": "lyzltysgithub", + "html_url": "https://github.com/lyzltysgithub" }, - "category": "Ideas" + "category": "Support" }, { - "number": 980, - "title": "Comments on objects across the Langfuse UI", - "href": "https://github.com/orgs/langfuse/discussions/980", - "created_at": "2024-01-29T18:21:03Z", - "upvotes": 3, - "comment_count": 3, - "resolved": false, - "labels": [ - "ui", - "✅ Done" - ], + "number": 1193, + "title": "What is the shadow database needed for?", + "href": "https://github.com/orgs/langfuse/discussions/1193", + "created_at": "2024-02-17T08:23:33Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "Stadly", + "html_url": "https://github.com/Stadly" }, - "category": "Ideas" + "category": "Support" }, { - "number": 976, - "title": "Support alternative databases next to Postgres, e.g. MySQL", - "href": "https://github.com/orgs/langfuse/discussions/976", - "created_at": "2024-01-28T21:44:11Z", - "upvotes": 3, - "comment_count": 6, - "resolved": false, + "number": 1184, + "title": "Unable to set session id or other CallbackHandler parameters when passing trace client in langchain sdk", + "href": "https://github.com/orgs/langfuse/discussions/1184", + "created_at": "2024-02-16T08:01:51Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [ - "self-hosting" + "integration-langchain" ], "author": { - "login": "zoltan-fedor", - "html_url": "https://github.com/zoltan-fedor" + "login": "sasidevtool", + "html_url": "https://github.com/sasidevtool" }, - "category": "Ideas" + "category": "Support" }, { - "number": 969, - "title": "Flowise - OpenAI Assistant cost tracking", - "href": "https://github.com/orgs/langfuse/discussions/969", - "created_at": "2024-01-26T18:04:07Z", + "number": 1186, + "title": "How to set tags when using the Langchain Callback handler", + "href": "https://github.com/orgs/langfuse/discussions/1186", + "created_at": "2024-02-16T05:47:31Z", "upvotes": 2, - "comment_count": 0, - "resolved": false, + "comment_count": 2, + "resolved": true, "labels": [ - "integration-flowise" + "sdk-python", + "integration-langchain", + "feat-tags" ], "author": { - "login": "jozsef-gereby", - "html_url": "https://github.com/jozsef-gereby" + "login": "reza-mohideen", + "html_url": "https://github.com/reza-mohideen" }, - "category": "Ideas" + "category": "Support" }, { - "number": 964, - "title": "Latency metrics - Time to first token, Tokens per second", - "href": "https://github.com/orgs/langfuse/discussions/964", - "created_at": "2024-01-26T15:37:01Z", - "upvotes": 8, - "comment_count": 3, - "resolved": false, + "number": 1179, + "title": "Ollama token counts", + "href": "https://github.com/orgs/langfuse/discussions/1179", + "created_at": "2024-02-15T23:38:39Z", + "upvotes": 2, + "comment_count": 2, + "resolved": true, "labels": [ - "✅ Done" + "feat-cost-tracking" ], "author": { - "login": "nikcaryo-super", - "html_url": "https://github.com/nikcaryo-super" + "login": "aiseei", + "html_url": "https://github.com/aiseei" }, - "category": "Ideas" + "category": "Support" }, { - "number": 958, - "title": "LLM calls captured via Langchain integration should match what’s sent to the LLM", - "href": "https://github.com/orgs/langfuse/discussions/958", - "created_at": "2024-01-25T16:45:38Z", - "upvotes": 3, - "comment_count": 2, + "number": 1310, + "title": "Trace of custom classes gives nondescriptive info", + "href": "https://github.com/orgs/langfuse/discussions/1310", + "created_at": "2024-02-06T14:13:26Z", + "upvotes": 1, + "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "benm5678", - "html_url": "https://github.com/benm5678" + "login": "mjungiewicz-exadel", + "html_url": "https://github.com/mjungiewicz-exadel" }, - "category": "Ideas" + "category": "Support" }, { - "number": 953, - "title": "Improve integration with flowise", - "href": "https://github.com/orgs/langfuse/discussions/953", - "created_at": "2024-01-24T19:57:06Z", + "number": 1091, + "title": "How to pass span id to OpenAI `chat.completions.create`", + "href": "https://github.com/orgs/langfuse/discussions/1091", + "created_at": "2024-02-06T09:33:30Z", "upvotes": 1, - "comment_count": 2, - "resolved": false, + "comment_count": 1, + "resolved": true, "labels": [ - "sdk-js", - "integration-flowise" + "integration-openai" ], "author": { - "login": "tsiougkosn", - "html_url": "https://github.com/tsiougkosn" + "login": "techytushar", + "html_url": "https://github.com/techytushar" }, - "category": "Ideas" + "category": "Support" }, { - "number": 941, - "title": "Dark mode", - "href": "https://github.com/orgs/langfuse/discussions/941", - "created_at": "2024-01-24T05:52:30Z", - "upvotes": 9, - "comment_count": 5, - "resolved": false, + "number": 1081, + "title": "Sessions vs Traces?", + "href": "https://github.com/orgs/langfuse/discussions/1081", + "created_at": "2024-02-05T21:06:03Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "✅ Done" + "feat-sessions" ], "author": { - "login": "archywillhe", - "html_url": "https://github.com/archywillhe" + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" }, - "category": "Ideas" + "category": "Support" }, { - "number": 939, - "title": "Full-text search on trace/observation/generation input/output", - "href": "https://github.com/orgs/langfuse/discussions/939", - "created_at": "2024-01-23T23:47:11Z", - "upvotes": 21, - "comment_count": 6, + "number": 1071, + "title": "feat: support for custom httpx.client", + "href": "https://github.com/orgs/langfuse/discussions/1071", + "created_at": "2024-02-05T06:35:23Z", + "upvotes": 1, + "comment_count": 2, "resolved": false, + "labels": [], + "author": { + "login": "brandonkzw", + "html_url": "https://github.com/brandonkzw" + }, + "category": "Support" + }, + { + "number": 1070, + "title": "Where to log request and response headers of generations? (litellm)", + "href": "https://github.com/orgs/langfuse/discussions/1070", + "created_at": "2024-02-05T02:40:38Z", + "upvotes": 1, + "comment_count": 2, + "resolved": true, "labels": [ - "ui" + "integration-litellm" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" }, - "category": "Ideas" + "category": "Support" }, { - "number": 917, - "title": "Download dashboard details", - "href": "https://github.com/orgs/langfuse/discussions/917", - "created_at": "2024-01-21T16:35:24Z", - "upvotes": 8, - "comment_count": 3, - "resolved": false, + "number": 1055, + "title": "Best way to flush LF in Next.js?", + "href": "https://github.com/orgs/langfuse/discussions/1055", + "created_at": "2024-02-02T17:50:58Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, "labels": [], "author": { - "login": "kerenaba", - "html_url": "https://github.com/kerenaba" + "login": "gullerg", + "html_url": "https://github.com/gullerg" }, - "category": "Ideas" + "category": "Support" }, { - "number": 902, - "title": "Support secret in docker compose", - "href": "https://github.com/orgs/langfuse/discussions/902", - "created_at": "2024-01-17T14:03:26Z", - "upvotes": 2, + "number": 1054, + "title": "Sentry for self-hosted?", + "href": "https://github.com/orgs/langfuse/discussions/1054", + "created_at": "2024-02-02T17:21:06Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, + "resolved": true, "labels": [], "author": { - "login": "shuther", - "html_url": "https://github.com/shuther" + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" }, - "category": "Ideas" + "category": "Support" }, { - "number": 896, - "title": "generation usage should accept a list of dict for async generation", - "href": "https://github.com/orgs/langfuse/discussions/896", - "created_at": "2024-01-17T05:59:24Z", + "number": 1051, + "title": "How can I get the trace_id in langfuse.openai.OpenAI?", + "href": "https://github.com/orgs/langfuse/discussions/1051", + "created_at": "2024-02-02T09:39:55Z", "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [], + "resolved": true, + "labels": [ + "integration-openai" + ], "author": { - "login": "dove-young", - "html_url": "https://github.com/dove-young" + "login": "yangge2333", + "html_url": "https://github.com/yangge2333" }, - "category": "Ideas" + "category": "Support" }, { - "number": 874, - "title": "Improve exception handling and type safety in python SDK", - "href": "https://github.com/orgs/langfuse/discussions/874", - "created_at": "2024-01-12T17:01:58Z", - "upvotes": 5, - "comment_count": 3, + "number": 1044, + "title": "AWS SES IAM Policy", + "href": "https://github.com/orgs/langfuse/discussions/1044", + "created_at": "2024-02-02T01:58:26Z", + "upvotes": 2, + "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "hubert-springbok", - "html_url": "https://github.com/hubert-springbok" + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" }, - "category": "Ideas" + "category": "Support" }, { - "number": 854, - "title": "Feature: API should give User-Tokens", - "href": "https://github.com/orgs/langfuse/discussions/854", - "created_at": "2024-01-09T14:26:47Z", - "upvotes": 5, + "number": 1019, + "title": "WAF Rules for self-hosted", + "href": "https://github.com/orgs/langfuse/discussions/1019", + "created_at": "2024-02-01T01:41:51Z", + "upvotes": 3, "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "droggta", - "html_url": "https://github.com/droggta" + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" }, - "category": "Ideas" + "category": "Support" }, { - "number": 852, - "title": "Add prompt.to_langchain() to get a Langchain Prompt Template", - "href": "https://github.com/orgs/langfuse/discussions/852", - "created_at": "2024-01-09T13:20:55Z", - "upvotes": 7, + "number": 1016, + "title": "Scaling / Parallelism / Concurrency safe?", + "href": "https://github.com/orgs/langfuse/discussions/1016", + "created_at": "2024-01-31T22:33:36Z", + "upvotes": 1, + "comment_count": 1, + "resolved": true, + "labels": [], + "author": { + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" + }, + "category": "Support" + }, + { + "number": 1013, + "title": "Building Docker container without database connection?", + "href": "https://github.com/orgs/langfuse/discussions/1013", + "created_at": "2024-01-31T19:32:47Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, - "labels": [ - "integrations", - "feat-prompt-management", - "✅ Done" - ], + "resolved": true, + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" }, - "category": "Ideas" + "category": "Support" }, { - "number": 853, - "title": "feat(ui): Dashboard filter and highlight", - "href": "https://github.com/orgs/langfuse/discussions/853", - "created_at": "2024-01-09T05:37:34Z", - "upvotes": 2, + "number": 973, + "title": "If we use cloud services, when we migrate to our own host later, do all the above data support export?", + "href": "https://github.com/orgs/langfuse/discussions/973", + "created_at": "2024-01-27T09:55:41Z", + "upvotes": 1, "comment_count": 1, - "resolved": false, - "labels": [ - "ui", - "Dashboard" - ], + "resolved": true, + "labels": [], "author": { - "login": "lkNGAT", - "html_url": "https://github.com/lkNGAT" + "login": "wsdo", + "html_url": "https://github.com/wsdo" }, - "category": "Ideas" + "category": "Support" }, { - "number": 844, - "title": "Integration: Node.js/Typescript OpenAI SDK", - "href": "https://github.com/orgs/langfuse/discussions/844", - "created_at": "2024-01-08T22:39:27Z", - "upvotes": 8, + "number": 866, + "title": "Cannot see Add to Dataset button in the UI", + "href": "https://github.com/orgs/langfuse/discussions/866", + "created_at": "2024-01-11T09:12:16Z", + "upvotes": 1, "comment_count": 2, - "resolved": false, + "resolved": true, "labels": [ - "sdk-js", - "integrations", - "✅ Done" + "feat-datasets" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "SinghCoder", + "html_url": "https://github.com/SinghCoder" }, - "category": "Ideas" - }, + "category": "Support" + } + ] + }, + { + "category": "Ideas", + "discussions": [ { - "number": 828, - "title": "LlamaIndex integration (Python)", - "href": "https://github.com/orgs/langfuse/discussions/828", - "created_at": "2024-01-06T18:21:02Z", - "upvotes": 20, - "comment_count": 7, + "number": 4454, + "title": "Support user input, message history, and tool calls in prompt experiments", + "href": "https://github.com/orgs/langfuse/discussions/4454", + "created_at": "2024-11-27T01:04:26Z", + "upvotes": 2, + "comment_count": 1, "resolved": false, "labels": [ - "sdk-python", - "integrations", - "✅ Done", - "integraton-llamaindex" + "feat-prompt-experiments" ], "author": { "login": "marcklingen", @@ -5725,4295 +5717,7155 @@ "category": "Ideas" }, { - "number": 1007, - "title": "Admin API: projects, api keys, user management", - "href": "https://github.com/orgs/langfuse/discussions/1007", - "created_at": "2023-12-21T13:22:28Z", - "upvotes": 17, - "comment_count": 13, + "number": 4430, + "title": "Feature request: CRUD for Prompt API", + "href": "https://github.com/orgs/langfuse/discussions/4430", + "created_at": "2024-11-26T08:42:39Z", + "upvotes": 1, + "comment_count": 0, "resolved": false, - "labels": [ - "feat-api", - "self-hosting" - ], + "labels": [], "author": { - "login": "maxxte", - "html_url": "https://github.com/maxxte" + "login": "barseghyanartur", + "html_url": "https://github.com/barseghyanartur" }, "category": "Ideas" }, { - "number": 1006, - "title": "Versioning of docs", - "href": "https://github.com/orgs/langfuse/discussions/1006", - "created_at": "2023-12-18T01:27:09Z", + "number": 4414, + "title": "langfuse-python: simple static method listing prompt template var names", + "href": "https://github.com/orgs/langfuse/discussions/4414", + "created_at": "2024-11-25T16:28:05Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 3, "resolved": false, "labels": [ - "docs" + "feat-prompt-management" ], "author": { - "login": "flxwu", - "html_url": "https://github.com/flxwu" + "login": "rhighs", + "html_url": "https://github.com/rhighs" }, "category": "Ideas" }, { - "number": 1008, - "title": "Datasets: Diff of output and expected output", - "href": "https://github.com/orgs/langfuse/discussions/1008", - "created_at": "2023-11-29T00:35:13Z", - "upvotes": 5, + "number": 4397, + "title": "n8n Integration", + "href": "https://github.com/orgs/langfuse/discussions/4397", + "created_at": "2024-11-24T09:43:01Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "aibucketmail", + "html_url": "https://github.com/aibucketmail" + }, + "category": "Ideas" + }, + { + "number": 4381, + "title": "Feature Request: Add Tagging Pipelines for Evaluation-Based Tagging", + "href": "https://github.com/orgs/langfuse/discussions/4381", + "created_at": "2024-11-22T03:44:17Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "wesleyearlstander", + "html_url": "https://github.com/wesleyearlstander" + }, + "category": "Ideas" + }, + { + "number": 4380, + "title": "Adding types for evals in Langfuse", + "href": "https://github.com/orgs/langfuse/discussions/4380", + "created_at": "2024-11-22T03:35:26Z", + "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [ - "ui", - "feat-datasets" - ], + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "wesleyearlstander", + "html_url": "https://github.com/wesleyearlstander" }, "category": "Ideas" }, { - "number": 1066, - "title": "feat: Publish arm64 compatible docker images", - "href": "https://github.com/orgs/langfuse/discussions/1066", - "created_at": "2023-11-08T16:06:08Z", + "number": 4372, + "title": "LaTex Rendering", + "href": "https://github.com/orgs/langfuse/discussions/4372", + "created_at": "2024-11-21T22:06:07Z", "upvotes": 1, - "comment_count": 10, + "comment_count": 0, "resolved": false, - "labels": [ - "✅ Done", - "self-hosting" - ], + "labels": [], "author": { - "login": "code-haven", - "html_url": "https://github.com/code-haven" + "login": "wesleyearlstander", + "html_url": "https://github.com/wesleyearlstander" }, "category": "Ideas" }, { - "number": 1065, - "title": "OpenAI SDK wrapper for JS", - "href": "https://github.com/orgs/langfuse/discussions/1065", - "created_at": "2023-09-15T10:55:35Z", + "number": 4353, + "title": "Datasets: Add selection of traces to a dataset", + "href": "https://github.com/orgs/langfuse/discussions/4353", + "created_at": "2024-11-21T08:56:15Z", "upvotes": 1, - "comment_count": 3, + "comment_count": 0, "resolved": false, "labels": [ - "sdk-js", - "integrations", - "integration-openai", - "✅ Done" + "feat-datasets" ], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, "category": "Ideas" - } - ] - }, - { - "category": "Support", - "discussions": [ + }, { - "number": 3780, - "title": "How to use prompt management with litellm's integration with langfuse?", - "href": "https://github.com/orgs/langfuse/discussions/3780", - "created_at": "2024-10-16T16:48:40Z", + "number": 4348, + "title": "Multi-user annotation capability in Score Configs", + "href": "https://github.com/orgs/langfuse/discussions/4348", + "created_at": "2024-11-20T19:16:38Z", "upvotes": 1, - "comment_count": 3, + "comment_count": 2, "resolved": false, "labels": [ - "feat-prompt-management", - "integration-litellm" + "feat-annotation" ], "author": { - "login": "GildeshAbhay", - "html_url": "https://github.com/GildeshAbhay" + "login": "juanmleng", + "html_url": "https://github.com/juanmleng" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3779, - "title": "Annotation Queues and Session IDs and Datasets and LLM Security", - "href": "https://github.com/orgs/langfuse/discussions/3779", - "created_at": "2024-10-16T14:55:09Z", + "number": 4342, + "title": "Feature request: Lifecycle hooks in LangFuse", + "href": "https://github.com/orgs/langfuse/discussions/4342", + "created_at": "2024-11-20T14:23:44Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "paolotamag", - "html_url": "https://github.com/paolotamag" + "login": "barseghyanartur", + "html_url": "https://github.com/barseghyanartur" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3778, - "title": "Observe decorator not working with custom langchain model & custom langfuse callback handler", - "href": "https://github.com/orgs/langfuse/discussions/3778", - "created_at": "2024-10-16T12:36:02Z", - "upvotes": 1, - "comment_count": 2, + "number": 4340, + "title": "RBAC: Restriction based on trace tags/metadata", + "href": "https://github.com/orgs/langfuse/discussions/4340", + "created_at": "2024-11-20T12:32:40Z", + "upvotes": 2, + "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "FaresKi", - "html_url": "https://github.com/FaresKi" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3777, - "title": "Error when trying to upgrade my langfuse deployment", - "href": "https://github.com/orgs/langfuse/discussions/3777", - "created_at": "2024-10-16T09:25:53Z", - "upvotes": 1, - "comment_count": 2, + "number": 4332, + "title": "Trace Table: Ability to sort table by score", + "href": "https://github.com/orgs/langfuse/discussions/4332", + "created_at": "2024-11-20T10:27:38Z", + "upvotes": 2, + "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "nithin1995", - "html_url": "https://github.com/nithin1995" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3766, - "title": "Latency and total cost for runs are not computed", - "href": "https://github.com/orgs/langfuse/discussions/3766", - "created_at": "2024-10-15T21:38:15Z", - "upvotes": 1, - "comment_count": 2, + "number": 4322, + "title": "Add the ability to remove tags from traces via the SDK/API", + "href": "https://github.com/orgs/langfuse/discussions/4322", + "created_at": "2024-11-19T20:09:18Z", + "upvotes": 2, + "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "ldbolanos", - "html_url": "https://github.com/ldbolanos" + "login": "justinwiley", + "html_url": "https://github.com/justinwiley" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3764, - "title": "Best practices for tracing an app with history and tool usage", - "href": "https://github.com/orgs/langfuse/discussions/3764", - "created_at": "2024-10-15T21:27:34Z", - "upvotes": 1, - "comment_count": 3, + "number": 4316, + "title": "Prompt Changelog Management", + "href": "https://github.com/orgs/langfuse/discussions/4316", + "created_at": "2024-11-19T14:32:33Z", + "upvotes": 3, + "comment_count": 0, "resolved": false, - "labels": [ - "integration-openai" - ], + "labels": [], "author": { - "login": "machulav", - "html_url": "https://github.com/machulav" + "login": "alexander-abramovich", + "html_url": "https://github.com/alexander-abramovich" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3756, - "title": "How to create an eval config for prompts using python api?", - "href": "https://github.com/orgs/langfuse/discussions/3756", - "created_at": "2024-10-15T09:20:06Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [ - "feat-evals" - ], + "number": 4315, + "title": "Smartly integrate with prompt templating tools (like Jinja templating engine)", + "href": "https://github.com/orgs/langfuse/discussions/4315", + "created_at": "2024-11-19T14:30:42Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, + "labels": [], "author": { - "login": "GildeshAbhay", - "html_url": "https://github.com/GildeshAbhay" + "login": "alexander-abramovich", + "html_url": "https://github.com/alexander-abramovich" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3737, - "title": "Monitoring for multi agent systems (OpenWebUI)", - "href": "https://github.com/orgs/langfuse/discussions/3737", - "created_at": "2024-10-14T16:50:17Z", - "upvotes": 1, - "comment_count": 3, - "resolved": true, - "labels": [ - "integration-openwebui" - ], + "number": 4314, + "title": "Making prompt editing eye-pleasing and less error-prown", + "href": "https://github.com/orgs/langfuse/discussions/4314", + "created_at": "2024-11-19T14:24:29Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, + "labels": [], "author": { - "login": "OM-EL", - "html_url": "https://github.com/OM-EL" + "login": "alexander-abramovich", + "html_url": "https://github.com/alexander-abramovich" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3735, - "title": "Is it possible to use tools calling and structured output in the Prompts UI?", - "href": "https://github.com/orgs/langfuse/discussions/3735", - "created_at": "2024-10-14T16:43:23Z", - "upvotes": 1, + "number": 4304, + "title": "Prompt Management: Metadata for Prompt Versions", + "href": "https://github.com/orgs/langfuse/discussions/4304", + "created_at": "2024-11-19T08:39:27Z", + "upvotes": 7, "comment_count": 2, "resolved": false, "labels": [ "feat-prompt-management" ], "author": { - "login": "mifopen", - "html_url": "https://github.com/mifopen" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3718, - "title": "How to delete a Session?", - "href": "https://github.com/orgs/langfuse/discussions/3718", - "created_at": "2024-10-11T14:51:46Z", + "number": 4303, + "title": "Exporting comments", + "href": "https://github.com/orgs/langfuse/discussions/4303", + "created_at": "2024-11-19T06:59:31Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [ - "feat-sessions" - ], + "comment_count": 1, + "resolved": false, + "labels": [], "author": { - "login": "augustoolucas", - "html_url": "https://github.com/augustoolucas" + "login": "jamesyu", + "html_url": "https://github.com/jamesyu" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3717, - "title": "Llamaindex Workflow does't work with Instrumentation Module", - "href": "https://github.com/orgs/langfuse/discussions/3717", - "created_at": "2024-10-11T10:27:09Z", + "number": 4301, + "title": "[Feature Request] API to Remove or Update Trace Tags", + "href": "https://github.com/orgs/langfuse/discussions/4301", + "created_at": "2024-11-19T02:41:13Z", "upvotes": 1, - "comment_count": 3, + "comment_count": 0, "resolved": false, - "labels": [ - "integraton-llamaindex" - ], + "labels": [], "author": { - "login": "ntdanhtma", - "html_url": "https://github.com/ntdanhtma" + "login": "0xcodedead", + "html_url": "https://github.com/0xcodedead" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3698, - "title": "Add additional providers for evals", - "href": "https://github.com/orgs/langfuse/discussions/3698", - "created_at": "2024-10-10T15:34:48Z", + "number": 4299, + "title": "Add XML/tree viewer to playground and trace viewer", + "href": "https://github.com/orgs/langfuse/discussions/4299", + "created_at": "2024-11-19T01:12:03Z", "upvotes": 1, - "comment_count": 4, + "comment_count": 0, "resolved": false, - "labels": [ - "integration-amazon-bedrock" - ], + "labels": [], "author": { - "login": "j10sanders", - "html_url": "https://github.com/j10sanders" + "login": "jeff-an", + "html_url": "https://github.com/jeff-an" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3679, - "title": "Langfuse / Langflow not intergrating", - "href": "https://github.com/orgs/langfuse/discussions/3679", - "created_at": "2024-10-09T17:06:32Z", + "number": 4280, + "title": "Increase character limit of comments in Langfuse", + "href": "https://github.com/orgs/langfuse/discussions/4280", + "created_at": "2024-11-18T11:20:06Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "colecal", - "html_url": "https://github.com/colecal" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3678, - "title": "Langfuse not tracing code from my VM (server)", - "href": "https://github.com/orgs/langfuse/discussions/3678", - "created_at": "2024-10-09T14:56:05Z", + "number": 4276, + "title": "Enh prompt management system", + "href": "https://github.com/orgs/langfuse/discussions/4276", + "created_at": "2024-11-17T21:50:06Z", "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [ - "self-hosting" - ], + "labels": [], "author": { - "login": "akbar-mta", - "html_url": "https://github.com/akbar-mta" + "login": "flefevre", + "html_url": "https://github.com/flefevre" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3674, - "title": "Docs for K8s deployments", - "href": "https://github.com/orgs/langfuse/discussions/3674", - "created_at": "2024-10-09T09:52:05Z", + "number": 4268, + "title": "Support image messages in the playground", + "href": "https://github.com/orgs/langfuse/discussions/4268", + "created_at": "2024-11-17T01:02:48Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [ - "self-hosting" - ], + "comment_count": 1, + "resolved": false, + "labels": [], "author": { - "login": "Brant-lzh", - "html_url": "https://github.com/Brant-lzh" + "login": "jeff-an", + "html_url": "https://github.com/jeff-an" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3645, - "title": "Cannot Sign In or Sign Up to Local Langfuse Instance", - "href": "https://github.com/orgs/langfuse/discussions/3645", - "created_at": "2024-10-08T11:09:48Z", + "number": 4263, + "title": "Extend RBAC to Include Teams and Refine Permissions for Prompt Management", + "href": "https://github.com/orgs/langfuse/discussions/4263", + "created_at": "2024-11-16T04:22:27Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "Patryk-Chlanda", - "html_url": "https://github.com/Patryk-Chlanda" + "login": "flefevre", + "html_url": "https://github.com/flefevre" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3641, - "title": "Sign in and Sign up button is greyed out", - "href": "https://github.com/orgs/langfuse/discussions/3641", - "created_at": "2024-10-08T09:32:16Z", + "number": 4258, + "title": "Automatically Trace from Playground", + "href": "https://github.com/orgs/langfuse/discussions/4258", + "created_at": "2024-11-15T18:58:05Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "akbar-mta", - "html_url": "https://github.com/akbar-mta" + "login": "Chinoman10", + "html_url": "https://github.com/Chinoman10" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3637, - "title": "Sign In Button Remains Disabled When Logging in with Email/Password on Langfuse Self-Hosted", - "href": "https://github.com/orgs/langfuse/discussions/3637", - "created_at": "2024-10-08T06:40:05Z", + "number": 4247, + "title": "Reset LangfuseDecorator context to allow nested traces", + "href": "https://github.com/orgs/langfuse/discussions/4247", + "created_at": "2024-11-15T09:59:28Z", "upvotes": 2, - "comment_count": 2, - "resolved": true, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "tubone24", - "html_url": "https://github.com/tubone24" + "login": "vitalii-diachkov-sumup", + "html_url": "https://github.com/vitalii-diachkov-sumup" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3615, - "title": "Failing with internal server error when trying to add score to a trace", - "href": "https://github.com/orgs/langfuse/discussions/3615", - "created_at": "2024-10-07T06:15:14Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [], + "number": 4212, + "title": "Disable authentication in self-hosted deployments", + "href": "https://github.com/orgs/langfuse/discussions/4212", + "created_at": "2024-11-13T13:32:11Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [ + "feat-auth", + "self-hosting" + ], "author": { - "login": "nithin1995", - "html_url": "https://github.com/nithin1995" + "login": "mariusp12", + "html_url": "https://github.com/mariusp12" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3592, - "title": "Set trace_id in Langchain CallbackHandler", - "href": "https://github.com/orgs/langfuse/discussions/3592", - "created_at": "2024-10-05T11:09:30Z", + "number": 4208, + "title": "Multi-turn / session experiments in datasets", + "href": "https://github.com/orgs/langfuse/discussions/4208", + "created_at": "2024-11-13T11:43:31Z", "upvotes": 1, "comment_count": 1, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "feat-datasets" + ], "author": { - "login": "michaelpoluektov", - "html_url": "https://github.com/michaelpoluektov" + "login": "bartsimo", + "html_url": "https://github.com/bartsimo" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3574, - "title": "Automated provisioning of default resources in self hosting", - "href": "https://github.com/orgs/langfuse/discussions/3574", - "created_at": "2024-10-04T06:44:45Z", + "number": 4189, + "title": "feat: add support for SSR to allow runtime BASE_PATH", + "href": "https://github.com/orgs/langfuse/discussions/4189", + "created_at": "2024-11-12T12:39:25Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [ + "self-hosting" + ], + "author": { + "login": "sinux-l5d", + "html_url": "https://github.com/sinux-l5d" + }, + "category": "Ideas" + }, + { + "number": 4168, + "title": "Centralized API Key Management with Secret Store Integration (e.g. HashiCorp Vault)", + "href": "https://github.com/orgs/langfuse/discussions/4168", + "created_at": "2024-11-11T11:11:10Z", "upvotes": 1, "comment_count": 2, - "resolved": true, + "resolved": false, "labels": [ + "security", "self-hosting" ], "author": { - "login": "Harinisri29", - "html_url": "https://github.com/Harinisri29" + "login": "bikram42", + "html_url": "https://github.com/bikram42" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3569, - "title": "UnauthorizedError: No authorization header After Switching to Headless Initialization", - "href": "https://github.com/orgs/langfuse/discussions/3569", - "created_at": "2024-10-03T08:52:35Z", + "number": 4166, + "title": "Allow sending events to multiple LF projects within one client app", + "href": "https://github.com/orgs/langfuse/discussions/4166", + "created_at": "2024-11-11T10:51:01Z", "upvotes": 1, "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "chandel-aman", - "html_url": "https://github.com/chandel-aman" + "login": "snopoke", + "html_url": "https://github.com/snopoke" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3559, - "title": "Token Cost using OpenRouter", - "href": "https://github.com/orgs/langfuse/discussions/3559", - "created_at": "2024-10-02T05:25:14Z", + "number": 4165, + "title": "Another glimpse into prompt management in LangFuse", + "href": "https://github.com/orgs/langfuse/discussions/4165", + "created_at": "2024-11-11T10:20:18Z", "upvotes": 1, "comment_count": 1, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "feat-prompt-management" + ], "author": { - "login": "austinm911", - "html_url": "https://github.com/austinm911" + "login": "barseghyanartur", + "html_url": "https://github.com/barseghyanartur" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3557, - "title": "Link 2 traces", - "href": "https://github.com/orgs/langfuse/discussions/3557", - "created_at": "2024-10-02T02:14:27Z", - "upvotes": 1, + "number": 4154, + "title": "Feature Request: Enable Invites with `AUTH_DISABLE_SIGNUP` (or/and GitHub OAuth for a given organization)", + "href": "https://github.com/orgs/langfuse/discussions/4154", + "created_at": "2024-11-10T15:04:41Z", + "upvotes": 3, "comment_count": 1, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "feat-auth", + "self-hosting" + ], "author": { - "login": "saiprasath21", - "html_url": "https://github.com/saiprasath21" + "login": "shner-elmo", + "html_url": "https://github.com/shner-elmo" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3556, - "title": "Update a trace", - "href": "https://github.com/orgs/langfuse/discussions/3556", - "created_at": "2024-10-02T02:10:15Z", + "number": 4143, + "title": "Getting prompts using LiteLLM syntax", + "href": "https://github.com/orgs/langfuse/discussions/4143", + "created_at": "2024-11-09T17:01:10Z", "upvotes": 1, - "comment_count": 1, - "resolved": true, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "saiprasath21", - "html_url": "https://github.com/saiprasath21" + "login": "doasfrancisco", + "html_url": "https://github.com/doasfrancisco" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3553, - "title": "How to track DSPy call within Langgraph", - "href": "https://github.com/orgs/langfuse/discussions/3553", - "created_at": "2024-10-01T20:00:11Z", + "number": 4129, + "title": "Annotation Queue: Display trace id", + "href": "https://github.com/orgs/langfuse/discussions/4129", + "created_at": "2024-11-08T16:14:00Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 0, "resolved": false, - "labels": [ - "integration-langchain", - "integration-dspy" - ], + "labels": [], "author": { - "login": "marcklingen", - "html_url": "https://github.com/marcklingen" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3552, - "title": "LlamaIndex traces grouping", - "href": "https://github.com/orgs/langfuse/discussions/3552", - "created_at": "2024-10-01T18:35:11Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 4121, + "title": "Enable to use variable of prompt on evaluator.", + "href": "https://github.com/orgs/langfuse/discussions/4121", + "created_at": "2024-11-08T09:16:28Z", + "upvotes": 3, + "comment_count": 1, + "resolved": false, "labels": [ - "integraton-llamaindex" + "feat-evals" ], "author": { - "login": "ivanviragine", - "html_url": "https://github.com/ivanviragine" + "login": "takryo00", + "html_url": "https://github.com/takryo00" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3549, - "title": "create api keys pair using some method or api", - "href": "https://github.com/orgs/langfuse/discussions/3549", - "created_at": "2024-10-01T11:45:12Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 4120, + "title": "Sessions Table: Scores Column", + "href": "https://github.com/orgs/langfuse/discussions/4120", + "created_at": "2024-11-08T08:58:10Z", + "upvotes": 5, + "comment_count": 0, + "resolved": false, "labels": [ - "self-hosting" + "feat-sessions" ], "author": { - "login": "ryanrib14", - "html_url": "https://github.com/ryanrib14" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3545, - "title": "How to Set Custom Trace ID with a Decorator and Include langfuse_observation_id?", - "href": "https://github.com/orgs/langfuse/discussions/3545", - "created_at": "2024-10-01T02:04:03Z", + "number": 4110, + "title": "Sort functionality in Users page", + "href": "https://github.com/orgs/langfuse/discussions/4110", + "created_at": "2024-11-07T19:43:07Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [ - "integration-python-decorator" - ], + "comment_count": 0, + "resolved": false, + "labels": [], "author": { - "login": "octadion", - "html_url": "https://github.com/octadion" + "login": "sal-dti", + "html_url": "https://github.com/sal-dti" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3540, - "title": "error ❌ tRPC failed on public.checkUpdate: Failed to fetch or json parse the latest releases Failed to fetch or json parse the latest releases", - "href": "https://github.com/orgs/langfuse/discussions/3540", - "created_at": "2024-09-30T20:29:22Z", + "number": 4106, + "title": "Add new filters for the LLM as a Judge Evaluation (other scores and cost)", + "href": "https://github.com/orgs/langfuse/discussions/4106", + "created_at": "2024-11-07T14:44:31Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "self-hosting" + "feat-evals" ], "author": { - "login": "FaresKi", - "html_url": "https://github.com/FaresKi" + "login": "laisalvescw", + "html_url": "https://github.com/laisalvescw" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3531, - "title": "is it possible to assign a label to an existing prompt via API/SDK ?", - "href": "https://github.com/orgs/langfuse/discussions/3531", - "created_at": "2024-09-30T07:49:28Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 4103, + "title": "Prompt Management: Deployment level view", + "href": "https://github.com/orgs/langfuse/discussions/4103", + "created_at": "2024-11-07T12:40:07Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, "labels": [ "feat-prompt-management" ], "author": { - "login": "simicvm", - "html_url": "https://github.com/simicvm" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3525, - "title": "Applying database migrations failed. This is mostly caused by the database being unavailable", - "href": "https://github.com/orgs/langfuse/discussions/3525", - "created_at": "2024-09-29T11:14:04Z", - "upvotes": 1, - "comment_count": 2, + "number": 4102, + "title": "Prompt Management: labels in prompt table", + "href": "https://github.com/orgs/langfuse/discussions/4102", + "created_at": "2024-11-07T12:38:00Z", + "upvotes": 2, + "comment_count": 0, "resolved": false, - "labels": [ - "self-hosting" - ], + "labels": [], "author": { - "login": "NanthagopalEswaran", - "html_url": "https://github.com/NanthagopalEswaran" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3521, - "title": "is it open source or not?", - "href": "https://github.com/orgs/langfuse/discussions/3521", - "created_at": "2024-09-27T22:07:52Z", + "number": 4099, + "title": "Does LangFuse support a (declarative) plugin architecture?", + "href": "https://github.com/orgs/langfuse/discussions/4099", + "created_at": "2024-11-07T11:27:39Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [], "author": { - "login": "severfire", - "html_url": "https://github.com/severfire" + "login": "barseghyanartur", + "html_url": "https://github.com/barseghyanartur" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3520, - "title": "Langfuse not logging costs on Vertex AI gemini-1.5-flash-002.", - "href": "https://github.com/orgs/langfuse/discussions/3520", - "created_at": "2024-09-27T18:51:08Z", + "number": 4097, + "title": "More Granular Target Objects for Langfuse Evaluators", + "href": "https://github.com/orgs/langfuse/discussions/4097", + "created_at": "2024-11-07T10:00:11Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "qrosseel", + "html_url": "https://github.com/qrosseel" + }, + "category": "Ideas" + }, + { + "number": 4096, + "title": "Evaluator CRUD in UI and API", + "href": "https://github.com/orgs/langfuse/discussions/4096", + "created_at": "2024-11-07T09:46:01Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, + "labels": [], + "author": { + "login": "qrosseel", + "html_url": "https://github.com/qrosseel" + }, + "category": "Ideas" + }, + { + "number": 4078, + "title": "Specify data masking on decorator itself", + "href": "https://github.com/orgs/langfuse/discussions/4078", + "created_at": "2024-11-06T14:00:47Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, "labels": [ - "integraton-llamaindex" + "integration-python-decorator", + "feat-data-masking" ], "author": { - "login": "arthurbrenno", - "html_url": "https://github.com/arthurbrenno" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3503, - "title": "Not possible to delete prompts programmatically, (langfuse python library or api)", - "href": "https://github.com/orgs/langfuse/discussions/3503", - "created_at": "2024-09-27T12:33:52Z", + "number": 4077, + "title": "Export dataset run table", + "href": "https://github.com/orgs/langfuse/discussions/4077", + "created_at": "2024-11-06T13:58:30Z", + "upvotes": 4, + "comment_count": 0, + "resolved": false, + "labels": [ + "feat-datasets" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 4076, + "title": "Customizable data mask (input/output, observation names, observation type)", + "href": "https://github.com/orgs/langfuse/discussions/4076", + "created_at": "2024-11-06T13:56:36Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, + "labels": [ + "feat-data-masking" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 4060, + "title": "Add support for more complex Jinja constructs", + "href": "https://github.com/orgs/langfuse/discussions/4060", + "created_at": "2024-11-05T14:28:17Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, + "comment_count": 1, + "resolved": false, "labels": [ "feat-prompt-management" ], "author": { - "login": "RealGammaNL", - "html_url": "https://github.com/RealGammaNL" + "login": "alex-stoica", + "html_url": "https://github.com/alex-stoica" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3496, - "title": "Unable to fetch prompts without production label", - "href": "https://github.com/orgs/langfuse/discussions/3496", - "created_at": "2024-09-27T03:27:52Z", + "number": 4040, + "title": "Linking ChatPromptTemplate to Multiple Prompts", + "href": "https://github.com/orgs/langfuse/discussions/4040", + "created_at": "2024-11-04T13:49:06Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ "feat-prompt-management" ], "author": { - "login": "chandel-aman", - "html_url": "https://github.com/chandel-aman" + "login": "sternr", + "html_url": "https://github.com/sternr" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3489, - "title": "Missing input/output on trace when using openai js integration", - "href": "https://github.com/orgs/langfuse/discussions/3489", - "created_at": "2024-09-26T15:36:06Z", - "upvotes": 1, - "comment_count": 2, + "number": 4037, + "title": "feat: support adding trace tags in annotation queue view", + "href": "https://github.com/orgs/langfuse/discussions/4037", + "created_at": "2024-11-04T13:04:02Z", + "upvotes": 2, + "comment_count": 0, "resolved": false, "labels": [ - "integration-openai" + "feat-annotation" ], "author": { - "login": "dimitrydesilias", - "html_url": "https://github.com/dimitrydesilias" + "login": "marliessophie", + "html_url": "https://github.com/marliessophie" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3486, - "title": "Bind all multiple hierarchical call against session-id instead of opening multiple threads", - "href": "https://github.com/orgs/langfuse/discussions/3486", - "created_at": "2024-09-26T06:31:20Z", + "number": 4035, + "title": "Feat: De-dupe and show info when adding the same trace/observation to an annotation queue multiple times", + "href": "https://github.com/orgs/langfuse/discussions/4035", + "created_at": "2024-11-04T12:58:59Z", "upvotes": 1, - "comment_count": 3, - "resolved": true, + "comment_count": 1, + "resolved": false, "labels": [ - "integration-python-decorator" + "feat-annotation" ], "author": { - "login": "ajeet6261", - "html_url": "https://github.com/ajeet6261" + "login": "marliessophie", + "html_url": "https://github.com/marliessophie" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3485, - "title": "How to avoid memory leaks due to LangchainCallbackHandler while using userId and sessionId", - "href": "https://github.com/orgs/langfuse/discussions/3485", - "created_at": "2024-09-26T00:07:14Z", - "upvotes": 1, - "comment_count": 6, - "resolved": true, + "number": 4025, + "title": "Diff support for dataset runs view", + "href": "https://github.com/orgs/langfuse/discussions/4025", + "created_at": "2024-11-04T03:48:40Z", + "upvotes": 3, + "comment_count": 0, + "resolved": false, "labels": [ - "integration-langchain", - "feat-users", - "feat-sessions" + "feat-datasets" ], "author": { - "login": "Chengdyc", - "html_url": "https://github.com/Chengdyc" + "login": "saikatmitra91", + "html_url": "https://github.com/saikatmitra91" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3480, - "title": "How to provide a TLS Cert for PGSQL cloud connection in Langfuse docker container?", - "href": "https://github.com/orgs/langfuse/discussions/3480", - "created_at": "2024-09-25T20:44:17Z", + "number": 4019, + "title": "Create Support for gemini models in playground", + "href": "https://github.com/orgs/langfuse/discussions/4019", + "created_at": "2024-11-03T11:12:42Z", "upvotes": 1, "comment_count": 2, - "resolved": true, + "resolved": false, "labels": [ - "self-hosting" + "feat-evals", + "feat-playground" ], "author": { - "login": "barvhaim", - "html_url": "https://github.com/barvhaim" + "login": "anuraj-suman", + "html_url": "https://github.com/anuraj-suman" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3477, - "title": "LangFuse Low Level SDK does not render images by passing the link", - "href": "https://github.com/orgs/langfuse/discussions/3477", - "created_at": "2024-09-25T15:15:54Z", + "number": 4012, + "title": "Duplicate a template prompt to start a new prompt with all the boilerplate prepared", + "href": "https://github.com/orgs/langfuse/discussions/4012", + "created_at": "2024-11-02T15:26:33Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ - "feat-multimodal" + "feat-prompt-management" ], "author": { - "login": "VikramShenoy97", - "html_url": "https://github.com/VikramShenoy97" + "login": "jakelucasnyc", + "html_url": "https://github.com/jakelucasnyc" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3469, - "title": "raise exception when handle_span_events", - "href": "https://github.com/orgs/langfuse/discussions/3469", - "created_at": "2024-09-25T00:56:32Z", + "number": 4009, + "title": "SDK-Python: Get all prompts from LangfuseSDK Client", + "href": "https://github.com/orgs/langfuse/discussions/4009", + "created_at": "2024-11-01T18:39:02Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "nightosong", - "html_url": "https://github.com/nightosong" + "login": "nthanapaisal", + "html_url": "https://github.com/nthanapaisal" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3466, - "title": "How to get costs associated with an API call / user?", - "href": "https://github.com/orgs/langfuse/discussions/3466", - "created_at": "2024-09-24T19:33:56Z", + "number": 4000, + "title": "Support custom aggregated queries through the UI", + "href": "https://github.com/orgs/langfuse/discussions/4000", + "created_at": "2024-11-01T14:19:58Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "emieldatalytica", + "html_url": "https://github.com/emieldatalytica" + }, + "category": "Ideas" + }, + { + "number": 3997, + "title": "Alerts based on metrics (cost, evaluation, user-feedback), trigger webhook/email/slack/...", + "href": "https://github.com/orgs/langfuse/discussions/3997", + "created_at": "2024-11-01T11:25:05Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 3988, + "title": "Change AWS access pattern for Bedrock LLM usage, assume role", + "href": "https://github.com/orgs/langfuse/discussions/3988", + "created_at": "2024-10-31T17:45:48Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "feat-users", - "feat-cost-tracking" + "feat-evals", + "feat-playground" ], "author": { - "login": "punkpeye", - "html_url": "https://github.com/punkpeye" + "login": "j10sanders", + "html_url": "https://github.com/j10sanders" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3465, - "title": "How to run langfuse locally while using a hosted database", - "href": "https://github.com/orgs/langfuse/discussions/3465", - "created_at": "2024-09-24T14:24:29Z", + "number": 3986, + "title": "Support for Atlassian OAuth-Provider", + "href": "https://github.com/orgs/langfuse/discussions/3986", + "created_at": "2024-10-31T16:56:45Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ + "feat-auth", "self-hosting" ], "author": { - "login": "wil0u", - "html_url": "https://github.com/wil0u" + "login": "backface", + "html_url": "https://github.com/backface" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3462, - "title": "how to set user_id or session_id in trace?", - "href": "https://github.com/orgs/langfuse/discussions/3462", - "created_at": "2024-09-24T08:34:59Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 3981, + "title": "Async support for data masking in JS/TS SDK", + "href": "https://github.com/orgs/langfuse/discussions/3981", + "created_at": "2024-10-31T14:06:21Z", + "upvotes": 3, + "comment_count": 3, + "resolved": false, "labels": [ - "integration-python-decorator", - "feat-users", - "feat-sessions" + "feat-data-masking" ], "author": { - "login": "yumc2573", - "html_url": "https://github.com/yumc2573" + "login": "pexxi", + "html_url": "https://github.com/pexxi" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3460, - "title": "Langfuse observation for openai embeddings method", - "href": "https://github.com/orgs/langfuse/discussions/3460", - "created_at": "2024-09-24T06:01:06Z", + "number": 3970, + "title": "Add ability to export and import evaluators between projects", + "href": "https://github.com/orgs/langfuse/discussions/3970", + "created_at": "2024-10-30T16:13:20Z", "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [ + "feat-evals" + ], + "author": { + "login": "j10sanders", + "html_url": "https://github.com/j10sanders" + }, + "category": "Ideas" + }, + { + "number": 3954, + "title": "Decorator: disable tracing at the decorated function level", + "href": "https://github.com/orgs/langfuse/discussions/3954", + "created_at": "2024-10-29T11:45:13Z", + "upvotes": 3, "comment_count": 2, - "resolved": true, + "resolved": false, "labels": [ - "integration-openai", - "integration-python-decorator", - "feat-cost-tracking" + "sdk-python", + "integration-python-decorator" ], "author": { - "login": "simrangulati-jktech", - "html_url": "https://github.com/simrangulati-jktech" + "login": "klemenstraeger", + "html_url": "https://github.com/klemenstraeger" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3446, - "title": "Right way to migrate langfuse deployed on K8s within an AWS account", - "href": "https://github.com/orgs/langfuse/discussions/3446", - "created_at": "2024-09-23T06:32:02Z", + "number": 3941, + "title": "Add keyword highlighting and color coding", + "href": "https://github.com/orgs/langfuse/discussions/3941", + "created_at": "2024-10-28T12:17:38Z", "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [ + "feat-prompt-management" + ], + "author": { + "login": "ignazflam", + "html_url": "https://github.com/ignazflam" + }, + "category": "Ideas" + }, + { + "number": 3935, + "title": "feat: Folder structure for dataset organisation", + "href": "https://github.com/orgs/langfuse/discussions/3935", + "created_at": "2024-10-28T08:23:14Z", + "upvotes": 2, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "self-hosting" + "feat-datasets" ], "author": { - "login": "nithin1995", - "html_url": "https://github.com/nithin1995" + "login": "marliessophie", + "html_url": "https://github.com/marliessophie" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3435, - "title": "Langfuse is inconsistently generating span latencies table in traces greater than 36K entiries", - "href": "https://github.com/orgs/langfuse/discussions/3435", - "created_at": "2024-09-20T18:54:28Z", - "upvotes": 1, - "comment_count": 3, - "resolved": true, + "number": 3918, + "title": "Model-based evaluations triggered by observations", + "href": "https://github.com/orgs/langfuse/discussions/3918", + "created_at": "2024-10-25T14:25:49Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, + "labels": [ + "feat-evals" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 3904, + "title": "Support for Custom SSO Without AUTH_CUSTOM_CLIENT_SECRET and Incorrect Profile Mapping", + "href": "https://github.com/orgs/langfuse/discussions/3904", + "created_at": "2024-10-24T17:07:38Z", + "upvotes": 0, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "databloom", - "html_url": "https://github.com/databloom" + "login": "lucebert", + "html_url": "https://github.com/lucebert" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3429, - "title": "Async version of Langfuse.get_prompt", - "href": "https://github.com/orgs/langfuse/discussions/3429", - "created_at": "2024-09-20T14:26:51Z", - "upvotes": 1, + "number": 3893, + "title": "Allow prompt editing without creating new version (draft mode)", + "href": "https://github.com/orgs/langfuse/discussions/3893", + "created_at": "2024-10-24T08:47:13Z", + "upvotes": 2, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ "feat-prompt-management" ], "author": { - "login": "antoniomdk", - "html_url": "https://github.com/antoniomdk" + "login": "dveyarangi", + "html_url": "https://github.com/dveyarangi" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3420, - "title": "Help setting up GCP host (cloudbuild or console)", - "href": "https://github.com/orgs/langfuse/discussions/3420", - "created_at": "2024-09-20T04:34:35Z", + "number": 3891, + "title": "feat: user consumption broken down by model", + "href": "https://github.com/orgs/langfuse/discussions/3891", + "created_at": "2024-10-24T05:41:12Z", "upvotes": 1, - "comment_count": 3, + "comment_count": 0, "resolved": false, - "labels": [ - "self-hosting" - ], + "labels": [], "author": { - "login": "elliottower", - "html_url": "https://github.com/elliottower" + "login": "belphegor-s", + "html_url": "https://github.com/belphegor-s" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3410, - "title": "Configuring Evaluation with \"Correctness\" Template & Python Code Invocation", - "href": "https://github.com/orgs/langfuse/discussions/3410", - "created_at": "2024-09-19T09:44:42Z", - "upvotes": 1, - "comment_count": 3, - "resolved": true, + "number": 3885, + "title": "Trace -> Playground: Populate variable fields to make input iteration easier.", + "href": "https://github.com/orgs/langfuse/discussions/3885", + "created_at": "2024-10-23T16:26:36Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, "labels": [ - "feat-scores" + "feat-prompt-management", + "feat-playground" ], "author": { - "login": "zoulou00", - "html_url": "https://github.com/zoulou00" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3406, - "title": "Module not found: Can't resolve '@langfuse'", - "href": "https://github.com/orgs/langfuse/discussions/3406", - "created_at": "2024-09-19T05:57:04Z", + "number": 3875, + "title": "add gpt-4o-2024-08-06 model to langfuse models list", + "href": "https://github.com/orgs/langfuse/discussions/3875", + "created_at": "2024-10-23T10:54:01Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "self-hosting" + "✅ Done" ], "author": { - "login": "christosuster", - "html_url": "https://github.com/christosuster" + "login": "alex-stoica", + "html_url": "https://github.com/alex-stoica" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3397, - "title": "tokens and usage cost", - "href": "https://github.com/orgs/langfuse/discussions/3397", - "created_at": "2024-09-18T13:05:07Z", + "number": 3874, + "title": "Ensure prompt validation when attaching prompts to generations", + "href": "https://github.com/orgs/langfuse/discussions/3874", + "created_at": "2024-10-23T10:48:38Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, + "comment_count": 0, + "resolved": false, "labels": [ - "feat-cost-tracking" + "feat-prompt-management" ], "author": { - "login": "Karanaiinfox", - "html_url": "https://github.com/Karanaiinfox" + "login": "alex-stoica", + "html_url": "https://github.com/alex-stoica" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3393, - "title": "Self-Host evaluation feature", - "href": "https://github.com/orgs/langfuse/discussions/3393", - "created_at": "2024-09-18T07:55:30Z", - "upvotes": 1, + "number": 3866, + "title": "Support for OpenAI's cached input tokens", + "href": "https://github.com/orgs/langfuse/discussions/3866", + "created_at": "2024-10-22T19:38:33Z", + "upvotes": 4, "comment_count": 2, - "resolved": true, + "resolved": false, "labels": [ - "feat-evals" + "feat-cost-tracking" ], "author": { - "login": "MayankBitcot", - "html_url": "https://github.com/MayankBitcot" + "login": "anatolec", + "html_url": "https://github.com/anatolec" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3392, - "title": "not able to track entire request end to end in langchain + langfuse", - "href": "https://github.com/orgs/langfuse/discussions/3392", - "created_at": "2024-09-18T07:08:49Z", + "number": 3862, + "title": "python generator request - return values", + "href": "https://github.com/orgs/langfuse/discussions/3862", + "created_at": "2024-10-22T11:43:22Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 1, "resolved": false, "labels": [ - "integration-langchain" + "integration-python-decorator" ], "author": { - "login": "jaiswalvineet", - "html_url": "https://github.com/jaiswalvineet" + "login": "benji-finster", + "html_url": "https://github.com/benji-finster" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3379, - "title": "Feedback for “Langfuse Documentation”", - "href": "https://github.com/orgs/langfuse/discussions/3379", - "created_at": "2024-09-17T07:44:56Z", + "number": 3842, + "title": "Scores: Conditional Annotation", + "href": "https://github.com/orgs/langfuse/discussions/3842", + "created_at": "2024-10-21T08:37:48Z", "upvotes": 1, - "comment_count": 3, + "comment_count": 0, "resolved": false, - "labels": [], + "labels": [ + "feat-scores", + "feat-annotation" + ], "author": { - "login": "Preet1234-ux", - "html_url": "https://github.com/Preet1234-ux" + "login": "marliessophie", + "html_url": "https://github.com/marliessophie" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3364, - "title": "Hey want to change the Eval Templates name, can we do it from UI", - "href": "https://github.com/orgs/langfuse/discussions/3364", - "created_at": "2024-09-16T08:07:30Z", + "number": 3841, + "title": "Annotation Queues: define optional/mandatory score configs by queue", + "href": "https://github.com/orgs/langfuse/discussions/3841", + "created_at": "2024-10-21T08:32:46Z", "upvotes": 1, - "comment_count": 3, - "resolved": true, + "comment_count": 0, + "resolved": false, "labels": [ - "feat-evals" + "feat-annotation" ], "author": { - "login": "divyanshubhuta", - "html_url": "https://github.com/divyanshubhuta" + "login": "marliessophie", + "html_url": "https://github.com/marliessophie" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3344, - "title": "How to use langfuse with LangGraph Studio", - "href": "https://github.com/orgs/langfuse/discussions/3344", - "created_at": "2024-09-13T11:35:53Z", + "number": 3840, + "title": "Scores: support for recording multiple choice selection as score value", + "href": "https://github.com/orgs/langfuse/discussions/3840", + "created_at": "2024-10-21T08:20:01Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 0, "resolved": false, "labels": [ - "integration-langchain" + "feat-scores" ], "author": { - "login": "debkanchan", - "html_url": "https://github.com/debkanchan" + "login": "marliessophie", + "html_url": "https://github.com/marliessophie" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3321, - "title": "Session ids for Langserve", - "href": "https://github.com/orgs/langfuse/discussions/3321", - "created_at": "2024-09-11T22:40:01Z", - "upvotes": 1, - "comment_count": 1, + "number": 3839, + "title": "Prompts: ability to share prompt or playground session", + "href": "https://github.com/orgs/langfuse/discussions/3839", + "created_at": "2024-10-21T08:00:15Z", + "upvotes": 2, + "comment_count": 0, "resolved": false, "labels": [ - "integration-langchain", - "feat-sessions" + "feat-prompt-management" ], "author": { - "login": "YaphetKG", - "html_url": "https://github.com/YaphetKG" + "login": "marliessophie", + "html_url": "https://github.com/marliessophie" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3313, - "title": "how to pass custom user managed model name to calculate the cost via langchain", - "href": "https://github.com/orgs/langfuse/discussions/3313", - "created_at": "2024-09-11T13:25:48Z", + "number": 3836, + "title": "Distinguishing various steps", + "href": "https://github.com/orgs/langfuse/discussions/3836", + "created_at": "2024-10-20T16:54:32Z", "upvotes": 1, - "comment_count": 3, - "resolved": true, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "ajram23", + "html_url": "https://github.com/ajram23" + }, + "category": "Ideas" + }, + { + "number": 3818, + "title": "Filter by status in dataset items table", + "href": "https://github.com/orgs/langfuse/discussions/3818", + "created_at": "2024-10-18T03:17:50Z", + "upvotes": 2, + "comment_count": 2, + "resolved": false, "labels": [ - "integration-langchain", - "feat-cost-tracking" + "feat-datasets" ], "author": { - "login": "jaiswalvineet", - "html_url": "https://github.com/jaiswalvineet" + "login": "FrankyCTY", + "html_url": "https://github.com/FrankyCTY" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3308, - "title": "Automated Prompt Management across Environments", - "href": "https://github.com/orgs/langfuse/discussions/3308", - "created_at": "2024-09-11T09:31:26Z", + "number": 3817, + "title": "Add generic types for prompt variables in the sdk clients, e.g. `langfuse.getPrompt<{input: string}>(\"prompt name\")`", + "href": "https://github.com/orgs/langfuse/discussions/3817", + "created_at": "2024-10-17T23:40:45Z", "upvotes": 1, - "comment_count": 1, - "resolved": true, + "comment_count": 0, + "resolved": false, "labels": [ "feat-prompt-management" ], "author": { - "login": "jonnyforsterMSG", - "html_url": "https://github.com/jonnyforsterMSG" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3307, - "title": "DataSet Scores are not being displayed", - "href": "https://github.com/orgs/langfuse/discussions/3307", - "created_at": "2024-09-11T08:46:31Z", + "number": 3801, + "title": "Add image type with image_url for vision apo", + "href": "https://github.com/orgs/langfuse/discussions/3801", + "created_at": "2024-10-17T15:27:23Z", "upvotes": 1, - "comment_count": 3, - "resolved": true, + "comment_count": 1, + "resolved": false, "labels": [ - "feat-datasets" + "feat-prompt-management", + "feat-playground" ], "author": { - "login": "MaxYaz", - "html_url": "https://github.com/MaxYaz" + "login": "profikid", + "html_url": "https://github.com/profikid" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3305, - "title": "bug: cost usage are not getting captured automatically from llm response", - "href": "https://github.com/orgs/langfuse/discussions/3305", - "created_at": "2024-09-11T05:02:03Z", - "upvotes": 1, - "comment_count": 2, + "number": 3798, + "title": "Versioning/edit of Evaluator Configuration", + "href": "https://github.com/orgs/langfuse/discussions/3798", + "created_at": "2024-10-17T11:59:39Z", + "upvotes": 3, + "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "feat-evals" + ], "author": { - "login": "ajeet6261", - "html_url": "https://github.com/ajeet6261" + "login": "filipmihal", + "html_url": "https://github.com/filipmihal" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3271, - "title": "Understanding pricing model (self-hosting vs cloud serving) from security perspective", - "href": "https://github.com/orgs/langfuse/discussions/3271", - "created_at": "2024-09-09T14:07:32Z", - "upvotes": 1, - "comment_count": 2, + "number": 3782, + "title": "Measure time to last generated token", + "href": "https://github.com/orgs/langfuse/discussions/3782", + "created_at": "2024-10-16T17:45:12Z", + "upvotes": 2, + "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "uahmad235", - "html_url": "https://github.com/uahmad235" + "login": "dsherry", + "html_url": "https://github.com/dsherry" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3267, - "title": "python decorator grouping in trace when using FastAPI Server Sent Events and Langraph + custom function", - "href": "https://github.com/orgs/langfuse/discussions/3267", - "created_at": "2024-09-09T11:10:00Z", + "number": 3772, + "title": "Support annotation role permission to only access Annotation Queue feature", + "href": "https://github.com/orgs/langfuse/discussions/3772", + "created_at": "2024-10-16T03:49:43Z", "upvotes": 1, - "comment_count": 4, + "comment_count": 1, "resolved": false, "labels": [ - "integration-langchain", - "integration-python-decorator" + "feat-annotation" ], "author": { - "login": "lixxvsky", - "html_url": "https://github.com/lixxvsky" + "login": "ytqh", + "html_url": "https://github.com/ytqh" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3254, - "title": "Vercel AI SDK and Svelte. How to push traces intermittently back to langfuse", - "href": "https://github.com/orgs/langfuse/discussions/3254", - "created_at": "2024-09-06T13:37:17Z", - "upvotes": 1, - "comment_count": 1, + "number": 3765, + "title": "OpenAI integration support for realtime api", + "href": "https://github.com/orgs/langfuse/discussions/3765", + "created_at": "2024-10-15T21:35:13Z", + "upvotes": 5, + "comment_count": 3, "resolved": false, "labels": [ - "integration-vercel-ai-sdk" + "integration-openai" ], "author": { - "login": "oghaAI", - "html_url": "https://github.com/oghaAI" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3210, - "title": "When using callbacks, the langfuse_context.update_current_trace method does not function properly.", - "href": "https://github.com/orgs/langfuse/discussions/3210", - "created_at": "2024-09-03T10:29:29Z", + "number": 3761, + "title": "DsPY type optimization functionality", + "href": "https://github.com/orgs/langfuse/discussions/3761", + "created_at": "2024-10-15T20:02:39Z", "upvotes": 1, - "comment_count": 4, + "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "integration-dspy" + ], "author": { - "login": "hgliyuhao", - "html_url": "https://github.com/hgliyuhao" + "login": "nikshepsvn", + "html_url": "https://github.com/nikshepsvn" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3207, - "title": "change of data region", - "href": "https://github.com/orgs/langfuse/discussions/3207", - "created_at": "2024-09-03T06:06:48Z", - "upvotes": 1, + "number": 3755, + "title": "Intergrate with Ragflow", + "href": "https://github.com/orgs/langfuse/discussions/3755", + "created_at": "2024-10-15T06:54:12Z", + "upvotes": 3, "comment_count": 1, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "integrations" + ], "author": { - "login": "divyanshubhuta", - "html_url": "https://github.com/divyanshubhuta" + "login": "chuwe000", + "html_url": "https://github.com/chuwe000" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3191, - "title": "Evaluation config setup related query", - "href": "https://github.com/orgs/langfuse/discussions/3191", - "created_at": "2024-09-02T14:48:01Z", + "number": 3802, + "title": "Get Observation IDs of sub chains when using @observe decorator combined with Langchain", + "href": "https://github.com/orgs/langfuse/discussions/3802", + "created_at": "2024-10-14T14:22:38Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 4, "resolved": false, - "labels": [], + "labels": [ + "sdk-python", + "integration-langchain", + "integration-python-decorator" + ], "author": { - "login": "divyanshubhuta", - "html_url": "https://github.com/divyanshubhuta" + "login": "guusfrenken-wk", + "html_url": "https://github.com/guusfrenken-wk" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3182, - "title": "What does `version` means when ingesting trace?", - "href": "https://github.com/orgs/langfuse/discussions/3182", - "created_at": "2024-08-31T20:44:26Z", + "number": 3725, + "title": "observe context manager", + "href": "https://github.com/orgs/langfuse/discussions/3725", + "created_at": "2024-10-12T07:33:09Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, + "comment_count": 1, + "resolved": false, "labels": [], "author": { - "login": "STRRL", - "html_url": "https://github.com/STRRL" + "login": "eliorc", + "html_url": "https://github.com/eliorc" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3176, - "title": "Get all the generations, events, etc. under Trace", - "href": "https://github.com/orgs/langfuse/discussions/3176", - "created_at": "2024-08-31T02:10:28Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 3723, + "title": "Terminal version of Langfuse (Langfuse CLI)", + "href": "https://github.com/orgs/langfuse/discussions/3723", + "created_at": "2024-10-11T21:06:48Z", + "upvotes": 3, + "comment_count": 2, + "resolved": false, "labels": [], "author": { - "login": "bytecod3r", - "html_url": "https://github.com/bytecod3r" + "login": "Shahin-rmz", + "html_url": "https://github.com/Shahin-rmz" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3168, - "title": "usage pattern for new llamaindex integration", - "href": "https://github.com/orgs/langfuse/discussions/3168", - "created_at": "2024-08-30T20:23:17Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 3681, + "title": "Evalution of a prompt by a LLM", + "href": "https://github.com/orgs/langfuse/discussions/3681", + "created_at": "2024-10-09T19:17:30Z", + "upvotes": 3, + "comment_count": 0, + "resolved": false, "labels": [ - "integraton-llamaindex" + "feat-prompt-management" ], "author": { - "login": "erik-squared", - "html_url": "https://github.com/erik-squared" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3132, - "title": "Tracing ChatGoogleGenerativeAI calls in langchain doesn't return usage metadata", - "href": "https://github.com/orgs/langfuse/discussions/3132", - "created_at": "2024-08-29T13:09:13Z", - "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [ - "integration-langchain" - ], + "number": 3663, + "title": "Dashboard: Add time to first token chart (ttft)", + "href": "https://github.com/orgs/langfuse/discussions/3663", + "created_at": "2024-10-08T23:56:42Z", + "upvotes": 6, + "comment_count": 0, + "resolved": false, + "labels": [ + "feat-dashboard" + ], "author": { - "login": "NeerajG03", - "html_url": "https://github.com/NeerajG03" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3124, - "title": "Generation does not come under @observe trace", - "href": "https://github.com/orgs/langfuse/discussions/3124", - "created_at": "2024-08-29T00:28:14Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 3646, + "title": "Table sorting and filtering in database runs", + "href": "https://github.com/orgs/langfuse/discussions/3646", + "created_at": "2024-10-08T11:13:52Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "SatheeshJM", - "html_url": "https://github.com/SatheeshJM" + "login": "FlorDonnaSanders", + "html_url": "https://github.com/FlorDonnaSanders" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3120, - "title": "Langfuse 2.74.0 integration with Flowise 2.0.5", - "href": "https://github.com/orgs/langfuse/discussions/3120", - "created_at": "2024-08-28T20:18:19Z", + "number": 3618, + "title": "User Aliases", + "href": "https://github.com/orgs/langfuse/discussions/3618", + "created_at": "2024-10-07T07:51:49Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "harshad-c1", - "html_url": "https://github.com/harshad-c1" + "login": "FlorDonnaSanders", + "html_url": "https://github.com/FlorDonnaSanders" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3110, - "title": "How to set SMTP_CONNECTION_URL and reset password?", - "href": "https://github.com/orgs/langfuse/discussions/3110", - "created_at": "2024-08-28T10:05:06Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 3576, + "title": "feat: edit custom model definitions", + "href": "https://github.com/orgs/langfuse/discussions/3576", + "created_at": "2024-10-04T12:40:54Z", + "upvotes": 3, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "zs856", - "html_url": "https://github.com/zs856" + "login": "nialldevlin1", + "html_url": "https://github.com/nialldevlin1" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3105, - "title": "Dockerfile of langfuse/langfuse:2 image", - "href": "https://github.com/orgs/langfuse/discussions/3105", - "created_at": "2024-08-28T00:13:57Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 3558, + "title": "Dashboard: split prompt/completion/total tokens", + "href": "https://github.com/orgs/langfuse/discussions/3558", + "created_at": "2024-10-02T02:17:47Z", + "upvotes": 6, + "comment_count": 0, + "resolved": false, "labels": [ - "self-hosting" + "feat-dashboard" ], "author": { - "login": "pparreira", - "html_url": "https://github.com/pparreira" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3100, - "title": "Time to first token is not populating in trace detail or generations view", - "href": "https://github.com/orgs/langfuse/discussions/3100", - "created_at": "2024-08-27T20:12:14Z", - "upvotes": 1, - "comment_count": 2, + "number": 3551, + "title": "Metrics API to support the OpenMetrics format", + "href": "https://github.com/orgs/langfuse/discussions/3551", + "created_at": "2024-10-01T15:03:02Z", + "upvotes": 3, + "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "databloom", - "html_url": "https://github.com/databloom" + "login": "shukawam", + "html_url": "https://github.com/shukawam" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3099, - "title": "Pulling prompts by tag?", - "href": "https://github.com/orgs/langfuse/discussions/3099", - "created_at": "2024-08-27T20:01:45Z", - "upvotes": 1, + "number": 3550, + "title": "Asynchronous Langfuse Client.", + "href": "https://github.com/orgs/langfuse/discussions/3550", + "created_at": "2024-10-01T14:03:48Z", + "upvotes": 8, "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "sdk-python" + ], "author": { - "login": "mayajosifo", - "html_url": "https://github.com/mayajosifo" + "login": "fimselamse", + "html_url": "https://github.com/fimselamse" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3092, - "title": "Deployment into Azure", - "href": "https://github.com/orgs/langfuse/discussions/3092", - "created_at": "2024-08-27T10:05:32Z", + "number": 3546, + "title": "Add SCIM support for user/role/identity management", + "href": "https://github.com/orgs/langfuse/discussions/3546", + "created_at": "2024-10-01T02:18:33Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, + "comment_count": 1, + "resolved": false, "labels": [ - "self-hosting" + "feat-api", + "security" ], "author": { - "login": "GaryFail", - "html_url": "https://github.com/GaryFail" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3079, - "title": "How to change the Level to ERROR when there is an error in SPAN?", - "href": "https://github.com/orgs/langfuse/discussions/3079", - "created_at": "2024-08-26T15:46:23Z", - "upvotes": 3, - "comment_count": 2, - "resolved": true, + "number": 3538, + "title": "Vector search for datasets for few-shot prompting", + "href": "https://github.com/orgs/langfuse/discussions/3538", + "created_at": "2024-09-30T17:31:18Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, "labels": [ - "feat-log-levels" + "feat-datasets" ], "author": { - "login": "kftam1994", - "html_url": "https://github.com/kftam1994" + "login": "antoniomdk", + "html_url": "https://github.com/antoniomdk" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3056, - "title": "Support for configuring SMTP email at project level", - "href": "https://github.com/orgs/langfuse/discussions/3056", - "created_at": "2024-08-23T14:41:45Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 3529, + "title": "Sampling for JS/TS SDKs and integrations", + "href": "https://github.com/orgs/langfuse/discussions/3529", + "created_at": "2024-09-30T05:44:07Z", + "upvotes": 8, + "comment_count": 0, + "resolved": false, "labels": [ - "self-hosting" + "feat-sampling" ], "author": { - "login": "rvndbalaji", - "html_url": "https://github.com/rvndbalaji" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 3003, - "title": "Example GenAI bot with guardrails", - "href": "https://github.com/orgs/langfuse/discussions/3003", - "created_at": "2024-08-22T06:37:29Z", + "number": 3528, + "title": "Add saved filters config", + "href": "https://github.com/orgs/langfuse/discussions/3528", + "created_at": "2024-09-30T05:36:44Z", "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "ui" + ], "author": { - "login": "wangxj03", - "html_url": "https://github.com/wangxj03" + "login": "emaugars12", + "html_url": "https://github.com/emaugars12" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2990, - "title": "[Question] using langfuse with llama_index", - "href": "https://github.com/orgs/langfuse/discussions/2990", - "created_at": "2024-08-21T08:00:59Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 3527, + "title": "Show prompt-level aggregate metrics on the prompts table", + "href": "https://github.com/orgs/langfuse/discussions/3527", + "created_at": "2024-09-30T00:33:43Z", + "upvotes": 4, + "comment_count": 0, + "resolved": false, "labels": [ - "integraton-llamaindex" + "feat-prompt-management" ], "author": { - "login": "nightosong", - "html_url": "https://github.com/nightosong" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2988, - "title": "Non-langchain generation nested within LangGraph execution", - "href": "https://github.com/orgs/langfuse/discussions/2988", - "created_at": "2024-08-21T05:13:51Z", + "number": 3524, + "title": "Field-level selection for input/output filtering in decorator instead of using update_current_observation/trace", + "href": "https://github.com/orgs/langfuse/discussions/3524", + "created_at": "2024-09-29T08:28:45Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, + "comment_count": 4, + "resolved": false, "labels": [ - "integration-langchain" + "integration-python-decorator" ], "author": { - "login": "mrdrprofuroboros", - "html_url": "https://github.com/mrdrprofuroboros" + "login": "amir-mic-lin", + "html_url": "https://github.com/amir-mic-lin" }, - "category": "Support" - }, - { - "number": 2983, - "title": "Tracing directly to queue instead of http api", - "href": "https://github.com/orgs/langfuse/discussions/2983", - "created_at": "2024-08-20T14:33:17Z", - "upvotes": 0, - "comment_count": 1, - "resolved": true, - "labels": [ - "self-hosting" - ], - "author": { - "login": "exotikh3", - "html_url": "https://github.com/exotikh3" - }, - "category": "Support" + "category": "Ideas" }, { - "number": 2959, - "title": "Duplicate usage data in observation api endpoint response", - "href": "https://github.com/orgs/langfuse/discussions/2959", - "created_at": "2024-08-16T10:57:00Z", + "number": 3508, + "title": "feat: organization level dashboard", + "href": "https://github.com/orgs/langfuse/discussions/3508", + "created_at": "2024-09-27T13:48:13Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, + "comment_count": 1, + "resolved": false, "labels": [], "author": { - "login": "jonnyforsterMSG", - "html_url": "https://github.com/jonnyforsterMSG" + "login": "nialldevlin1", + "html_url": "https://github.com/nialldevlin1" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2958, - "title": "Time to first token query", - "href": "https://github.com/orgs/langfuse/discussions/2958", - "created_at": "2024-08-16T10:08:42Z", + "number": 3478, + "title": "TextGrad integration", + "href": "https://github.com/orgs/langfuse/discussions/3478", + "created_at": "2024-09-25T16:13:45Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "integrations" + ], "author": { - "login": "GaryFail", - "html_url": "https://github.com/GaryFail" + "login": "sakthi-geek", + "html_url": "https://github.com/sakthi-geek" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2952, - "title": "Locally hosted PrivateGPT + pgpt_python + Langfuse", - "href": "https://github.com/orgs/langfuse/discussions/2952", - "created_at": "2024-08-15T15:12:16Z", - "upvotes": 1, - "comment_count": 1, + "number": 3476, + "title": "Chart: usage/metrics grouped by tags", + "href": "https://github.com/orgs/langfuse/discussions/3476", + "created_at": "2024-09-25T13:54:14Z", + "upvotes": 2, + "comment_count": 0, "resolved": false, - "labels": [], + "labels": [ + "feat-dashboard", + "feat-tags" + ], "author": { - "login": "qdingle404", - "html_url": "https://github.com/qdingle404" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2945, - "title": "Unit of token count for cost analysis", - "href": "https://github.com/orgs/langfuse/discussions/2945", - "created_at": "2024-08-15T09:33:59Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, - "labels": [], + "number": 3472, + "title": "Dashboard: add chart for unique users (MAU/WAU/DAU)", + "href": "https://github.com/orgs/langfuse/discussions/3472", + "created_at": "2024-09-25T11:37:30Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, + "labels": [ + "feat-dashboard", + "feat-users" + ], "author": { - "login": "thomasjv799", - "html_url": "https://github.com/thomasjv799" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2933, - "title": "how to return trace_id in openai completion response when using langfuse as a proxy in litellm?", - "href": "https://github.com/orgs/langfuse/discussions/2933", - "created_at": "2024-08-14T07:52:30Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 3447, + "title": "Playground: Move messages / add messages in-between others", + "href": "https://github.com/orgs/langfuse/discussions/3447", + "created_at": "2024-09-23T09:16:23Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, "labels": [ - "integration-litellm" + "feat-playground" ], "author": { - "login": "octadion", - "html_url": "https://github.com/octadion" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2927, - "title": "Span created with Langchain not showing up in traces.", - "href": "https://github.com/orgs/langfuse/discussions/2927", - "created_at": "2024-08-13T20:32:35Z", + "number": 3443, + "title": "Why not extend observeOpenAI to support message-level user id?", + "href": "https://github.com/orgs/langfuse/discussions/3443", + "created_at": "2024-09-21T23:57:57Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [ - "integration-langchain" - ], + "comment_count": 1, + "resolved": false, + "labels": [], "author": { - "login": "HardKothari", - "html_url": "https://github.com/HardKothari" + "login": "derrickstaten", + "html_url": "https://github.com/derrickstaten" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2909, - "title": "Change port database in file docker-compose.yml", - "href": "https://github.com/orgs/langfuse/discussions/2909", - "created_at": "2024-08-13T08:05:37Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 3439, + "title": "Filtering dataset items", + "href": "https://github.com/orgs/langfuse/discussions/3439", + "created_at": "2024-09-21T01:51:33Z", + "upvotes": 3, + "comment_count": 0, + "resolved": false, "labels": [ - "self-hosting" + "feat-datasets" ], "author": { - "login": "hungvipqt15", - "html_url": "https://github.com/hungvipqt15" + "login": "emaugars12", + "html_url": "https://github.com/emaugars12" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2907, - "title": "Change port connection in docker compose", - "href": "https://github.com/orgs/langfuse/discussions/2907", - "created_at": "2024-08-13T06:40:30Z", - "upvotes": 1, - "comment_count": 1, + "number": 3438, + "title": "Support export for Dataset Items", + "href": "https://github.com/orgs/langfuse/discussions/3438", + "created_at": "2024-09-20T22:57:21Z", + "upvotes": 4, + "comment_count": 0, "resolved": false, "labels": [ - "self-hosting" + "feat-datasets" ], "author": { - "login": "hungvipqt15", - "html_url": "https://github.com/hungvipqt15" + "login": "uladkaminski", + "html_url": "https://github.com/uladkaminski" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2904, - "title": "How to append current trace when calling function second time?", - "href": "https://github.com/orgs/langfuse/discussions/2904", - "created_at": "2024-08-12T15:12:22Z", + "number": 3436, + "title": "Prompt label promotion via api/sdk", + "href": "https://github.com/orgs/langfuse/discussions/3436", + "created_at": "2024-09-20T21:32:07Z", "upvotes": 2, - "comment_count": 2, - "resolved": true, - "labels": [ - "integration-python-decorator" - ], + "comment_count": 1, + "resolved": false, + "labels": [], "author": { - "login": "nathan-vo810", - "html_url": "https://github.com/nathan-vo810" + "login": "mrdrprofuroboros", + "html_url": "https://github.com/mrdrprofuroboros" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2895, - "title": "How to update an event", - "href": "https://github.com/orgs/langfuse/discussions/2895", - "created_at": "2024-08-11T16:51:18Z", + "number": 3431, + "title": "3rd option for \"sharing\" traces publicly", + "href": "https://github.com/orgs/langfuse/discussions/3431", + "created_at": "2024-09-20T16:29:28Z", "upvotes": 1, - "comment_count": 1, - "resolved": true, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "bytecod3r", - "html_url": "https://github.com/bytecod3r" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2888, - "title": "How to change the level of a trace?", - "href": "https://github.com/orgs/langfuse/discussions/2888", - "created_at": "2024-08-09T14:35:34Z", - "upvotes": 3, - "comment_count": 2, - "resolved": true, + "number": 3415, + "title": "Only use traces in the dataset to render score columns", + "href": "https://github.com/orgs/langfuse/discussions/3415", + "created_at": "2024-09-19T17:36:44Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, "labels": [ - "feat-log-levels" + "feat-datasets" ], "author": { - "login": "ldbolanos", - "html_url": "https://github.com/ldbolanos" + "login": "micahstairs", + "html_url": "https://github.com/micahstairs" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2879, - "title": "ERROR:langfuse:status_code: 404, body: {'message': 'Trace not found within authorized project', 'error': 'LangfuseNotFoundError'}", - "href": "https://github.com/orgs/langfuse/discussions/2879", - "created_at": "2024-08-09T09:31:33Z", - "upvotes": 1, - "comment_count": 3, - "resolved": false, - "labels": [], - "author": { - "login": "nithin1995", - "html_url": "https://github.com/nithin1995" - }, - "category": "Support" - }, - { - "number": 2874, - "title": "Does langfuse trace parallel api calls? I tried a sample with parallel call but it didn't traced.", - "href": "https://github.com/orgs/langfuse/discussions/2874", - "created_at": "2024-08-09T05:09:26Z", + "number": 3412, + "title": "Source code versioning and automatic statistics caluclation from scores", + "href": "https://github.com/orgs/langfuse/discussions/3412", + "created_at": "2024-09-19T10:44:02Z", "upvotes": 1, - "comment_count": 4, + "comment_count": 1, "resolved": false, - "labels": [], - "author": { - "login": "ksundarraj-c-rpx", - "html_url": "https://github.com/ksundarraj-c-rpx" - }, - "category": "Support" - }, - { - "number": 2871, - "title": "Self-hosted Langfuse running as a Google cloud service not showing traces", - "href": "https://github.com/orgs/langfuse/discussions/2871", - "created_at": "2024-08-08T13:40:34Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, "labels": [ - "🐞❔ unconfirmed bug" + "feat-scores" ], "author": { - "login": "SectumPsempra", - "html_url": "https://github.com/SectumPsempra" + "login": "ge28yen", + "html_url": "https://github.com/ge28yen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2867, - "title": "Using the API to record traces from multiple platforms?", - "href": "https://github.com/orgs/langfuse/discussions/2867", - "created_at": "2024-08-08T13:15:49Z", - "upvotes": 1, + "number": 3409, + "title": "Add graph view for LangGraph traces", + "href": "https://github.com/orgs/langfuse/discussions/3409", + "created_at": "2024-09-19T07:55:02Z", + "upvotes": 5, "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "integration-langchain" + ], "author": { - "login": "appliraz", - "html_url": "https://github.com/appliraz" + "login": "hassiebp", + "html_url": "https://github.com/hassiebp" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2858, - "title": "Langfuse observeOpenAI not logging generations using new zodResponseFormat.", - "href": "https://github.com/orgs/langfuse/discussions/2858", - "created_at": "2024-08-07T21:45:41Z", - "upvotes": 1, + "number": 3402, + "title": "Mask / redact PII from traces logged to langfuse", + "href": "https://github.com/orgs/langfuse/discussions/3402", + "created_at": "2024-09-18T21:04:06Z", + "upvotes": 6, "comment_count": 3, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "✅ Done", + "security" + ], "author": { - "login": "fabstu", - "html_url": "https://github.com/fabstu" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2852, - "title": "How run Langfuse evaluations over specifics spans?", - "href": "https://github.com/orgs/langfuse/discussions/2852", - "created_at": "2024-08-07T13:40:02Z", + "number": 3401, + "title": "Make compile and get_langchain_prompt interoperable when using a prompt from langfuse in langchain", + "href": "https://github.com/orgs/langfuse/discussions/3401", + "created_at": "2024-09-18T21:03:20Z", "upvotes": 1, "comment_count": 2, - "resolved": true, + "resolved": false, "labels": [ + "feat-prompt-management", "integration-langchain", - "feat-evals" + "✅ Done" ], "author": { - "login": "joaoCrulhas", - "html_url": "https://github.com/joaoCrulhas" + "login": "ajram23", + "html_url": "https://github.com/ajram23" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2844, - "title": "LangFuse not logging LlamaIndex events", - "href": "https://github.com/orgs/langfuse/discussions/2844", - "created_at": "2024-08-07T10:46:19Z", - "upvotes": 2, - "comment_count": 3, + "number": 3396, + "title": "Better mustache/jinja support in langfuse playground", + "href": "https://github.com/orgs/langfuse/discussions/3396", + "created_at": "2024-09-18T11:54:28Z", + "upvotes": 3, + "comment_count": 2, "resolved": false, "labels": [ - "integraton-llamaindex" + "feat-playground" ], "author": { - "login": "adieyal", - "html_url": "https://github.com/adieyal" + "login": "FlorDonnaSanders", + "html_url": "https://github.com/FlorDonnaSanders" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2830, - "title": "UpdateRoot in the callback handler seems not work", - "href": "https://github.com/orgs/langfuse/discussions/2830", - "created_at": "2024-08-06T08:58:25Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 3395, + "title": "Add fine-grained filtering options in python `fetch_traces` API to match web UI", + "href": "https://github.com/orgs/langfuse/discussions/3395", + "created_at": "2024-09-18T11:18:20Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "joaoCrulhas", - "html_url": "https://github.com/joaoCrulhas" + "login": "evangriffiths", + "html_url": "https://github.com/evangriffiths" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2828, - "title": "Issue: Integration of Langfuse with DSPy Framework - Zero Values for Cost and Token Usage", - "href": "https://github.com/orgs/langfuse/discussions/2828", - "created_at": "2024-08-06T05:55:30Z", + "number": 3376, + "title": "Allow LangchainCallbackHandler to specify custom input/output?", + "href": "https://github.com/orgs/langfuse/discussions/3376", + "created_at": "2024-09-16T23:45:18Z", "upvotes": 1, - "comment_count": 3, - "resolved": true, + "comment_count": 1, + "resolved": false, "labels": [ - "integration-dspy" + "integration-langchain" ], "author": { - "login": "mahitha-29", - "html_url": "https://github.com/mahitha-29" + "login": "xxkennyxu", + "html_url": "https://github.com/xxkennyxu" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2817, - "title": "Praise for the Langfuse library! 🚀", - "href": "https://github.com/orgs/langfuse/discussions/2817", - "created_at": "2024-08-03T10:53:41Z", + "number": 3375, + "title": "Promptfoo integration", + "href": "https://github.com/orgs/langfuse/discussions/3375", + "created_at": "2024-09-16T23:34:34Z", "upvotes": 2, "comment_count": 1, - "resolved": true, - "labels": [], - "author": { - "login": "ttamg", - "html_url": "https://github.com/ttamg" - }, - "category": "Support" - }, - { - "number": 2809, - "title": "No space left on device db error", - "href": "https://github.com/orgs/langfuse/discussions/2809", - "created_at": "2024-08-01T15:10:52Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "resolved": false, "labels": [ - "self-hosting" + "integrations" ], "author": { - "login": "nithin1995", - "html_url": "https://github.com/nithin1995" + "login": "aiseei", + "html_url": "https://github.com/aiseei" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2808, - "title": "Dynamic prompt generation", - "href": "https://github.com/orgs/langfuse/discussions/2808", - "created_at": "2024-08-01T14:41:48Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 3367, + "title": "Default closed dropdown view in trace details", + "href": "https://github.com/orgs/langfuse/discussions/3367", + "created_at": "2024-09-16T12:47:26Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, "labels": [ - "feat-prompt-management" + "ui" ], "author": { - "login": "LLazzar", - "html_url": "https://github.com/LLazzar" + "login": "jannikmaierhoefer", + "html_url": "https://github.com/jannikmaierhoefer" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2801, - "title": "Unable to update generation span after LLM invocation", - "href": "https://github.com/orgs/langfuse/discussions/2801", - "created_at": "2024-08-01T03:23:15Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 3363, + "title": "Dashboard: TPM chart", + "href": "https://github.com/orgs/langfuse/discussions/3363", + "created_at": "2024-09-16T07:53:52Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, "labels": [ - "integration-langchain" + "feat-dashboard" ], "author": { - "login": "Heucles", - "html_url": "https://github.com/Heucles" + "login": "afonsomatos", + "html_url": "https://github.com/afonsomatos" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2787, - "title": "Self-hosted (Railway) Authorization error (401) while connecting to host", - "href": "https://github.com/orgs/langfuse/discussions/2787", - "created_at": "2024-07-30T19:23:59Z", + "number": 3361, + "title": "Group Similar or Consecutive Traces", + "href": "https://github.com/orgs/langfuse/discussions/3361", + "created_at": "2024-09-16T05:38:40Z", "upvotes": 1, - "comment_count": 3, + "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "vishnumallela", - "html_url": "https://github.com/vishnumallela" - }, - "category": "Support" + "login": "rvndbalaji", + "html_url": "https://github.com/rvndbalaji" + }, + "category": "Ideas" }, { - "number": 2769, - "title": "Continue trace on Celery worker with observe decorator", - "href": "https://github.com/orgs/langfuse/discussions/2769", - "created_at": "2024-07-27T18:23:13Z", + "number": 3358, + "title": "More customization in graphs and dashboard panels", + "href": "https://github.com/orgs/langfuse/discussions/3358", + "created_at": "2024-09-14T03:12:38Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, + "comment_count": 1, + "resolved": false, "labels": [ - "integration-python-decorator" + "feat-dashboard" ], "author": { - "login": "artefactop", - "html_url": "https://github.com/artefactop" + "login": "emaugars12", + "html_url": "https://github.com/emaugars12" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2768, - "title": "How do i register the token count and cost for observe decorator", - "href": "https://github.com/orgs/langfuse/discussions/2768", - "created_at": "2024-07-27T14:47:58Z", + "number": 3352, + "title": "LLM Based Evaluation - more control with mapping a variable e.g. {{query}}, {{ground_truth}} etc inside of Input/Output/Metadata observation", + "href": "https://github.com/orgs/langfuse/discussions/3352", + "created_at": "2024-09-13T16:58:05Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "stepanogil", + "html_url": "https://github.com/stepanogil" + }, + "category": "Ideas" + }, + { + "number": 3351, + "title": "Support for Firebase Genkit", + "href": "https://github.com/orgs/langfuse/discussions/3351", + "created_at": "2024-09-13T16:29:07Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, + "comment_count": 1, + "resolved": false, "labels": [ - "integration-python-decorator", - "feat-cost-tracking" + "integrations" ], "author": { - "login": "yevkim", - "html_url": "https://github.com/yevkim" + "login": "debkanchan", + "html_url": "https://github.com/debkanchan" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2767, - "title": "Missing evaluation metrics", - "href": "https://github.com/orgs/langfuse/discussions/2767", - "created_at": "2024-07-27T05:07:56Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [], + "number": 3338, + "title": "o1-preview and o1-mini support", + "href": "https://github.com/orgs/langfuse/discussions/3338", + "created_at": "2024-09-13T07:16:22Z", + "upvotes": 2, + "comment_count": 3, + "resolved": false, + "labels": [ + "✅ Done" + ], "author": { - "login": "MayankBitcot", - "html_url": "https://github.com/MayankBitcot" + "login": "juan-abia", + "html_url": "https://github.com/juan-abia" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2736, - "title": "Ability to upload Cost and Usage metrics in Langfuse for Gemini Models from LlamaIndex", - "href": "https://github.com/orgs/langfuse/discussions/2736", - "created_at": "2024-07-25T06:17:14Z", + "number": 3336, + "title": "Add Notification for / in Comments Objects", + "href": "https://github.com/orgs/langfuse/discussions/3336", + "created_at": "2024-09-13T00:04:16Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ - "integraton-llamaindex", - "feat-cost-tracking" + "feat-comments" ], "author": { - "login": "ansu86d", - "html_url": "https://github.com/ansu86d" + "login": "Zugunruhekami", + "html_url": "https://github.com/Zugunruhekami" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2735, - "title": "Deployment on K8s", - "href": "https://github.com/orgs/langfuse/discussions/2735", - "created_at": "2024-07-25T04:38:19Z", + "number": 3335, + "title": "Extend Searchability (through filter) for Comments Objects", + "href": "https://github.com/orgs/langfuse/discussions/3335", + "created_at": "2024-09-12T23:58:17Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [], + "comment_count": 0, + "resolved": false, + "labels": [ + "feat-comments" + ], "author": { - "login": "nithin1995", - "html_url": "https://github.com/nithin1995" + "login": "Zugunruhekami", + "html_url": "https://github.com/Zugunruhekami" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2718, - "title": "How to ignore inputs when using LangChain?", - "href": "https://github.com/orgs/langfuse/discussions/2718", - "created_at": "2024-07-23T10:58:07Z", + "number": 3291, + "title": "Filter by error in sub span", + "href": "https://github.com/orgs/langfuse/discussions/3291", + "created_at": "2024-09-10T13:20:11Z", "upvotes": 2, "comment_count": 3, "resolved": false, "labels": [ - "integration-langchain" + "✅ Done", + "feat-log-levels" ], "author": { - "login": "justingodden", - "html_url": "https://github.com/justingodden" + "login": "bettlebrox", + "html_url": "https://github.com/bettlebrox" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2716, - "title": "Langgraph with langfuse", - "href": "https://github.com/orgs/langfuse/discussions/2716", - "created_at": "2024-07-23T09:12:20Z", + "number": 3289, + "title": "Deleting old, unused tags or making them unseen if weren't used in the chosen time window.", + "href": "https://github.com/orgs/langfuse/discussions/3289", + "created_at": "2024-09-10T12:56:43Z", "upvotes": 1, - "comment_count": 4, - "resolved": true, + "comment_count": 1, + "resolved": false, "labels": [ - "integration-langchain" + "feat-tags" ], "author": { - "login": "MayankBitcot", - "html_url": "https://github.com/MayankBitcot" + "login": "constalozinschi", + "html_url": "https://github.com/constalozinschi" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2714, - "title": "Using langfuse without saving promps", - "href": "https://github.com/orgs/langfuse/discussions/2714", - "created_at": "2024-07-23T08:44:44Z", - "upvotes": 1, + "number": 3285, + "title": "SDK-JS: Allow to delete one or more trace", + "href": "https://github.com/orgs/langfuse/discussions/3285", + "created_at": "2024-09-10T09:26:04Z", + "upvotes": 5, "comment_count": 2, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "sdk-js" + ], "author": { - "login": "molntamas", - "html_url": "https://github.com/molntamas" + "login": "Lunik", + "html_url": "https://github.com/Lunik" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2712, - "title": "cannot execute INSERT in a read-only transaction", - "href": "https://github.com/orgs/langfuse/discussions/2712", - "created_at": "2024-07-23T07:49:30Z", - "upvotes": 1, - "comment_count": 2, + "number": 3276, + "title": "Retrieve the trace by metdata", + "href": "https://github.com/orgs/langfuse/discussions/3276", + "created_at": "2024-09-09T20:51:08Z", + "upvotes": 3, + "comment_count": 0, "resolved": false, "labels": [ - "self-hosting" + "feat-metadata" ], "author": { - "login": "damianradowiecki", - "html_url": "https://github.com/damianradowiecki" + "login": "gingerjx", + "html_url": "https://github.com/gingerjx" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2706, - "title": "Disable tracing of input and output for nested elements with in a chain.", - "href": "https://github.com/orgs/langfuse/discussions/2706", - "created_at": "2024-07-22T16:17:53Z", - "upvotes": 2, - "comment_count": 1, + "number": 3275, + "title": "Include metrics and scores in getDatasetRun / `GET /api/public/datasets/{datasetName}/runs/{runName}`", + "href": "https://github.com/orgs/langfuse/discussions/3275", + "created_at": "2024-09-09T20:48:16Z", + "upvotes": 3, + "comment_count": 0, "resolved": false, - "labels": [], + "labels": [ + "feat-datasets" + ], "author": { - "login": "jaitd", - "html_url": "https://github.com/jaitd" + "login": "gingerjx", + "html_url": "https://github.com/gingerjx" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2705, - "title": "Support for adding traces/observations/sessions/events/spans/generations related logging to LF via API", - "href": "https://github.com/orgs/langfuse/discussions/2705", - "created_at": "2024-07-22T12:57:05Z", + "number": 3273, + "title": "Custom Themes", + "href": "https://github.com/orgs/langfuse/discussions/3273", + "created_at": "2024-09-09T15:08:25Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [], "author": { - "login": "ashutoshsaboo", - "html_url": "https://github.com/ashutoshsaboo" + "login": "rvndbalaji", + "html_url": "https://github.com/rvndbalaji" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2671, - "title": "Cannot connect prompt to trace when using Langchain AzureChatOpenai", - "href": "https://github.com/orgs/langfuse/discussions/2671", - "created_at": "2024-07-18T13:30:14Z", + "number": 3263, + "title": "Comment API", + "href": "https://github.com/orgs/langfuse/discussions/3263", + "created_at": "2024-09-07T05:53:31Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "feat-api", + "feat-datasets" + ], "author": { - "login": "nihadazimli", - "html_url": "https://github.com/nihadazimli" + "login": "darvin", + "html_url": "https://github.com/darvin" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2658, - "title": "how to customize trace id when using callback handler in langchain integration", - "href": "https://github.com/orgs/langfuse/discussions/2658", - "created_at": "2024-07-17T13:38:18Z", + "number": 3256, + "title": "Integration with LangChain4j", + "href": "https://github.com/orgs/langfuse/discussions/3256", + "created_at": "2024-09-06T15:50:51Z", "upvotes": 2, "comment_count": 2, - "resolved": true, + "resolved": false, "labels": [ + "integrations", + "feat-prompt-management", "integration-langchain" ], "author": { - "login": "shawnzhu", - "html_url": "https://github.com/shawnzhu" - }, - "category": "Support" - }, - { - "number": 2640, - "title": "Adding Scores to langfuse with dify", - "href": "https://github.com/orgs/langfuse/discussions/2640", - "created_at": "2024-07-16T16:00:11Z", - "upvotes": 2, - "comment_count": 1, - "resolved": true, - "labels": [ - "integration-dify" - ], - "author": { - "login": "shaquelsamir", - "html_url": "https://github.com/shaquelsamir" + "login": "ruizrube", + "html_url": "https://github.com/ruizrube" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2619, - "title": "How to add a function to current trace instead of seperate since it's outside lcel chain?", - "href": "https://github.com/orgs/langfuse/discussions/2619", - "created_at": "2024-07-12T07:08:47Z", + "number": 3252, + "title": "Need to retain the old evaluation history results, including input and all ground truth", + "href": "https://github.com/orgs/langfuse/discussions/3252", + "created_at": "2024-09-06T03:29:17Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "integration-langchain" + "feat-datasets" ], "author": { - "login": "sarim2000", - "html_url": "https://github.com/sarim2000" + "login": "serlina", + "html_url": "https://github.com/serlina" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2616, - "title": "Weird Output for scores when using fetch_traces()", - "href": "https://github.com/orgs/langfuse/discussions/2616", - "created_at": "2024-07-11T12:46:23Z", - "upvotes": 1, - "comment_count": 2, + "number": 3243, + "title": "Add organization / project / user / API key management API", + "href": "https://github.com/orgs/langfuse/discussions/3243", + "created_at": "2024-09-05T08:10:12Z", + "upvotes": 9, + "comment_count": 5, "resolved": false, - "labels": [], + "labels": [ + "self-hosting" + ], "author": { - "login": "kevinpkaria", - "html_url": "https://github.com/kevinpkaria" + "login": "EricAntidot", + "html_url": "https://github.com/EricAntidot" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2600, - "title": "Add input Price and Output price for gemini-1.5-pro and gemini-1.5-flash in Models", - "href": "https://github.com/orgs/langfuse/discussions/2600", - "created_at": "2024-07-10T09:52:23Z", - "upvotes": 3, + "number": 3240, + "title": "Ability to export all traces/sessions/scores from langfuse and import back to another langfuse instance", + "href": "https://github.com/orgs/langfuse/discussions/3240", + "created_at": "2024-09-05T07:11:48Z", + "upvotes": 5, "comment_count": 1, "resolved": false, - "labels": [], - "author": { - "login": "fjeanchar", - "html_url": "https://github.com/fjeanchar" - }, - "category": "Support" - }, - { - "number": 2599, - "title": "Overall projects dashboard?", - "href": "https://github.com/orgs/langfuse/discussions/2599", - "created_at": "2024-07-10T09:09:02Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, "labels": [ - "feat-dashboard" + "self-hosting" ], "author": { - "login": "justingodden", - "html_url": "https://github.com/justingodden" + "login": "SinghCoder", + "html_url": "https://github.com/SinghCoder" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2597, - "title": "[Errno 111] Connection refused when connecting to langfuse within docker compose", - "href": "https://github.com/orgs/langfuse/discussions/2597", - "created_at": "2024-07-10T09:00:34Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 3237, + "title": "Support for Selecting Specific Paths from JSON Objects in Evaluation Prompts", + "href": "https://github.com/orgs/langfuse/discussions/3237", + "created_at": "2024-09-05T05:05:48Z", + "upvotes": 2, + "comment_count": 2, + "resolved": false, "labels": [ - "self-hosting" + "feat-evals" ], "author": { - "login": "bspetrov", - "html_url": "https://github.com/bspetrov" + "login": "divyanshubhuta", + "html_url": "https://github.com/divyanshubhuta" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2595, - "title": "Migrate a local deployment of langfuse from one computer to another", - "href": "https://github.com/orgs/langfuse/discussions/2595", - "created_at": "2024-07-10T07:46:04Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 3220, + "title": "Trace Logprobs from OpenAI models", + "href": "https://github.com/orgs/langfuse/discussions/3220", + "created_at": "2024-09-04T01:25:15Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, "labels": [ - "self-hosting" + "integration-openai" ], "author": { - "login": "nithin1995", - "html_url": "https://github.com/nithin1995" + "login": "yusuke-intern", + "html_url": "https://github.com/yusuke-intern" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2590, - "title": "Experiments running but inputs and outputs of LLM are not linked to dashboard", - "href": "https://github.com/orgs/langfuse/discussions/2590", - "created_at": "2024-07-09T18:29:22Z", - "upvotes": 1, - "comment_count": 1, + "number": 3215, + "title": "(ui) Ability to hide \"scores\" column", + "href": "https://github.com/orgs/langfuse/discussions/3215", + "created_at": "2024-09-03T15:34:14Z", + "upvotes": 2, + "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "IbrahimAhmed03", - "html_url": "https://github.com/IbrahimAhmed03" + "login": "marctorsoc", + "html_url": "https://github.com/marctorsoc" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2574, - "title": "how to embed langfuse dashboard in other tool", - "href": "https://github.com/orgs/langfuse/discussions/2574", - "created_at": "2024-07-08T21:24:13Z", + "number": 3212, + "title": "Dataset run description and metadata should not be fixed on the page", + "href": "https://github.com/orgs/langfuse/discussions/3212", + "created_at": "2024-09-03T12:30:34Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "feat-dashboard" + "feat-datasets" ], "author": { - "login": "deepakdeore2004", - "html_url": "https://github.com/deepakdeore2004" + "login": "justinas-kazanavicius", + "html_url": "https://github.com/justinas-kazanavicius" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2567, - "title": "How to use prompt management with openai JS?", - "href": "https://github.com/orgs/langfuse/discussions/2567", - "created_at": "2024-07-08T08:22:49Z", - "upvotes": 1, + "number": 3208, + "title": "Support for exporting traces to CSV/JSON", + "href": "https://github.com/orgs/langfuse/discussions/3208", + "created_at": "2024-09-03T08:00:36Z", + "upvotes": 4, "comment_count": 2, "resolved": false, "labels": [ - "feat-prompt-management" + "✅ Done" ], "author": { - "login": "oscarmorrison", - "html_url": "https://github.com/oscarmorrison" + "login": "david1542", + "html_url": "https://github.com/david1542" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2564, - "title": "Update metadata when using OpenAI JS Integration", - "href": "https://github.com/orgs/langfuse/discussions/2564", - "created_at": "2024-07-08T07:37:38Z", + "number": 3194, + "title": "Optionally set timestamp when creating a score", + "href": "https://github.com/orgs/langfuse/discussions/3194", + "created_at": "2024-09-02T15:20:20Z", "upvotes": 1, - "comment_count": 3, + "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "feat-api", + "feat-scores" + ], "author": { - "login": "oscarmorrison", - "html_url": "https://github.com/oscarmorrison" + "login": "FlorDonnaSanders", + "html_url": "https://github.com/FlorDonnaSanders" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2527, - "title": "Can't set trace params e.g session_id when using with llhama_index", - "href": "https://github.com/orgs/langfuse/discussions/2527", - "created_at": "2024-07-02T20:41:53Z", - "upvotes": 2, - "comment_count": 2, + "number": 3186, + "title": "Setting trace ID and parent observation ID with Python decorator SDK", + "href": "https://github.com/orgs/langfuse/discussions/3186", + "created_at": "2024-09-02T09:27:36Z", + "upvotes": 1, + "comment_count": 3, "resolved": false, "labels": [ - "integraton-llamaindex" + "✅ Done", + "integration-python-decorator" ], "author": { - "login": "famoraes", - "html_url": "https://github.com/famoraes" + "login": "MrOrz", + "html_url": "https://github.com/MrOrz" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2498, - "title": "Method to update prompt template for Langserve use case", - "href": "https://github.com/orgs/langfuse/discussions/2498", - "created_at": "2024-07-01T11:20:08Z", + "number": 3181, + "title": "Log only metadata", + "href": "https://github.com/orgs/langfuse/discussions/3181", + "created_at": "2024-08-31T18:31:11Z", "upvotes": 2, - "comment_count": 1, - "resolved": true, - "labels": [ - "integration-langchain" - ], + "comment_count": 0, + "resolved": false, + "labels": [], "author": { - "login": "quadcube", - "html_url": "https://github.com/quadcube" + "login": "jan-kubica", + "html_url": "https://github.com/jan-kubica" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2486, - "title": "Cost of embedding in langfuse", - "href": "https://github.com/orgs/langfuse/discussions/2486", - "created_at": "2024-06-29T07:50:06Z", + "number": 3178, + "title": "The display time on the x-axis of the chart in the Dashboard shows only the date, without hours, minutes, and seconds.", + "href": "https://github.com/orgs/langfuse/discussions/3178", + "created_at": "2024-08-31T04:09:07Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [], + "comment_count": 1, + "resolved": false, + "labels": [ + "bug", + "✅ Done", + "feat-dashboard" + ], "author": { - "login": "Amitt1412", - "html_url": "https://github.com/Amitt1412" + "login": "HGladiator", + "html_url": "https://github.com/HGladiator" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2481, - "title": "Getting all traces logged in a timerange for custom scoring", - "href": "https://github.com/orgs/langfuse/discussions/2481", - "created_at": "2024-06-28T12:09:14Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 3166, + "title": "Support Tool Calls / Functions in Playground", + "href": "https://github.com/orgs/langfuse/discussions/3166", + "created_at": "2024-08-30T20:04:34Z", + "upvotes": 15, + "comment_count": 10, + "resolved": false, "labels": [ - "feat-scores" + "feat-playground" ], "author": { - "login": "sanandnarayan", - "html_url": "https://github.com/sanandnarayan" + "login": "yuyuma", + "html_url": "https://github.com/yuyuma" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2479, - "title": "Cost of embedding", - "href": "https://github.com/orgs/langfuse/discussions/2479", - "created_at": "2024-06-28T06:58:16Z", - "upvotes": 1, - "comment_count": 3, - "resolved": true, + "number": 3147, + "title": "Add the ability to search by message words in traces and scores", + "href": "https://github.com/orgs/langfuse/discussions/3147", + "created_at": "2024-08-30T08:02:32Z", + "upvotes": 4, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "Amitt1412", - "html_url": "https://github.com/Amitt1412" + "login": "ValentinKovalev", + "html_url": "https://github.com/ValentinKovalev" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2455, - "title": "Getting issue with local setup", - "href": "https://github.com/orgs/langfuse/discussions/2455", - "created_at": "2024-06-27T10:23:02Z", - "upvotes": 1, + "number": 3131, + "title": "Diff of prompt versions", + "href": "https://github.com/orgs/langfuse/discussions/3131", + "created_at": "2024-08-29T11:43:24Z", + "upvotes": 6, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "self-hosting" + "feat-prompt-management" ], "author": { - "login": "kiranraut7709", - "html_url": "https://github.com/kiranraut7709" + "login": "dylanjcastillo", + "html_url": "https://github.com/dylanjcastillo" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2447, - "title": "Access observation id in langchain runnable", - "href": "https://github.com/orgs/langfuse/discussions/2447", - "created_at": "2024-06-26T21:03:07Z", - "upvotes": 4, - "comment_count": 1, + "number": 3129, + "title": "The LangchainCallbackHandler supports statistical delay of the first token", + "href": "https://github.com/orgs/langfuse/discussions/3129", + "created_at": "2024-08-29T09:26:11Z", + "upvotes": 3, + "comment_count": 2, "resolved": false, "labels": [ - "integration-langchain" + "integration-langchain", + "✅ Done" ], "author": { - "login": "snikch", - "html_url": "https://github.com/snikch" + "login": "Hacky-DH", + "html_url": "https://github.com/Hacky-DH" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2431, - "title": "Trying to work with llama3 in Azure using AzureMLChatOnlineEndpoint but no cost showing up", - "href": "https://github.com/orgs/langfuse/discussions/2431", - "created_at": "2024-06-25T21:20:25Z", + "number": 3112, + "title": "Request Role elevation from Langfuse UI", + "href": "https://github.com/orgs/langfuse/discussions/3112", + "created_at": "2024-08-28T13:15:21Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 0, "resolved": false, - "labels": [], + "labels": [ + "feat-rbac" + ], "author": { - "login": "spacepirate0001", - "html_url": "https://github.com/spacepirate0001" + "login": "thund3rbrd", + "html_url": "https://github.com/thund3rbrd" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2416, - "title": "some tests failed for langfuse-js", - "href": "https://github.com/orgs/langfuse/discussions/2416", - "created_at": "2024-06-25T04:31:35Z", + "number": 3111, + "title": "Improve RBAC", + "href": "https://github.com/orgs/langfuse/discussions/3111", + "created_at": "2024-08-28T13:08:57Z", "upvotes": 1, - "comment_count": 3, + "comment_count": 0, "resolved": false, - "labels": [], + "labels": [ + "feat-rbac" + ], "author": { - "login": "4t8dd", - "html_url": "https://github.com/4t8dd" + "login": "thund3rbrd", + "html_url": "https://github.com/thund3rbrd" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2415, - "title": "AUTH AZURE AD returns AADSTS9002325: Proof Key for Code Exchange is required for cross-origin authorization code redemption.", - "href": "https://github.com/orgs/langfuse/discussions/2415", - "created_at": "2024-06-24T18:00:45Z", - "upvotes": 1, + "number": 3074, + "title": "Add \"image_url\" to Langfuse Prompt types.", + "href": "https://github.com/orgs/langfuse/discussions/3074", + "created_at": "2024-08-26T11:54:32Z", + "upvotes": 2, "comment_count": 1, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "feat-prompt-management" + ], "author": { - "login": "spacepirate0001", - "html_url": "https://github.com/spacepirate0001" + "login": "grobruegge", + "html_url": "https://github.com/grobruegge" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2401, - "title": "Trying to understand why in Langfuse Trace under Stream Completion I get this output:", - "href": "https://github.com/orgs/langfuse/discussions/2401", - "created_at": "2024-06-21T12:22:38Z", + "number": 3062, + "title": "Support for OpenAI.client.chat.completions.with_raw_response", + "href": "https://github.com/orgs/langfuse/discussions/3062", + "created_at": "2024-08-24T12:55:39Z", "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "integration-openai" + ], "author": { - "login": "howtodoml", - "html_url": "https://github.com/howtodoml" + "login": "aman-gupta-doc", + "html_url": "https://github.com/aman-gupta-doc" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2385, - "title": "Modify trace after getting response from OpenAI", - "href": "https://github.com/orgs/langfuse/discussions/2385", - "created_at": "2024-06-20T18:00:09Z", + "number": 3053, + "title": "Being able to link Prompts with Traces when using the LangChain integration", + "href": "https://github.com/orgs/langfuse/discussions/3053", + "created_at": "2024-08-23T13:14:21Z", "upvotes": 2, - "comment_count": 3, + "comment_count": 2, "resolved": false, - "labels": [], + "labels": [ + "✅ Done" + ], "author": { - "login": "tylerlittlefield", - "html_url": "https://github.com/tylerlittlefield" + "login": "jonnyforsterMSG", + "html_url": "https://github.com/jonnyforsterMSG" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2381, - "title": "LangFuse UI doesn't show all traces despite debug logging saying that all are sent to the server", - "href": "https://github.com/orgs/langfuse/discussions/2381", - "created_at": "2024-06-20T14:02:12Z", - "upvotes": 3, - "comment_count": 1, + "number": 3050, + "title": "Implement dataset removal method", + "href": "https://github.com/orgs/langfuse/discussions/3050", + "created_at": "2024-08-23T11:40:13Z", + "upvotes": 4, + "comment_count": 0, "resolved": false, - "labels": [], + "labels": [ + "feat-datasets" + ], "author": { - "login": "stokedout", - "html_url": "https://github.com/stokedout" + "login": "justinas-kazanavicius", + "html_url": "https://github.com/justinas-kazanavicius" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2379, - "title": "Langfuse was not able to parse the LLM model", - "href": "https://github.com/orgs/langfuse/discussions/2379", - "created_at": "2024-06-20T08:56:57Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [ - "integration-langchain", - "integration-amazon-bedrock" + "number": 3023, + "title": "Track openai token usage from stream_options instead of tokenizing the response server-side", + "href": "https://github.com/orgs/langfuse/discussions/3023", + "created_at": "2024-08-22T17:08:08Z", + "upvotes": 3, + "comment_count": 3, + "resolved": false, + "labels": [ + "integration-openai", + "✅ Done", + "feat-cost-tracking" ], "author": { - "login": "fdbvega", - "html_url": "https://github.com/fdbvega" + "login": "kilimchoi", + "html_url": "https://github.com/kilimchoi" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2377, - "title": "Can't see any traces or logs when running Langfuse locally.", - "href": "https://github.com/orgs/langfuse/discussions/2377", - "created_at": "2024-06-19T23:51:46Z", + "number": 3021, + "title": "Pre-defined user access", + "href": "https://github.com/orgs/langfuse/discussions/3021", + "created_at": "2024-08-22T16:08:19Z", "upvotes": 1, - "comment_count": 6, - "resolved": true, + "comment_count": 0, + "resolved": false, "labels": [ "self-hosting" ], "author": { - "login": "ibdafna", - "html_url": "https://github.com/ibdafna" + "login": "LucasMagnum", + "html_url": "https://github.com/LucasMagnum" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2373, - "title": "Not recording llamaindex response. Please help", - "href": "https://github.com/orgs/langfuse/discussions/2373", - "created_at": "2024-06-19T19:26:30Z", + "number": 3014, + "title": "Supports filter string using regular expression matching", + "href": "https://github.com/orgs/langfuse/discussions/3014", + "created_at": "2024-08-22T14:39:34Z", "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [ - "integraton-llamaindex" - ], + "labels": [], "author": { - "login": "mraguth", - "html_url": "https://github.com/mraguth" + "login": "chai3", + "html_url": "https://github.com/chai3" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2366, - "title": "Add label to prompt from Langfuse UI", - "href": "https://github.com/orgs/langfuse/discussions/2366", - "created_at": "2024-06-18T14:26:14Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 3004, + "title": "Support for more modalities and base64 content", + "href": "https://github.com/orgs/langfuse/discussions/3004", + "created_at": "2024-08-22T09:50:47Z", + "upvotes": 45, + "comment_count": 17, + "resolved": false, "labels": [ - "feat-prompt-management" + "✅ Done", + "feat-multimodal" ], "author": { - "login": "charlieviettq", - "html_url": "https://github.com/charlieviettq" + "login": "marliessophie", + "html_url": "https://github.com/marliessophie" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2354, - "title": "Link Prompt & Trace with langchain CallbackHandler", - "href": "https://github.com/orgs/langfuse/discussions/2354", - "created_at": "2024-06-17T08:21:56Z", + "number": 2997, + "title": "Filter Span events in dashboard", + "href": "https://github.com/orgs/langfuse/discussions/2997", + "created_at": "2024-08-21T16:25:02Z", "upvotes": 2, - "comment_count": 2, - "resolved": true, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "derevyan", - "html_url": "https://github.com/derevyan" + "login": "tagaretiro", + "html_url": "https://github.com/tagaretiro" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2353, - "title": "[Migration] Auto-migration DB error when upgrade langfuse version", - "href": "https://github.com/orgs/langfuse/discussions/2353", - "created_at": "2024-06-17T08:02:03Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 2987, + "title": "Claude/openai/google prompt caching", + "href": "https://github.com/orgs/langfuse/discussions/2987", + "created_at": "2024-08-21T04:18:55Z", + "upvotes": 5, + "comment_count": 4, + "resolved": false, "labels": [ - "self-hosting" + "feat-cost-tracking" ], "author": { - "login": "charlieviettq", - "html_url": "https://github.com/charlieviettq" + "login": "mrdrprofuroboros", + "html_url": "https://github.com/mrdrprofuroboros" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2351, - "title": "Customize Langchain callback handler to add spans to existing traces created by separate thread/process", - "href": "https://github.com/orgs/langfuse/discussions/2351", - "created_at": "2024-06-17T03:41:57Z", + "number": 2978, + "title": "Unexpected event format when using `ibm-watsonx-ai` with LangChain extension", + "href": "https://github.com/orgs/langfuse/discussions/2978", + "created_at": "2024-08-20T11:20:28Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 0, "resolved": false, "labels": [ "integration-langchain" ], "author": { - "login": "Chengdyc", - "html_url": "https://github.com/Chengdyc" + "login": "barvhaim", + "html_url": "https://github.com/barvhaim" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2348, - "title": "not serializable object of type: LangfuseResponseGeneratorSync", - "href": "https://github.com/orgs/langfuse/discussions/2348", - "created_at": "2024-06-14T22:33:09Z", + "number": 2975, + "title": "fetch all users via sdk/api", + "href": "https://github.com/orgs/langfuse/discussions/2975", + "created_at": "2024-08-20T06:52:47Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 3, "resolved": false, - "labels": [], + "labels": [ + "feat-users" + ], "author": { - "login": "howtodoml", - "html_url": "https://github.com/howtodoml" + "login": "vincent-larisma", + "html_url": "https://github.com/vincent-larisma" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2346, - "title": "Chain two prompts", - "href": "https://github.com/orgs/langfuse/discussions/2346", - "created_at": "2024-06-14T08:20:48Z", + "number": 2967, + "title": "Tag based usage", + "href": "https://github.com/orgs/langfuse/discussions/2967", + "created_at": "2024-08-19T07:13:26Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ - "feat-prompt-management", - "integration-langchain" + "feat-dashboard", + "feat-tags" ], "author": { - "login": "darkostanimirovic", - "html_url": "https://github.com/darkostanimirovic" + "login": "aakash-vwo", + "html_url": "https://github.com/aakash-vwo" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2344, - "title": "Can you use internal Kubernetes DNS to receive traffic from other Kubernetes workloads?", - "href": "https://github.com/orgs/langfuse/discussions/2344", - "created_at": "2024-06-14T08:15:36Z", - "upvotes": 1, + "number": 2949, + "title": "Auto-patching Langchain to include Langfuse callback handler", + "href": "https://github.com/orgs/langfuse/discussions/2949", + "created_at": "2024-08-15T12:17:32Z", + "upvotes": 3, "comment_count": 1, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "integration-langchain" + ], "author": { - "login": "smeasures", - "html_url": "https://github.com/smeasures" + "login": "kongzii", + "html_url": "https://github.com/kongzii" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2342, - "title": "Getting trace id out of a langchain runnable", - "href": "https://github.com/orgs/langfuse/discussions/2342", - "created_at": "2024-06-14T01:15:26Z", - "upvotes": 1, + "number": 2923, + "title": "Feature: Add CAS (and maybe SAML) as a authentication method", + "href": "https://github.com/orgs/langfuse/discussions/2923", + "created_at": "2024-08-13T17:18:42Z", + "upvotes": 2, "comment_count": 1, - "resolved": true, - "labels": [], - "author": { - "login": "salmanmashayekh", - "html_url": "https://github.com/salmanmashayekh" - }, - "category": "Support" - }, - { - "number": 2338, - "title": "Can RBAC Role Assignment be done using Azure AD SSO token?", - "href": "https://github.com/orgs/langfuse/discussions/2338", - "created_at": "2024-06-13T11:29:59Z", - "upvotes": 3, - "comment_count": 2, "resolved": false, "labels": [ - "feat-rbac", "self-hosting" ], "author": { - "login": "joshwright10", - "html_url": "https://github.com/joshwright10" + "login": "jayteaftw", + "html_url": "https://github.com/jayteaftw" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2298, - "title": "llamaindex: function_call does not generate subspans for a custom AsyncBaseTool class", - "href": "https://github.com/orgs/langfuse/discussions/2298", - "created_at": "2024-06-11T09:28:33Z", + "number": 2919, + "title": "Adding access to User's sessions directly", + "href": "https://github.com/orgs/langfuse/discussions/2919", + "created_at": "2024-08-13T12:42:16Z", "upvotes": 1, - "comment_count": 3, + "comment_count": 0, "resolved": false, "labels": [ - "integraton-llamaindex" + "feat-users", + "feat-sessions" ], "author": { - "login": "ootkin", - "html_url": "https://github.com/ootkin" + "login": "Youneesz", + "html_url": "https://github.com/Youneesz" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2290, - "title": "There are no evaluation component in the 2.50 version", - "href": "https://github.com/orgs/langfuse/discussions/2290", - "created_at": "2024-06-10T19:36:30Z", - "upvotes": 1, + "number": 2883, + "title": "Compare two dataset runs side by side", + "href": "https://github.com/orgs/langfuse/discussions/2883", + "created_at": "2024-08-09T10:40:05Z", + "upvotes": 5, "comment_count": 1, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "feat-datasets" + ], "author": { - "login": "yanlinchn", - "html_url": "https://github.com/yanlinchn" + "login": "dmaslov", + "html_url": "https://github.com/dmaslov" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2254, - "title": "Unable to get hello world program working due to incorrect public key / host", - "href": "https://github.com/orgs/langfuse/discussions/2254", - "created_at": "2024-06-06T09:13:53Z", - "upvotes": 3, - "comment_count": 1, - "resolved": true, + "number": 2881, + "title": "feat (ui): Collapse sidebar by default", + "href": "https://github.com/orgs/langfuse/discussions/2881", + "created_at": "2024-08-09T10:03:39Z", + "upvotes": 1, + "comment_count": 5, + "resolved": false, "labels": [ - "self-hosting" + "ui" ], "author": { - "login": "mr-nano", - "html_url": "https://github.com/mr-nano" + "login": "marctorsoc", + "html_url": "https://github.com/marctorsoc" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2244, - "title": "2 traces generated instead of 1", - "href": "https://github.com/orgs/langfuse/discussions/2244", - "created_at": "2024-06-05T17:06:52Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, - "labels": [ - "integration-langchain", - "feat-datasets" - ], + "number": 2877, + "title": "Make langfuse deployable to AWS Lambda", + "href": "https://github.com/orgs/langfuse/discussions/2877", + "created_at": "2024-08-09T08:24:14Z", + "upvotes": 3, + "comment_count": 2, + "resolved": false, + "labels": [], "author": { - "login": "nithin1995", - "html_url": "https://github.com/nithin1995" + "login": "MeddahAbdellah", + "html_url": "https://github.com/MeddahAbdellah" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2211, - "title": "How to clean the langfuse cache data periodically?", - "href": "https://github.com/orgs/langfuse/discussions/2211", - "created_at": "2024-06-03T07:40:22Z", + "number": 2870, + "title": "custom base path deployments", + "href": "https://github.com/orgs/langfuse/discussions/2870", + "created_at": "2024-08-08T13:15:51Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [], "author": { - "login": "He-Huang", - "html_url": "https://github.com/He-Huang" + "login": "marioweid", + "html_url": "https://github.com/marioweid" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2207, - "title": "Model Cost does not show up", - "href": "https://github.com/orgs/langfuse/discussions/2207", - "created_at": "2024-06-02T11:08:58Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 2864, + "title": "Add Bedrock Guardrails to the LLM Security documentation", + "href": "https://github.com/orgs/langfuse/discussions/2864", + "created_at": "2024-08-07T23:56:05Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, "labels": [ - "feat-cost-tracking" + "feat-llm-security", + "integration-amazon-bedrock" ], "author": { - "login": "jannikstdl", - "html_url": "https://github.com/jannikstdl" + "login": "wirjo", + "html_url": "https://github.com/wirjo" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2206, - "title": "Possibilities for auth", - "href": "https://github.com/orgs/langfuse/discussions/2206", - "created_at": "2024-06-01T23:38:39Z", - "upvotes": 1, + "number": 2863, + "title": "Add AWS as a deployment option in the documentation", + "href": "https://github.com/orgs/langfuse/discussions/2863", + "created_at": "2024-08-07T23:53:40Z", + "upvotes": 3, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ + "✅ Done", "self-hosting" ], "author": { - "login": "Getty", - "html_url": "https://github.com/Getty" - }, - "category": "Support" - }, - { - "number": 2200, - "title": "How does one replace values for a ChatPromptTemplate for Langchain", - "href": "https://github.com/orgs/langfuse/discussions/2200", - "created_at": "2024-05-31T19:39:14Z", - "upvotes": 0, - "comment_count": 2, - "resolved": false, - "labels": [], - "author": { - "login": "ajram23", - "html_url": "https://github.com/ajram23" + "login": "wirjo", + "html_url": "https://github.com/wirjo" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2188, - "title": "Time to first token?", - "href": "https://github.com/orgs/langfuse/discussions/2188", - "created_at": "2024-05-30T12:45:37Z", + "number": 2850, + "title": "Feat (ui): Move columns", + "href": "https://github.com/orgs/langfuse/discussions/2850", + "created_at": "2024-08-07T11:55:55Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "jrcapicua", - "html_url": "https://github.com/jrcapicua" + "login": "marctorsoc", + "html_url": "https://github.com/marctorsoc" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2172, - "title": "How to reuse callback handler in langchain integration?", - "href": "https://github.com/orgs/langfuse/discussions/2172", - "created_at": "2024-05-28T15:25:39Z", + "number": 2848, + "title": "Feat: Allow not sorting tags", + "href": "https://github.com/orgs/langfuse/discussions/2848", + "created_at": "2024-08-07T11:50:44Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 1, "resolved": false, "labels": [ - "integration-langchain" + "feat-tags" ], "author": { - "login": "SebastianStehle", - "html_url": "https://github.com/SebastianStehle" + "login": "marctorsoc", + "html_url": "https://github.com/marctorsoc" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2165, - "title": "Auth0 not working", - "href": "https://github.com/orgs/langfuse/discussions/2165", - "created_at": "2024-05-28T11:38:43Z", + "number": 2823, + "title": "Need support for ChatOCIGenAI", + "href": "https://github.com/orgs/langfuse/discussions/2823", + "created_at": "2024-08-05T13:34:30Z", "upvotes": 2, - "comment_count": 3, + "comment_count": 0, "resolved": false, - "labels": [ - "self-hosting" - ], - "author": { - "login": "mforell", - "html_url": "https://github.com/mforell" - }, - "category": "Support" - }, - { - "number": 2162, - "title": "Connect Prompt ID to GENERATIONS when integrate Langfuse in LangChain.", - "href": "https://github.com/orgs/langfuse/discussions/2162", - "created_at": "2024-05-28T00:56:34Z", - "upvotes": 8, - "comment_count": 1, - "resolved": true, "labels": [], "author": { - "login": "hdp173", - "html_url": "https://github.com/hdp173" + "login": "engchina", + "html_url": "https://github.com/engchina" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2154, - "title": "__root__ -> items -> 0 -> datasetName field required (type=value_error.missing)", - "href": "https://github.com/orgs/langfuse/discussions/2154", - "created_at": "2024-05-27T11:26:24Z", - "upvotes": 1, - "comment_count": 2, + "number": 2821, + "title": "Need API endpoints to add projects and users", + "href": "https://github.com/orgs/langfuse/discussions/2821", + "created_at": "2024-08-05T13:10:49Z", + "upvotes": 2, + "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "emailic", - "html_url": "https://github.com/emailic" + "login": "kameshbrao", + "html_url": "https://github.com/kameshbrao" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2152, - "title": "get_langchain_handler() alwasy start from trace root.", - "href": "https://github.com/orgs/langfuse/discussions/2152", - "created_at": "2024-05-27T10:47:42Z", + "number": 2812, + "title": "Could you make the Prompt label 36 char long?", + "href": "https://github.com/orgs/langfuse/discussions/2812", + "created_at": "2024-08-02T11:03:08Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ - "integration-langchain" + "feat-prompt-management", + "✅ Done" ], "author": { - "login": "hdp173", - "html_url": "https://github.com/hdp173" + "login": "DevSageH", + "html_url": "https://github.com/DevSageH" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2146, - "title": "Customize LangChain Integration.", - "href": "https://github.com/orgs/langfuse/discussions/2146", - "created_at": "2024-05-27T06:12:41Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 2810, + "title": "Enable setting a label to an existing prompt version via the api/sdk.", + "href": "https://github.com/orgs/langfuse/discussions/2810", + "created_at": "2024-08-01T16:53:06Z", + "upvotes": 10, + "comment_count": 4, + "resolved": false, "labels": [ - "integration-langchain" + "feat-prompt-management" ], "author": { - "login": "hdp173", - "html_url": "https://github.com/hdp173" + "login": "ClementNguyen", + "html_url": "https://github.com/ClementNguyen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2145, - "title": "Need help on syntax for editing project roles", - "href": "https://github.com/orgs/langfuse/discussions/2145", - "created_at": "2024-05-26T18:50:59Z", - "upvotes": 1, - "comment_count": 2, + "number": 2797, + "title": "Enable list_prompts/search_prompts using client", + "href": "https://github.com/orgs/langfuse/discussions/2797", + "created_at": "2024-07-31T13:45:38Z", + "upvotes": 4, + "comment_count": 2, "resolved": false, - "labels": [], + "labels": [ + "feat-prompt-management" + ], "author": { - "login": "hrithik062", - "html_url": "https://github.com/hrithik062" + "login": "krlng", + "html_url": "https://github.com/krlng" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2142, - "title": "Unable to login with SSO", - "href": "https://github.com/orgs/langfuse/discussions/2142", - "created_at": "2024-05-24T18:40:35Z", + "number": 2781, + "title": "Add support for custom serialization of observation fields", + "href": "https://github.com/orgs/langfuse/discussions/2781", + "created_at": "2024-07-29T18:49:03Z", "upvotes": 1, - "comment_count": 1, - "resolved": true, - "labels": [], + "comment_count": 2, + "resolved": false, + "labels": [ + "sdk-python" + ], "author": { - "login": "alecor191", - "html_url": "https://github.com/alecor191" + "login": "ashamlian-roadway", + "html_url": "https://github.com/ashamlian-roadway" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2137, - "title": "Latency (Avg) showing 0 for dataset runs", - "href": "https://github.com/orgs/langfuse/discussions/2137", - "created_at": "2024-05-24T07:33:51Z", - "upvotes": 4, - "comment_count": 1, - "resolved": true, + "number": 2770, + "title": "Add clickable link to the 'release' kwargs in a Trace - this will route to the documentations/change log of that release/version", + "href": "https://github.com/orgs/langfuse/discussions/2770", + "created_at": "2024-07-28T07:08:07Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "karthik-TLIT", - "html_url": "https://github.com/karthik-TLIT" + "login": "stepanogil", + "html_url": "https://github.com/stepanogil" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2130, - "title": "Evaluations Not Available in Self-Hosted Version?", - "href": "https://github.com/orgs/langfuse/discussions/2130", - "created_at": "2024-05-23T14:31:16Z", + "number": 2766, + "title": "Support Exporting LangSmith Run Traces into Langfuse!", + "href": "https://github.com/orgs/langfuse/discussions/2766", + "created_at": "2024-07-27T02:34:44Z", "upvotes": 3, "comment_count": 1, - "resolved": true, - "labels": [ - "feat-evals" - ], + "resolved": false, + "labels": [], "author": { - "login": "c0pper", - "html_url": "https://github.com/c0pper" + "login": "p-barman", + "html_url": "https://github.com/p-barman" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2114, - "title": "Careers link on HN is broken", - "href": "https://github.com/orgs/langfuse/discussions/2114", - "created_at": "2024-05-21T07:28:26Z", + "number": 2747, + "title": "A new configuration env variable for custom URL prefix", + "href": "https://github.com/orgs/langfuse/discussions/2747", + "created_at": "2024-07-25T17:00:57Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [], "author": { - "login": "davherrmann", - "html_url": "https://github.com/davherrmann" + "login": "abdullah-retorio", + "html_url": "https://github.com/abdullah-retorio" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2111, - "title": "Token cost is counted even if langchains LLM cache is utilized", - "href": "https://github.com/orgs/langfuse/discussions/2111", - "created_at": "2024-05-20T23:23:44Z", + "number": 2746, + "title": "Returning prompts from expired cache may be disabled using a boolean argument", + "href": "https://github.com/orgs/langfuse/discussions/2746", + "created_at": "2024-07-25T15:57:26Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "integration-langchain" + "feat-prompt-management" ], "author": { - "login": "arthurGrigo", - "html_url": "https://github.com/arthurGrigo" + "login": "ogunoz", + "html_url": "https://github.com/ogunoz" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2106, - "title": "Hability to store pre defined initial message", - "href": "https://github.com/orgs/langfuse/discussions/2106", - "created_at": "2024-05-20T20:40:23Z", + "number": 2745, + "title": "Lazy fallback for get_prompt", + "href": "https://github.com/orgs/langfuse/discussions/2745", + "created_at": "2024-07-25T15:50:32Z", "upvotes": 1, "comment_count": 1, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "feat-prompt-management" + ], "author": { - "login": "Lunik", - "html_url": "https://github.com/Lunik" + "login": "ogunoz", + "html_url": "https://github.com/ogunoz" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2099, - "title": "Deleting Duplicate Items in a Dataset", - "href": "https://github.com/orgs/langfuse/discussions/2099", - "created_at": "2024-05-20T09:48:58Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 2738, + "title": "Set variables in playground from dataset", + "href": "https://github.com/orgs/langfuse/discussions/2738", + "created_at": "2024-07-25T09:27:30Z", + "upvotes": 4, + "comment_count": 2, + "resolved": false, "labels": [ - "feat-datasets" + "feat-datasets", + "feat-playground" ], "author": { - "login": "emailic", - "html_url": "https://github.com/emailic" + "login": "hbenyamina", + "html_url": "https://github.com/hbenyamina" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2098, - "title": "Wrong model for billing", - "href": "https://github.com/orgs/langfuse/discussions/2098", - "created_at": "2024-05-20T09:29:33Z", - "upvotes": 2, - "comment_count": 1, - "resolved": true, - "labels": [], + "number": 2729, + "title": "Comment thread on Traces", + "href": "https://github.com/orgs/langfuse/discussions/2729", + "created_at": "2024-07-24T13:52:51Z", + "upvotes": 1, + "comment_count": 3, + "resolved": false, + "labels": [ + "✅ Done", + "feat-comments" + ], "author": { - "login": "wdxwj", - "html_url": "https://github.com/wdxwj" + "login": "guptakvgaurav", + "html_url": "https://github.com/guptakvgaurav" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2077, - "title": "Error Encountered During Migration for Applying Newly Supported Models to Existing Data", - "href": "https://github.com/orgs/langfuse/discussions/2077", - "created_at": "2024-05-16T15:30:33Z", - "upvotes": 1, - "comment_count": 1, + "number": 2728, + "title": "Session-level scores", + "href": "https://github.com/orgs/langfuse/discussions/2728", + "created_at": "2024-07-24T10:05:40Z", + "upvotes": 3, + "comment_count": 3, "resolved": false, - "labels": [], + "labels": [ + "feat-scores", + "feat-sessions" + ], "author": { - "login": "Zherdev1996", - "html_url": "https://github.com/Zherdev1996" + "login": "felixsg", + "html_url": "https://github.com/felixsg" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2073, - "title": "Will Playground be available for self-hosted?", - "href": "https://github.com/orgs/langfuse/discussions/2073", - "created_at": "2024-05-16T12:40:30Z", - "upvotes": 4, - "comment_count": 2, - "resolved": true, + "number": 2721, + "title": "Add note on each prompt version", + "href": "https://github.com/orgs/langfuse/discussions/2721", + "created_at": "2024-07-23T14:48:02Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, "labels": [ - "feat-playground" + "feat-prompt-management" ], "author": { - "login": "sabatesduran", - "html_url": "https://github.com/sabatesduran" + "login": "cubxxw", + "html_url": "https://github.com/cubxxw" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2070, - "title": "Error on Local Deployment: \"Evals available in cloud only\" when Adding LLM API Key", - "href": "https://github.com/orgs/langfuse/discussions/2070", - "created_at": "2024-05-16T09:02:43Z", + "number": 2720, + "title": "Feature request [UI]: Remember column selection PER project in Traces view", + "href": "https://github.com/orgs/langfuse/discussions/2720", + "created_at": "2024-07-23T13:53:38Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "youngsj951104", - "html_url": "https://github.com/youngsj951104" + "login": "justingodden", + "html_url": "https://github.com/justingodden" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2069, - "title": "Does langfuse uses any Postgres-only features?", - "href": "https://github.com/orgs/langfuse/discussions/2069", - "created_at": "2024-05-16T06:36:16Z", - "upvotes": 2, - "comment_count": 1, - "resolved": true, + "number": 2710, + "title": "Support JSON messages in prompt management", + "href": "https://github.com/orgs/langfuse/discussions/2710", + "created_at": "2024-07-23T01:59:12Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, "labels": [], "author": { - "login": "rohts-patil", - "html_url": "https://github.com/rohts-patil" + "login": "jasonslyvia", + "html_url": "https://github.com/jasonslyvia" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2063, - "title": "Exception(\"parent run not found\")", - "href": "https://github.com/orgs/langfuse/discussions/2063", - "created_at": "2024-05-15T14:45:00Z", - "upvotes": 1, - "comment_count": 1, + "number": 2704, + "title": "Deleting user's traces via API to be GDPR compliant", + "href": "https://github.com/orgs/langfuse/discussions/2704", + "created_at": "2024-07-22T12:03:22Z", + "upvotes": 8, + "comment_count": 2, "resolved": false, "labels": [], "author": { - "login": "emailic", - "html_url": "https://github.com/emailic" + "login": "Stormyy", + "html_url": "https://github.com/Stormyy" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2042, - "title": "Availability of evals when self-hosting", - "href": "https://github.com/orgs/langfuse/discussions/2042", - "created_at": "2024-05-13T14:06:11Z", - "upvotes": 2, + "number": 2699, + "title": "Schemad or structured configuration for prompt", + "href": "https://github.com/orgs/langfuse/discussions/2699", + "created_at": "2024-07-22T02:29:13Z", + "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "feat-evals" + "feat-prompt-management" ], "author": { - "login": "derevyan", - "html_url": "https://github.com/derevyan" + "login": "jasonslyvia", + "html_url": "https://github.com/jasonslyvia" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2031, - "title": "Starting a demo from JS SDK and local running Langfuse, but cannot create init trace currently", - "href": "https://github.com/orgs/langfuse/discussions/2031", - "created_at": "2024-05-10T08:49:40Z", + "number": 2697, + "title": "A transparent mode", + "href": "https://github.com/orgs/langfuse/discussions/2697", + "created_at": "2024-07-21T20:55:43Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "JamieLee0510", - "html_url": "https://github.com/JamieLee0510" + "login": "emsi", + "html_url": "https://github.com/emsi" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2009, - "title": "Custom name of Span when using Langchain handler instead of RunnableSequence", - "href": "https://github.com/orgs/langfuse/discussions/2009", - "created_at": "2024-05-08T12:23:08Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 2684, + "title": "Langfuse batch prompts api should return prompt configs as well", + "href": "https://github.com/orgs/langfuse/discussions/2684", + "created_at": "2024-07-19T10:05:45Z", + "upvotes": 2, + "comment_count": 3, + "resolved": false, "labels": [ - "integration-langchain" + "feat-prompt-management", + "✅ Done" ], "author": { - "login": "nathan-vo810", - "html_url": "https://github.com/nathan-vo810" + "login": "ashutoshsaboo", + "html_url": "https://github.com/ashutoshsaboo" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2008, - "title": "Not able to add dataset item", - "href": "https://github.com/orgs/langfuse/discussions/2008", - "created_at": "2024-05-08T12:11:04Z", - "upvotes": 1, + "number": 2669, + "title": "Visualisation of graph execution", + "href": "https://github.com/orgs/langfuse/discussions/2669", + "created_at": "2024-07-18T08:44:03Z", + "upvotes": 2, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "nithin1995", - "html_url": "https://github.com/nithin1995" + "login": "VMinB12", + "html_url": "https://github.com/VMinB12" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2007, - "title": "Langfuse in PHP. Which are the minimum functions needed to implement?", - "href": "https://github.com/orgs/langfuse/discussions/2007", - "created_at": "2024-05-08T10:55:07Z", + "number": 2668, + "title": "I want to say something about user feedback", + "href": "https://github.com/orgs/langfuse/discussions/2668", + "created_at": "2024-07-18T07:57:50Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "phpia", - "html_url": "https://github.com/phpia" + "login": "cubxxw", + "html_url": "https://github.com/cubxxw" }, - "category": "Support" + "category": "Ideas" }, { - "number": 2005, - "title": "How to get trace data with langfuse-langchain in JS/TS?", - "href": "https://github.com/orgs/langfuse/discussions/2005", - "created_at": "2024-05-08T08:08:42Z", + "number": 2664, + "title": "Prompts are supported for export", + "href": "https://github.com/orgs/langfuse/discussions/2664", + "created_at": "2024-07-18T00:43:12Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [ - "integration-langchain" - ], + "comment_count": 1, + "resolved": false, + "labels": [], "author": { - "login": "AdiletBekmuratov", - "html_url": "https://github.com/AdiletBekmuratov" + "login": "cubxxw", + "html_url": "https://github.com/cubxxw" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1982, - "title": "trace doesn't work with .batch handler on langserve", - "href": "https://github.com/orgs/langfuse/discussions/1982", - "created_at": "2024-05-06T02:32:30Z", - "upvotes": 2, - "comment_count": 0, + "number": 2653, + "title": "Web page request is a little slow, whether to consider using golang to reconstruct", + "href": "https://github.com/orgs/langfuse/discussions/2653", + "created_at": "2024-07-17T07:08:45Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "restuprajna", - "html_url": "https://github.com/restuprajna" + "login": "cubxxw", + "html_url": "https://github.com/cubxxw" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1979, - "title": "get_prompt function failed in langfuse-python 2.28.3", - "href": "https://github.com/orgs/langfuse/discussions/1979", - "created_at": "2024-05-05T19:57:40Z", - "upvotes": 1, + "number": 2642, + "title": "Add ability to add name or label to a Langfuse API key", + "href": "https://github.com/orgs/langfuse/discussions/2642", + "created_at": "2024-07-16T17:08:42Z", + "upvotes": 5, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [], "author": { - "login": "nathan-vo810", - "html_url": "https://github.com/nathan-vo810" + "login": "agibralter", + "html_url": "https://github.com/agibralter" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1969, - "title": "How to utilize a dataset w/ typescript and langchain integration", - "href": "https://github.com/orgs/langfuse/discussions/1969", - "created_at": "2024-05-03T15:22:21Z", - "upvotes": 1, - "comment_count": 2, + "number": 2625, + "title": "Track Openai Assistant API costs", + "href": "https://github.com/orgs/langfuse/discussions/2625", + "created_at": "2024-07-15T07:50:18Z", + "upvotes": 4, + "comment_count": 0, "resolved": false, "labels": [ - "✅ Done", - "feat-datasets" + "integration-openai" ], "author": { - "login": "sahellebusch", - "html_url": "https://github.com/sahellebusch" + "login": "christos-bsq", + "html_url": "https://github.com/christos-bsq" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1957, - "title": "DevOps: What is the best way to create separate Langfuse instances in different environments: Dev, Test, QA, Prod?", - "href": "https://github.com/orgs/langfuse/discussions/1957", - "created_at": "2024-05-02T21:28:07Z", - "upvotes": 2, - "comment_count": 2, - "resolved": true, + "number": 2624, + "title": "Add tool / function calling and tool messages to Prompt Management", + "href": "https://github.com/orgs/langfuse/discussions/2624", + "created_at": "2024-07-15T06:49:50Z", + "upvotes": 3, + "comment_count": 0, + "resolved": false, "labels": [ - "self-hosting" + "feat-prompt-management" ], "author": { - "login": "aiakubovich", - "html_url": "https://github.com/aiakubovich" + "login": "eloko7", + "html_url": "https://github.com/eloko7" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1952, - "title": "How to communicate trace-id between backend and frontend ? (langchain+langserve integration)", - "href": "https://github.com/orgs/langfuse/discussions/1952", - "created_at": "2024-05-02T13:48:20Z", + "number": 2622, + "title": "Inbuild langfuse tracing.", + "href": "https://github.com/orgs/langfuse/discussions/2622", + "created_at": "2024-07-13T10:39:13Z", "upvotes": 1, - "comment_count": 3, + "comment_count": 0, "resolved": false, - "labels": [ - "integration-langchain" - ], + "labels": [], "author": { - "login": "Sinnaeve", - "html_url": "https://github.com/Sinnaeve" + "login": "rashid-globallogic", + "html_url": "https://github.com/rashid-globallogic" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1946, - "title": "Not able to build docker image from web/Dockerfile", - "href": "https://github.com/orgs/langfuse/discussions/1946", - "created_at": "2024-05-02T09:41:18Z", + "number": 2605, + "title": "DSPy tracing", + "href": "https://github.com/orgs/langfuse/discussions/2605", + "created_at": "2024-07-10T12:52:35Z", "upvotes": 2, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "self-hosting" + "integrations", + "✅ Done", + "integration-dspy" ], "author": { - "login": "Subham0793", - "html_url": "https://github.com/Subham0793" + "login": "paolotamag", + "html_url": "https://github.com/paolotamag" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1940, - "title": "Simple Prompt -> LLM error with Usage Object?", - "href": "https://github.com/orgs/langfuse/discussions/1940", - "created_at": "2024-05-01T13:47:14Z", - "upvotes": 2, - "comment_count": 1, - "resolved": true, - "labels": [], - "author": { - "login": "tzilkha", - "html_url": "https://github.com/tzilkha" - }, - "category": "Support" - }, - { - "number": 1864, - "title": "Can't see traces in the webUI if callback_handler passed to LLM init constructor", - "href": "https://github.com/orgs/langfuse/discussions/1864", - "created_at": "2024-04-25T21:01:54Z", + "number": 2586, + "title": "Feat: Ability to change curreny for model usage costs.", + "href": "https://github.com/orgs/langfuse/discussions/2586", + "created_at": "2024-07-09T15:40:22Z", "upvotes": 2, "comment_count": 1, "resolved": false, - "labels": [], - "author": { - "login": "gabrielfior", - "html_url": "https://github.com/gabrielfior" - }, - "category": "Support" - }, - { - "number": 1860, - "title": "Alter generation names with LangChain integration", - "href": "https://github.com/orgs/langfuse/discussions/1860", - "created_at": "2024-04-25T18:12:35Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, "labels": [ - "integration-langchain" + "feat-cost-tracking" ], "author": { - "login": "nic-asnes-klaviyo", - "html_url": "https://github.com/nic-asnes-klaviyo" + "login": "jannikstdl", + "html_url": "https://github.com/jannikstdl" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1831, - "title": "how to check only output tokens and models costs related to only output tokens?", - "href": "https://github.com/orgs/langfuse/discussions/1831", - "created_at": "2024-04-24T12:27:17Z", - "upvotes": 2, + "number": 2578, + "title": "Conditional Trace Content/Message submission", + "href": "https://github.com/orgs/langfuse/discussions/2578", + "created_at": "2024-07-09T09:57:26Z", + "upvotes": 3, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "manishiitg", - "html_url": "https://github.com/manishiitg" + "login": "simonwh", + "html_url": "https://github.com/simonwh" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1814, - "title": "Deploy to heroku", - "href": "https://github.com/orgs/langfuse/discussions/1814", - "created_at": "2024-04-23T13:56:27Z", + "number": 2577, + "title": "Detailed and Interactive Plot Visualization like WandB", + "href": "https://github.com/orgs/langfuse/discussions/2577", + "created_at": "2024-07-09T09:19:38Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [ - "self-hosting" - ], + "comment_count": 3, + "resolved": false, + "labels": [], "author": { - "login": "MarcoSteinke", - "html_url": "https://github.com/MarcoSteinke" + "login": "yusuke-intern", + "html_url": "https://github.com/yusuke-intern" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1788, - "title": "Need help with resolving long runtimes when Langfuse tracing is enabled", - "href": "https://github.com/orgs/langfuse/discussions/1788", - "created_at": "2024-04-19T17:46:05Z", - "upvotes": 2, + "number": 2576, + "title": "Log prob on Langfuse", + "href": "https://github.com/orgs/langfuse/discussions/2576", + "created_at": "2024-07-09T09:16:23Z", + "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "integration-openai" + ], "author": { - "login": "pooja1423", - "html_url": "https://github.com/pooja1423" + "login": "yusuke-intern", + "html_url": "https://github.com/yusuke-intern" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1785, - "title": "How to limit the number of traces", - "href": "https://github.com/orgs/langfuse/discussions/1785", - "created_at": "2024-04-19T10:29:17Z", + "number": 2573, + "title": "Prompt Cataloguing and prompt github", + "href": "https://github.com/orgs/langfuse/discussions/2573", + "created_at": "2024-07-08T20:05:23Z", "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "feat-prompt-management" + ], "author": { - "login": "secsilm", - "html_url": "https://github.com/secsilm" + "login": "kunal2002", + "html_url": "https://github.com/kunal2002" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1773, - "title": "Flowise 1.6.5 can not Trace", - "href": "https://github.com/orgs/langfuse/discussions/1773", - "created_at": "2024-04-18T11:55:32Z", + "number": 2571, + "title": "If Data/Metadata given to Langfuse SDK that exceeds Langfuse's limit, log/throw/emit Stack Trace", + "href": "https://github.com/orgs/langfuse/discussions/2571", + "created_at": "2024-07-08T15:17:52Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "lknbv5", - "html_url": "https://github.com/lknbv5" + "login": "josiahbryan", + "html_url": "https://github.com/josiahbryan" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1759, - "title": "How to get generations and scores in the same trace when using OpenAI sdk or other tools", - "href": "https://github.com/orgs/langfuse/discussions/1759", - "created_at": "2024-04-17T15:56:51Z", - "upvotes": 1, + "number": 2539, + "title": "Include request's `tools` configuration in OpenAI LLM calls", + "href": "https://github.com/orgs/langfuse/discussions/2539", + "created_at": "2024-07-04T11:39:43Z", + "upvotes": 2, "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "integration-openai" + ], "author": { - "login": "databill86", - "html_url": "https://github.com/databill86" + "login": "ricwo", + "html_url": "https://github.com/ricwo" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1712, - "title": "Invalid public key", - "href": "https://github.com/orgs/langfuse/discussions/1712", - "created_at": "2024-04-14T18:11:51Z", - "upvotes": 1, + "number": 2534, + "title": "Simple graphs and metrics for scores and evaluations", + "href": "https://github.com/orgs/langfuse/discussions/2534", + "created_at": "2024-07-03T17:14:42Z", + "upvotes": 2, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "taaha3244", - "html_url": "https://github.com/taaha3244" + "login": "justinwiley", + "html_url": "https://github.com/justinwiley" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1672, - "title": "Cookies not allowed", - "href": "https://github.com/orgs/langfuse/discussions/1672", - "created_at": "2024-04-11T07:43:53Z", + "number": 2529, + "title": "feat: Track Exceptions while using Decorators", + "href": "https://github.com/orgs/langfuse/discussions/2529", + "created_at": "2024-07-03T11:40:19Z", "upvotes": 1, - "comment_count": 3, + "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "integration-python-decorator" + ], "author": { - "login": "danielpirs", - "html_url": "https://github.com/danielpirs" + "login": "Manonandan", + "html_url": "https://github.com/Manonandan" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1649, - "title": "Run Langchain Evaluations on data in Langfuse , Why is the prompt not considered, and could this lead to evaluation flaws?", - "href": "https://github.com/orgs/langfuse/discussions/1649", - "created_at": "2024-04-10T05:25:28Z", + "number": 2523, + "title": "Feature Request: Sidebar Display for Trace Details in Dataset Runs", + "href": "https://github.com/orgs/langfuse/discussions/2523", + "created_at": "2024-07-02T15:00:47Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 3, "resolved": false, - "labels": [], + "labels": [ + "feat-datasets" + ], "author": { - "login": "pengpengIlove", - "html_url": "https://github.com/pengpengIlove" + "login": "tuan3w", + "html_url": "https://github.com/tuan3w" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1610, - "title": "Scoring a trace after the LLM chain returns", - "href": "https://github.com/orgs/langfuse/discussions/1610", - "created_at": "2024-04-07T15:12:34Z", - "upvotes": 1, + "number": 2511, + "title": "Scoring dataset runs, e.g. precision, recall, f-value", + "href": "https://github.com/orgs/langfuse/discussions/2511", + "created_at": "2024-07-02T08:10:21Z", + "upvotes": 8, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ + "feat-datasets", "feat-scores" ], "author": { - "login": "pooja1423", - "html_url": "https://github.com/pooja1423" + "login": "yusuke-intern", + "html_url": "https://github.com/yusuke-intern" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1601, - "title": "Okta auth got `read ECONNRESET`", - "href": "https://github.com/orgs/langfuse/discussions/1601", - "created_at": "2024-04-04T03:46:08Z", - "upvotes": 1, - "comment_count": 2, + "number": 2510, + "title": "How can we see traces of MULTIMODAL llms over langfuse ?", + "href": "https://github.com/orgs/langfuse/discussions/2510", + "created_at": "2024-07-02T05:15:59Z", + "upvotes": 4, + "comment_count": 3, "resolved": false, - "labels": [], + "labels": [ + "✅ Done", + "feat-multimodal" + ], "author": { - "login": "tmwatchanan", - "html_url": "https://github.com/tmwatchanan" + "login": "Aaryaveerkrishna23", + "html_url": "https://github.com/Aaryaveerkrishna23" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1538, - "title": "Trace input is null when passing in nodes, or Documents with transformations to VectorStoreIndex constructor", - "href": "https://github.com/orgs/langfuse/discussions/1538", - "created_at": "2024-03-29T00:30:49Z", - "upvotes": 1, - "comment_count": 1, - "resolved": false, - "labels": [], - "author": { - "login": "mwertheim-zco", - "html_url": "https://github.com/mwertheim-zco" - }, - "category": "Support" - }, - { - "number": 1536, - "title": "Tracing and Session support on Integrations like LiteLLM Proxy and others and Is LangFuse logging a background process?", - "href": "https://github.com/orgs/langfuse/discussions/1536", - "created_at": "2024-03-28T20:22:49Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 2509, + "title": "Support OpenTelemetry-based instrumentation (traceloop openllmetry and others)", + "href": "https://github.com/orgs/langfuse/discussions/2509", + "created_at": "2024-07-02T02:29:14Z", + "upvotes": 8, + "comment_count": 7, + "resolved": false, "labels": [ - "integration-litellm", - "feat-sessions" + "integrations" ], "author": { - "login": "Harryalways317", - "html_url": "https://github.com/Harryalways317" + "login": "gyliu513", + "html_url": "https://github.com/gyliu513" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1528, - "title": "Aggregated project from multiple langfuse servers", - "href": "https://github.com/orgs/langfuse/discussions/1528", - "created_at": "2024-03-28T09:01:37Z", - "upvotes": 3, + "number": 2508, + "title": "Enable Langfuse can expose metrics in Prometheus format", + "href": "https://github.com/orgs/langfuse/discussions/2508", + "created_at": "2024-07-02T02:25:24Z", + "upvotes": 7, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "juan-abia", - "html_url": "https://github.com/juan-abia" + "login": "gyliu513", + "html_url": "https://github.com/gyliu513" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1524, - "title": "How to add default user and project to self-hosted docker?", - "href": "https://github.com/orgs/langfuse/discussions/1524", - "created_at": "2024-03-28T08:00:07Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 2501, + "title": "Use Langchain LCEL + Langserve + run time user_id/session_id", + "href": "https://github.com/orgs/langfuse/discussions/2501", + "created_at": "2024-07-01T15:51:47Z", + "upvotes": 4, + "comment_count": 1, + "resolved": false, "labels": [ - "self-hosting" + "integration-langchain", + "feat-users", + "feat-sessions" ], "author": { - "login": "tzsombor95", - "html_url": "https://github.com/tzsombor95" - }, - "category": "Support" - }, - { - "number": 1512, - "title": "[Alerts] Connect to Slack", - "href": "https://github.com/orgs/langfuse/discussions/1512", - "created_at": "2024-03-27T08:04:49Z", - "upvotes": 3, - "comment_count": 1, - "resolved": true, - "labels": [], - "author": { - "login": "hypernovas", - "html_url": "https://github.com/hypernovas" + "login": "ravediamond", + "html_url": "https://github.com/ravediamond" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1486, - "title": "Update/delete score using python sdk", - "href": "https://github.com/orgs/langfuse/discussions/1486", - "created_at": "2024-03-25T20:13:55Z", - "upvotes": 4, + "number": 2493, + "title": "Easy token price estimates for 400+ LLMs", + "href": "https://github.com/orgs/langfuse/discussions/2493", + "created_at": "2024-07-01T06:55:56Z", + "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "feat-scores" + "feat-cost-tracking" ], "author": { - "login": "msanand", - "html_url": "https://github.com/msanand" + "login": "derevyan", + "html_url": "https://github.com/derevyan" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1481, - "title": "502-Bad Request", - "href": "https://github.com/orgs/langfuse/discussions/1481", - "created_at": "2024-03-22T13:06:18Z", - "upvotes": 1, + "number": 2488, + "title": "Add contextmanager support to python decorator", + "href": "https://github.com/orgs/langfuse/discussions/2488", + "created_at": "2024-06-29T20:43:50Z", + "upvotes": 6, "comment_count": 2, - "resolved": true, + "resolved": false, "labels": [ - "self-hosting" + "integration-python-decorator" ], "author": { - "login": "tbarbito", - "html_url": "https://github.com/tbarbito" + "login": "yaniv-aknin", + "html_url": "https://github.com/yaniv-aknin" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1466, - "title": "bug: Potential bug with AzureAD auth setup", - "href": "https://github.com/orgs/langfuse/discussions/1466", - "created_at": "2024-03-22T07:12:43Z", - "upvotes": 1, - "comment_count": 1, + "number": 2469, + "title": "Adding userId / author to score (custom metadata)", + "href": "https://github.com/orgs/langfuse/discussions/2469", + "created_at": "2024-06-27T19:02:17Z", + "upvotes": 4, + "comment_count": 3, "resolved": false, "labels": [ - "self-hosting" + "feat-scores", + "feat-users" ], "author": { - "login": "mprudra", - "html_url": "https://github.com/mprudra" + "login": "ivanviragine", + "html_url": "https://github.com/ivanviragine" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1449, - "title": "Langfuse session ID when using Chainlit", - "href": "https://github.com/orgs/langfuse/discussions/1449", - "created_at": "2024-03-20T00:57:09Z", + "number": 2456, + "title": "Export to CSV feature in the Traces", + "href": "https://github.com/orgs/langfuse/discussions/2456", + "created_at": "2024-06-27T11:02:47Z", "upvotes": 1, - "comment_count": 2, + "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "tituslhy", - "html_url": "https://github.com/tituslhy" + "login": "Aniket3007", + "html_url": "https://github.com/Aniket3007" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1445, - "title": "Linking dataset run items with existing callback handler", - "href": "https://github.com/orgs/langfuse/discussions/1445", - "created_at": "2024-03-19T16:54:54Z", + "number": 2454, + "title": "Expand all json-views of Dataset items etc.", + "href": "https://github.com/orgs/langfuse/discussions/2454", + "created_at": "2024-06-27T08:18:23Z", "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [ + "✅ Done", "feat-datasets" ], "author": { - "login": "subandwho", - "html_url": "https://github.com/subandwho" + "login": "tkreuder", + "html_url": "https://github.com/tkreuder" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1434, - "title": "Add UserID and Feedback when using LlamaIndex Integration", - "href": "https://github.com/orgs/langfuse/discussions/1434", - "created_at": "2024-03-18T20:24:29Z", + "number": 2438, + "title": "Bedrock provider when using llamaindex", + "href": "https://github.com/orgs/langfuse/discussions/2438", + "created_at": "2024-06-26T11:00:54Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "integraton-llamaindex" + "integraton-llamaindex", + "integration-amazon-bedrock" ], "author": { - "login": "skelleex", - "html_url": "https://github.com/skelleex" + "login": "mdciri", + "html_url": "https://github.com/mdciri" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1432, - "title": "langfuse.api.resources.commons.errors.not_found_error.NotFoundError: status_code: 404, body: {'message': 'Observation not found'}", - "href": "https://github.com/orgs/langfuse/discussions/1432", - "created_at": "2024-03-18T13:29:05Z", - "upvotes": 1, + "number": 2437, + "title": "Project members management via public API", + "href": "https://github.com/orgs/langfuse/discussions/2437", + "created_at": "2024-06-26T10:03:50Z", + "upvotes": 3, "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "feat-rbac" + ], "author": { - "login": "emailic", - "html_url": "https://github.com/emailic" + "login": "tmarenko", + "html_url": "https://github.com/tmarenko" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1429, - "title": "Hybrid usage Langfuse among OpenAI calls as well Langchain", - "href": "https://github.com/orgs/langfuse/discussions/1429", - "created_at": "2024-03-17T14:09:57Z", + "number": 2402, + "title": "Add string data type in score config", + "href": "https://github.com/orgs/langfuse/discussions/2402", + "created_at": "2024-06-24T11:12:54Z", "upvotes": 1, "comment_count": 1, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "feat-scores" + ], "author": { - "login": "mikeon", - "html_url": "https://github.com/mikeon" + "login": "emfhal", + "html_url": "https://github.com/emfhal" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1420, - "title": "Datasets list / by id", - "href": "https://github.com/orgs/langfuse/discussions/1420", - "created_at": "2024-03-15T02:22:27Z", - "upvotes": 2, - "comment_count": 2, - "resolved": true, + "number": 2400, + "title": "Support for Custom Base URL Prefix in Langfuse (nextjs basepath)", + "href": "https://github.com/orgs/langfuse/discussions/2400", + "created_at": "2024-06-24T09:57:57Z", + "upvotes": 21, + "comment_count": 9, + "resolved": false, "labels": [ - "feat-datasets" + "✅ Done", + "self-hosting" ], "author": { - "login": "norton120", - "html_url": "https://github.com/norton120" - }, - "category": "Support" + "login": "databill86", + "html_url": "https://github.com/databill86" + }, + "category": "Ideas" }, { - "number": 1417, - "title": "Running Langfuse in Kubernetes", - "href": "https://github.com/orgs/langfuse/discussions/1417", - "created_at": "2024-03-14T19:59:42Z", + "number": 2397, + "title": "Add ARM64 docker image", + "href": "https://github.com/orgs/langfuse/discussions/2397", + "created_at": "2024-06-21T13:35:24Z", "upvotes": 1, "comment_count": 2, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "✅ Done", + "self-hosting" + ], "author": { - "login": "mikeon", - "html_url": "https://github.com/mikeon" + "login": "lucasiscovici", + "html_url": "https://github.com/lucasiscovici" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1382, - "title": "Match LLMs from AWS Bedrock to added model definition", - "href": "https://github.com/orgs/langfuse/discussions/1382", - "created_at": "2024-03-09T08:28:53Z", - "upvotes": 2, - "comment_count": 0, + "number": 2390, + "title": "Implement Duplication Check for Prompt Versions in Langfuse", + "href": "https://github.com/orgs/langfuse/discussions/2390", + "created_at": "2024-06-21T08:03:39Z", + "upvotes": 1, + "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "feat-prompt-management" + ], "author": { - "login": "DominikNeumaier", - "html_url": "https://github.com/DominikNeumaier" + "login": "sapipoZZZ", + "html_url": "https://github.com/sapipoZZZ" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1380, - "title": "Langfuse flush() taking a long time and hangs", - "href": "https://github.com/orgs/langfuse/discussions/1380", - "created_at": "2024-03-09T00:09:55Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [], + "number": 2378, + "title": "Number of times a prompt was fetched", + "href": "https://github.com/orgs/langfuse/discussions/2378", + "created_at": "2024-06-20T07:37:12Z", + "upvotes": 3, + "comment_count": 0, + "resolved": false, + "labels": [ + "feat-prompt-management" + ], "author": { - "login": "venu-shapley", - "html_url": "https://github.com/venu-shapley" + "login": "subhampasari", + "html_url": "https://github.com/subhampasari" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1373, - "title": "How to fix error when running docs app demo chat", - "href": "https://github.com/orgs/langfuse/discussions/1373", - "created_at": "2024-03-08T00:08:46Z", + "number": 2376, + "title": "Allow for custom OAuth scopes when self-hosing", + "href": "https://github.com/orgs/langfuse/discussions/2376", + "created_at": "2024-06-19T22:23:59Z", "upvotes": 1, "comment_count": 1, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "feat-auth" + ], "author": { - "login": "luandro", - "html_url": "https://github.com/luandro" + "login": "0x77dev", + "html_url": "https://github.com/0x77dev" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1357, - "title": "Run items not appearing when linking to a trace and not a span or a generation", - "href": "https://github.com/orgs/langfuse/discussions/1357", - "created_at": "2024-03-07T10:17:34Z", + "number": 2371, + "title": "SBS Markdown mode for dataset runs", + "href": "https://github.com/orgs/langfuse/discussions/2371", + "created_at": "2024-06-19T14:57:32Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, + "comment_count": 1, + "resolved": false, "labels": [ "feat-datasets" ], "author": { - "login": "ladislasdellinger", - "html_url": "https://github.com/ladislasdellinger" + "login": "pfurovYnP", + "html_url": "https://github.com/pfurovYnP" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1353, - "title": "How do I add custom LLM APIs to the Langfuse UI?", - "href": "https://github.com/orgs/langfuse/discussions/1353", - "created_at": "2024-03-07T06:33:23Z", - "upvotes": 0, + "number": 2358, + "title": "Add view mode to Settings", + "href": "https://github.com/orgs/langfuse/discussions/2358", + "created_at": "2024-06-17T12:48:04Z", + "upvotes": 1, "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "yudhiesh", - "html_url": "https://github.com/yudhiesh" + "login": "emfhal", + "html_url": "https://github.com/emfhal" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1336, - "title": "Applying database migrations failed. This is mostly caused by the database being unavailable.", - "href": "https://github.com/orgs/langfuse/discussions/1336", - "created_at": "2024-03-06T09:10:19Z", - "upvotes": 1, - "comment_count": 2, + "number": 2352, + "title": "Support SAML login protocol", + "href": "https://github.com/orgs/langfuse/discussions/2352", + "created_at": "2024-06-17T07:14:14Z", + "upvotes": 4, + "comment_count": 1, "resolved": false, - "labels": [], + "labels": [ + "self-hosting" + ], "author": { - "login": "everyfin-in", - "html_url": "https://github.com/everyfin-in" + "login": "emfhal", + "html_url": "https://github.com/emfhal" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1335, - "title": "Openai and null traces for input/output/metadata", - "href": "https://github.com/orgs/langfuse/discussions/1335", - "created_at": "2024-03-06T02:02:46Z", + "number": 2343, + "title": "Bring Langfuse to Cloud Marketplaces", + "href": "https://github.com/orgs/langfuse/discussions/2343", + "created_at": "2024-06-14T06:41:18Z", "upvotes": 2, - "comment_count": 0, + "comment_count": 2, "resolved": false, - "labels": [], + "labels": [ + "self-hosting" + ], "author": { "login": "aiakubovich", "html_url": "https://github.com/aiakubovich" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1328, - "title": "Incompatibility between openllmetry and langfuse OpenAI wrapper", - "href": "https://github.com/orgs/langfuse/discussions/1328", - "created_at": "2024-03-05T17:03:34Z", + "number": 2336, + "title": "Saving a filter", + "href": "https://github.com/orgs/langfuse/discussions/2336", + "created_at": "2024-06-13T09:15:59Z", "upvotes": 1, - "comment_count": 1, + "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "pamelafox", - "html_url": "https://github.com/pamelafox" + "login": "avinash361-devrev", + "html_url": "https://github.com/avinash361-devrev" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1326, - "title": "Does Langfuse integrate with LiteLLM Proxy Server?", - "href": "https://github.com/orgs/langfuse/discussions/1326", - "created_at": "2024-03-05T15:25:37Z", + "number": 2331, + "title": "Pendo integration", + "href": "https://github.com/orgs/langfuse/discussions/2331", + "created_at": "2024-06-12T18:22:32Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [], "author": { - "login": "alphanome", - "html_url": "https://github.com/alphanome" + "login": "mrunaaaaaal", + "html_url": "https://github.com/mrunaaaaaal" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1325, - "title": "Do you need a helm chart of langfuse?", - "href": "https://github.com/orgs/langfuse/discussions/1325", - "created_at": "2024-03-05T15:02:42Z", + "number": 2282, + "title": "[Dashboard] Update Scores Chart to include number of scores on secondary y axis", + "href": "https://github.com/orgs/langfuse/discussions/2282", + "created_at": "2024-06-10T08:41:41Z", "upvotes": 1, "comment_count": 1, "resolved": false, - "labels": [], - "author": { - "login": "artemus717", - "html_url": "https://github.com/artemus717" - }, - "category": "Support" - }, - { - "number": 1323, - "title": "When referencing the local langfuse in the langserve code, an error occurs:“ImportError: cannot import name 'ChatDeepInfra' from 'langchain_community.chat_models...”", - "href": "https://github.com/orgs/langfuse/discussions/1323", - "created_at": "2024-03-05T13:03:49Z", - "upvotes": 2, - "comment_count": 2, - "resolved": true, - "labels": [], + "labels": [ + "feat-dashboard" + ], "author": { - "login": "zhenlong-zhu", - "html_url": "https://github.com/zhenlong-zhu" + "login": "charlieviettq", + "html_url": "https://github.com/charlieviettq" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1225, - "title": "Can Langfuse be used to record the records of ConversationChain in LangChain?", - "href": "https://github.com/orgs/langfuse/discussions/1225", - "created_at": "2024-02-22T09:24:34Z", - "upvotes": 1, + "number": 2278, + "title": "Type of input and output of each span visible in the UI", + "href": "https://github.com/orgs/langfuse/discussions/2278", + "created_at": "2024-06-08T21:17:48Z", + "upvotes": 3, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "integration-langchain" + "ui" ], "author": { - "login": "lyzltysgithub", - "html_url": "https://github.com/lyzltysgithub" + "login": "arthurGrigo", + "html_url": "https://github.com/arthurGrigo" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1193, - "title": "What is the shadow database needed for?", - "href": "https://github.com/orgs/langfuse/discussions/1193", - "created_at": "2024-02-17T08:23:33Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, + "number": 2268, + "title": "Langfuse retention settings", + "href": "https://github.com/orgs/langfuse/discussions/2268", + "created_at": "2024-06-07T12:27:32Z", + "upvotes": 8, + "comment_count": 6, + "resolved": false, "labels": [], "author": { - "login": "Stadly", - "html_url": "https://github.com/Stadly" + "login": "sudhanshu746", + "html_url": "https://github.com/sudhanshu746" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1184, - "title": "Unable to set session id or other CallbackHandler parameters when passing trace client in langchain sdk", - "href": "https://github.com/orgs/langfuse/discussions/1184", - "created_at": "2024-02-16T08:01:51Z", + "number": 2241, + "title": "Tracing integration with unify.ai", + "href": "https://github.com/orgs/langfuse/discussions/2241", + "created_at": "2024-06-05T15:17:00Z", + "upvotes": 5, + "comment_count": 3, + "resolved": false, + "labels": [ + "integrations" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 2237, + "title": "Add Langchain Support to Prompt Management", + "href": "https://github.com/orgs/langfuse/discussions/2237", + "created_at": "2024-06-05T10:05:13Z", + "upvotes": 34, + "comment_count": 5, + "resolved": false, + "labels": [ + "feat-prompt-management", + "integration-langchain", + "✅ Done" + ], + "author": { + "login": "guidev", + "html_url": "https://github.com/guidev" + }, + "category": "Ideas" + }, + { + "number": 2226, + "title": "Monitoring Costs and Traces generated by RAGAS", + "href": "https://github.com/orgs/langfuse/discussions/2226", + "created_at": "2024-06-04T09:35:25Z", + "upvotes": 4, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "paolotamag", + "html_url": "https://github.com/paolotamag" + }, + "category": "Ideas" + }, + { + "number": 2215, + "title": "new chart in dashboard for booleans metrics", + "href": "https://github.com/orgs/langfuse/discussions/2215", + "created_at": "2024-06-03T12:48:37Z", "upvotes": 1, "comment_count": 1, - "resolved": true, + "resolved": false, + "labels": [], + "author": { + "login": "paolotamag", + "html_url": "https://github.com/paolotamag" + }, + "category": "Ideas" + }, + { + "number": 2210, + "title": "MessagesPlaceholder in \"Create New Prompt\" panel", + "href": "https://github.com/orgs/langfuse/discussions/2210", + "created_at": "2024-06-03T06:58:45Z", + "upvotes": 6, + "comment_count": 2, + "resolved": false, "labels": [ - "integration-langchain" + "feat-prompt-management" ], "author": { - "login": "sasidevtool", - "html_url": "https://github.com/sasidevtool" + "login": "NIKsun", + "html_url": "https://github.com/NIKsun" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1186, - "title": "How to set tags when using the Langchain Callback handler", - "href": "https://github.com/orgs/langfuse/discussions/1186", - "created_at": "2024-02-16T05:47:31Z", - "upvotes": 2, - "comment_count": 2, - "resolved": true, + "number": 2209, + "title": "Enhance data in daily metrics api endpoint", + "href": "https://github.com/orgs/langfuse/discussions/2209", + "created_at": "2024-06-02T14:38:15Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, "labels": [ - "sdk-python", - "integration-langchain", - "feat-tags" + "✅ Done", + "feat-api" ], "author": { - "login": "reza-mohideen", - "html_url": "https://github.com/reza-mohideen" + "login": "matthiaslau", + "html_url": "https://github.com/matthiaslau" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1179, - "title": "Ollama token counts", - "href": "https://github.com/orgs/langfuse/discussions/1179", - "created_at": "2024-02-15T23:38:39Z", + "number": 2203, + "title": "Ability to add comments to versions of prompts (\"commit message\")", + "href": "https://github.com/orgs/langfuse/discussions/2203", + "created_at": "2024-06-01T13:13:27Z", + "upvotes": 4, + "comment_count": 4, + "resolved": false, + "labels": [ + "feat-prompt-management" + ], + "author": { + "login": "ajram23", + "html_url": "https://github.com/ajram23" + }, + "category": "Ideas" + }, + { + "number": 2195, + "title": "Timeline/graph visualization for traces", + "href": "https://github.com/orgs/langfuse/discussions/2195", + "created_at": "2024-05-31T08:18:11Z", + "upvotes": 7, + "comment_count": 4, + "resolved": false, + "labels": [ + "✅ Done" + ], + "author": { + "login": "david1542", + "html_url": "https://github.com/david1542" + }, + "category": "Ideas" + }, + { + "number": 2194, + "title": "Terraform Provider for internal Langfuse configuration", + "href": "https://github.com/orgs/langfuse/discussions/2194", + "created_at": "2024-05-31T06:23:11Z", "upvotes": 2, - "comment_count": 2, - "resolved": true, + "comment_count": 1, + "resolved": false, "labels": [ - "feat-cost-tracking" + "self-hosting" ], "author": { - "login": "aiseei", - "html_url": "https://github.com/aiseei" + "login": "mroedder-d7", + "html_url": "https://github.com/mroedder-d7" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1310, - "title": "Trace of custom classes gives nondescriptive info", - "href": "https://github.com/orgs/langfuse/discussions/1310", - "created_at": "2024-02-06T14:13:26Z", + "number": 2184, + "title": "support query prompt via prompt id", + "href": "https://github.com/orgs/langfuse/discussions/2184", + "created_at": "2024-05-30T02:55:59Z", "upvotes": 1, - "comment_count": 0, + "comment_count": 1, "resolved": false, "labels": [], "author": { - "login": "mjungiewicz-exadel", - "html_url": "https://github.com/mjungiewicz-exadel" + "login": "hu9029", + "html_url": "https://github.com/hu9029" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1091, - "title": "How to pass span id to OpenAI `chat.completions.create`", - "href": "https://github.com/orgs/langfuse/discussions/1091", - "created_at": "2024-02-06T09:33:30Z", + "number": 2181, + "title": "Support for SDK entry-point wrapper around async REST API client", + "href": "https://github.com/orgs/langfuse/discussions/2181", + "created_at": "2024-05-29T17:50:22Z", "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "blazing-gig", + "html_url": "https://github.com/blazing-gig" + }, + "category": "Ideas" + }, + { + "number": 2176, + "title": "Support querying Users (GET) to support analytics pipeline solutions", + "href": "https://github.com/orgs/langfuse/discussions/2176", + "created_at": "2024-05-29T02:42:13Z", + "upvotes": 2, "comment_count": 1, - "resolved": true, + "resolved": false, "labels": [ - "integration-openai" + "feat-users" ], "author": { - "login": "techytushar", - "html_url": "https://github.com/techytushar" + "login": "Tjmstudios", + "html_url": "https://github.com/Tjmstudios" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1081, - "title": "Sessions vs Traces?", - "href": "https://github.com/orgs/langfuse/discussions/1081", - "created_at": "2024-02-05T21:06:03Z", - "upvotes": 1, + "number": 2161, + "title": "Prompt version only create when different", + "href": "https://github.com/orgs/langfuse/discussions/2161", + "created_at": "2024-05-27T23:47:21Z", + "upvotes": 4, "comment_count": 2, - "resolved": true, + "resolved": false, "labels": [ - "feat-sessions" + "feat-prompt-management" + ], + "author": { + "login": "brightsparc", + "html_url": "https://github.com/brightsparc" + }, + "category": "Ideas" + }, + { + "number": 2140, + "title": "clickhouse support", + "href": "https://github.com/orgs/langfuse/discussions/2140", + "created_at": "2024-05-24T15:21:14Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [ + "work-in-progress", + "performance" ], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "newcworld", + "html_url": "https://github.com/newcworld" + }, + "category": "Ideas" + }, + { + "number": 2131, + "title": "Export to data warehouses (BigQuery etc)", + "href": "https://github.com/orgs/langfuse/discussions/2131", + "created_at": "2024-05-23T15:52:18Z", + "upvotes": 18, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "rohan-mehta", + "html_url": "https://github.com/rohan-mehta" + }, + "category": "Ideas" + }, + { + "number": 2124, + "title": "Proposal: Add Support for Uploading Dataset Items via UI", + "href": "https://github.com/orgs/langfuse/discussions/2124", + "created_at": "2024-05-22T10:58:04Z", + "upvotes": 5, + "comment_count": 1, + "resolved": false, + "labels": [ + "feat-datasets" + ], + "author": { + "login": "vaddenz", + "html_url": "https://github.com/vaddenz" + }, + "category": "Ideas" + }, + { + "number": 2119, + "title": "Phidata support", + "href": "https://github.com/orgs/langfuse/discussions/2119", + "created_at": "2024-05-21T14:20:09Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [ + "integrations" + ], + "author": { + "login": "michaelpoluektov", + "html_url": "https://github.com/michaelpoluektov" + }, + "category": "Ideas" + }, + { + "number": 2104, + "title": "Feature Request: Tracing Sampling Rate Configuration for Langfuse", + "href": "https://github.com/orgs/langfuse/discussions/2104", + "created_at": "2024-05-20T16:23:05Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [ + "✅ Done" + ], + "author": { + "login": "himansrivastava", + "html_url": "https://github.com/himansrivastava" + }, + "category": "Ideas" + }, + { + "number": 2101, + "title": "feat: Adding AWS Cognito Authentication", + "href": "https://github.com/orgs/langfuse/discussions/2101", + "created_at": "2024-05-20T14:30:32Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [ + "✅ Done", + "feat-auth" + ], + "author": { + "login": "Shekswess", + "html_url": "https://github.com/Shekswess" + }, + "category": "Ideas" + }, + { + "number": 2097, + "title": "Markdown Rendering Option", + "href": "https://github.com/orgs/langfuse/discussions/2097", + "created_at": "2024-05-18T16:58:37Z", + "upvotes": 4, + "comment_count": 4, + "resolved": false, + "labels": [ + "✅ Done" + ], + "author": { + "login": "hburrichter", + "html_url": "https://github.com/hburrichter" + }, + "category": "Ideas" + }, + { + "number": 2081, + "title": "feat: inject langfuse info into langchain metadata", + "href": "https://github.com/orgs/langfuse/discussions/2081", + "created_at": "2024-05-16T20:43:41Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [ + "integration-langchain" + ], + "author": { + "login": "benobytes", + "html_url": "https://github.com/benobytes" + }, + "category": "Ideas" + }, + { + "number": 2072, + "title": "Adding prompt tags via Python SDK (or other code based interactions)", + "href": "https://github.com/orgs/langfuse/discussions/2072", + "created_at": "2024-05-16T09:46:20Z", + "upvotes": 5, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "simon-hiel", + "html_url": "https://github.com/simon-hiel" + }, + "category": "Ideas" + }, + { + "number": 2071, + "title": "Save playground conversation to a dataset", + "href": "https://github.com/orgs/langfuse/discussions/2071", + "created_at": "2024-05-16T09:24:29Z", + "upvotes": 3, + "comment_count": 0, + "resolved": false, + "labels": [ + "feat-datasets", + "feat-playground" + ], + "author": { + "login": "bderenzi", + "html_url": "https://github.com/bderenzi" + }, + "category": "Ideas" + }, + { + "number": 2065, + "title": "Support multiple prompts attached to a generation.", + "href": "https://github.com/orgs/langfuse/discussions/2065", + "created_at": "2024-05-15T22:16:35Z", + "upvotes": 3, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "jansenderr", + "html_url": "https://github.com/jansenderr" + }, + "category": "Ideas" + }, + { + "number": 2064, + "title": "Show explicit error when viewing a project that doesn't exist", + "href": "https://github.com/orgs/langfuse/discussions/2064", + "created_at": "2024-05-15T16:49:32Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "backmask", + "html_url": "https://github.com/backmask" + }, + "category": "Ideas" + }, + { + "number": 2045, + "title": "Requesting official support OpenAI's new gpt-4o model", + "href": "https://github.com/orgs/langfuse/discussions/2045", + "created_at": "2024-05-13T21:37:38Z", + "upvotes": 3, + "comment_count": 5, + "resolved": false, + "labels": [ + "integration-openai", + "✅ Done", + "feat-cost-tracking" + ], + "author": { + "login": "varenc", + "html_url": "https://github.com/varenc" + }, + "category": "Ideas" + }, + { + "number": 2043, + "title": "Support instrumentation through openllmetry", + "href": "https://github.com/orgs/langfuse/discussions/2043", + "created_at": "2024-05-13T19:27:59Z", + "upvotes": 8, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "baggiponte", + "html_url": "https://github.com/baggiponte" + }, + "category": "Ideas" + }, + { + "number": 2039, + "title": "Introduce the concept of \"sub-prompt\" to improve prompt reusability", + "href": "https://github.com/orgs/langfuse/discussions/2039", + "created_at": "2024-05-13T10:14:44Z", + "upvotes": 3, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "khaelys", + "html_url": "https://github.com/khaelys" + }, + "category": "Ideas" + }, + { + "number": 2030, + "title": "Add number of 'successful request' to traces list view", + "href": "https://github.com/orgs/langfuse/discussions/2030", + "created_at": "2024-05-09T23:25:27Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "arthurGrigo", + "html_url": "https://github.com/arthurGrigo" + }, + "category": "Ideas" + }, + { + "number": 2021, + "title": "Ask for a import/export on prompt management page", + "href": "https://github.com/orgs/langfuse/discussions/2021", + "created_at": "2024-05-09T03:17:50Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "ShaunDeng", + "html_url": "https://github.com/ShaunDeng" + }, + "category": "Ideas" + }, + { + "number": 2006, + "title": "Gitlab Auth Provider", + "href": "https://github.com/orgs/langfuse/discussions/2006", + "created_at": "2024-05-08T10:12:51Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "jsirex", + "html_url": "https://github.com/jsirex" + }, + "category": "Ideas" + }, + { + "number": 1990, + "title": "Add batch actions to traces", + "href": "https://github.com/orgs/langfuse/discussions/1990", + "created_at": "2024-05-07T09:37:42Z", + "upvotes": 3, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "nimbusaeta", + "html_url": "https://github.com/nimbusaeta" + }, + "category": "Ideas" + }, + { + "number": 1988, + "title": "Upload datasets via UI", + "href": "https://github.com/orgs/langfuse/discussions/1988", + "created_at": "2024-05-06T20:25:20Z", + "upvotes": 9, + "comment_count": 1, + "resolved": false, + "labels": [ + "feat-datasets" + ], + "author": { + "login": "assafweinberg", + "html_url": "https://github.com/assafweinberg" + }, + "category": "Ideas" + }, + { + "number": 1987, + "title": "API/UI to delete dataset items and runs", + "href": "https://github.com/orgs/langfuse/discussions/1987", + "created_at": "2024-05-06T17:13:16Z", + "upvotes": 24, + "comment_count": 2, + "resolved": false, + "labels": [ + "feat-datasets" + ], + "author": { + "login": "tomek82", + "html_url": "https://github.com/tomek82" + }, + "category": "Ideas" + }, + { + "number": 1963, + "title": "Is it possible integrate Langfuse with Microsoft Copilot Studio?", + "href": "https://github.com/orgs/langfuse/discussions/1963", + "created_at": "2024-05-03T03:33:22Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "aiakubovich", + "html_url": "https://github.com/aiakubovich" + }, + "category": "Ideas" + }, + { + "number": 2055, + "title": "Openai: Support IO capture when streaming function / tool call", + "href": "https://github.com/orgs/langfuse/discussions/2055", + "created_at": "2024-05-01T15:25:15Z", + "upvotes": 16, + "comment_count": 7, + "resolved": false, + "labels": [ + "sdk-python", + "integration-openai", + "✅ Done" + ], + "author": { + "login": "DanrForetellix", + "html_url": "https://github.com/DanrForetellix" + }, + "category": "Ideas" + }, + { + "number": 1941, + "title": "Looking into allowing more customization of the table", + "href": "https://github.com/orgs/langfuse/discussions/1941", + "created_at": "2024-05-01T14:47:32Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "Mohamed-Ayaan358", + "html_url": "https://github.com/Mohamed-Ayaan358" + }, + "category": "Ideas" + }, + { + "number": 1916, + "title": "Langchain integration Improvements", + "href": "https://github.com/orgs/langfuse/discussions/1916", + "created_at": "2024-04-30T13:23:19Z", + "upvotes": 2, + "comment_count": 2, + "resolved": false, + "labels": [ + "integration-langchain", + "✅ Done" + ], + "author": { + "login": "ajram23", + "html_url": "https://github.com/ajram23" + }, + "category": "Ideas" + }, + { + "number": 1904, + "title": "Retrieve prompts based on versioning rather than times for caching", + "href": "https://github.com/orgs/langfuse/discussions/1904", + "created_at": "2024-04-29T14:04:27Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [ + "feat-prompt-management" + ], + "author": { + "login": "ajram23", + "html_url": "https://github.com/ajram23" + }, + "category": "Ideas" + }, + { + "number": 1896, + "title": "Delete Session", + "href": "https://github.com/orgs/langfuse/discussions/1896", + "created_at": "2024-04-29T08:01:05Z", + "upvotes": 15, + "comment_count": 0, + "resolved": false, + "labels": [ + "feat-sessions" + ], + "author": { + "login": "rohan-gt", + "html_url": "https://github.com/rohan-gt" + }, + "category": "Ideas" + }, + { + "number": 1895, + "title": "linking prompts with tracing in langchain integration", + "href": "https://github.com/orgs/langfuse/discussions/1895", + "created_at": "2024-04-28T13:13:08Z", + "upvotes": 10, + "comment_count": 3, + "resolved": false, + "labels": [ + "feat-prompt-management", + "integration-langchain", + "✅ Done" + ], + "author": { + "login": "SatheeshJM", + "html_url": "https://github.com/SatheeshJM" + }, + "category": "Ideas" + }, + { + "number": 1867, + "title": "Add integration with evaluation frameworks", + "href": "https://github.com/orgs/langfuse/discussions/1867", + "created_at": "2024-04-25T23:09:03Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "johnnydevriese", + "html_url": "https://github.com/johnnydevriese" + }, + "category": "Ideas" + }, + { + "number": 1862, + "title": "Support Linking Execution Trace to DatasetItem without Fetching Entire Dataset", + "href": "https://github.com/orgs/langfuse/discussions/1862", + "created_at": "2024-04-25T18:57:08Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [ + "feat-datasets" + ], + "author": { + "login": "sfarthin", + "html_url": "https://github.com/sfarthin" + }, + "category": "Ideas" + }, + { + "number": 1858, + "title": "Platform User roles to allow or disable project creation", + "href": "https://github.com/orgs/langfuse/discussions/1858", + "created_at": "2024-04-25T16:00:12Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [ + "✅ Done", + "feat-rbac" + ], + "author": { + "login": "JMcGenn", + "html_url": "https://github.com/JMcGenn" + }, + "category": "Ideas" + }, + { + "number": 1851, + "title": "[oauth] Keycloak provider support", + "href": "https://github.com/orgs/langfuse/discussions/1851", + "created_at": "2024-04-25T12:39:26Z", + "upvotes": 7, + "comment_count": 1, + "resolved": false, + "labels": [ + "self-hosting" + ], + "author": { + "login": "9teen90nine", + "html_url": "https://github.com/9teen90nine" + }, + "category": "Ideas" + }, + { + "number": 1843, + "title": "Support GigaChat model from LangChain", + "href": "https://github.com/orgs/langfuse/discussions/1843", + "created_at": "2024-04-25T09:24:07Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [ + "integration-langchain" + ], + "author": { + "login": "Rai220", + "html_url": "https://github.com/Rai220" + }, + "category": "Ideas" + }, + { + "number": 1830, + "title": "Decorator should also be able to return JSON or Dictionary object", + "href": "https://github.com/orgs/langfuse/discussions/1830", + "created_at": "2024-04-24T09:41:39Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "nathan-vo810", + "html_url": "https://github.com/nathan-vo810" + }, + "category": "Ideas" + }, + { + "number": 1826, + "title": "Having a session_with_user client", + "href": "https://github.com/orgs/langfuse/discussions/1826", + "created_at": "2024-04-24T08:31:05Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "rtzy7", + "html_url": "https://github.com/rtzy7" + }, + "category": "Ideas" + }, + { + "number": 1823, + "title": "Change `/api/chatCompletion` to be a standard OpenAI proxy on `/api/v1/chat/completions`?", + "href": "https://github.com/orgs/langfuse/discussions/1823", + "created_at": "2024-04-23T19:48:34Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" + }, + "category": "Ideas" + }, + { + "number": 1820, + "title": "Auth using Microsoft Entra ID", + "href": "https://github.com/orgs/langfuse/discussions/1820", + "created_at": "2024-04-23T18:32:42Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [ + "✅ Done", + "self-hosting" + ], + "author": { + "login": "Stadly", + "html_url": "https://github.com/Stadly" + }, + "category": "Ideas" + }, + { + "number": 1816, + "title": "Add a metrics endpoint for Prometheus", + "href": "https://github.com/orgs/langfuse/discussions/1816", + "created_at": "2024-04-23T14:33:38Z", + "upvotes": 5, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "nolwennz", + "html_url": "https://github.com/nolwennz" + }, + "category": "Ideas" + }, + { + "number": 1813, + "title": "Provide an integration with Matomo Analytics so as for Posthog", + "href": "https://github.com/orgs/langfuse/discussions/1813", + "created_at": "2024-04-23T12:24:41Z", + "upvotes": 12, + "comment_count": 4, + "resolved": false, + "labels": [ + "integrations" + ], + "author": { + "login": "Chardonneaur", + "html_url": "https://github.com/Chardonneaur" + }, + "category": "Ideas" + }, + { + "number": 1800, + "title": "Add command r/command r plus via Azure Marketplace", + "href": "https://github.com/orgs/langfuse/discussions/1800", + "created_at": "2024-04-22T16:11:38Z", + "upvotes": 2, + "comment_count": 2, + "resolved": false, + "labels": [ + "bug", + "integration-langchain" + ], + "author": { + "login": "jayfk", + "html_url": "https://github.com/jayfk" + }, + "category": "Ideas" + }, + { + "number": 1794, + "title": "User-level dashboard", + "href": "https://github.com/orgs/langfuse/discussions/1794", + "created_at": "2024-04-22T01:56:15Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [ + "feat-users" + ], + "author": { + "login": "secsilm", + "html_url": "https://github.com/secsilm" + }, + "category": "Ideas" + }, + { + "number": 1793, + "title": "Request chart of min/avg/max input/output tokens", + "href": "https://github.com/orgs/langfuse/discussions/1793", + "created_at": "2024-04-21T13:33:39Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "secsilm", + "html_url": "https://github.com/secsilm" + }, + "category": "Ideas" + }, + { + "number": 1783, + "title": "Limit new user registration", + "href": "https://github.com/orgs/langfuse/discussions/1783", + "created_at": "2024-04-19T09:34:55Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [ + "self-hosting" + ], + "author": { + "login": "secsilm", + "html_url": "https://github.com/secsilm" + }, + "category": "Ideas" + }, + { + "number": 1781, + "title": "feature for python client:get traces by score", + "href": "https://github.com/orgs/langfuse/discussions/1781", + "created_at": "2024-04-19T09:12:48Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "StarsSparkle", + "html_url": "https://github.com/StarsSparkle" + }, + "category": "Ideas" + }, + { + "number": 1780, + "title": "Log for Function Calling", + "href": "https://github.com/orgs/langfuse/discussions/1780", + "created_at": "2024-04-19T06:40:55Z", + "upvotes": 6, + "comment_count": 1, + "resolved": false, + "labels": [ + "integration-openai" + ], + "author": { + "login": "jaindees", + "html_url": "https://github.com/jaindees" + }, + "category": "Ideas" + }, + { + "number": 1776, + "title": "SSO: Cognito", + "href": "https://github.com/orgs/langfuse/discussions/1776", + "created_at": "2024-04-18T20:40:43Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [ + "✅ Done", + "self-hosting" + ], + "author": { + "login": "theluk", + "html_url": "https://github.com/theluk" + }, + "category": "Ideas" + }, + { + "number": 1774, + "title": "PromptClient: Support mustache type export to langchain", + "href": "https://github.com/orgs/langfuse/discussions/1774", + "created_at": "2024-04-18T18:52:40Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "maxjacu", + "html_url": "https://github.com/maxjacu" + }, + "category": "Ideas" + }, + { + "number": 1770, + "title": "New REST API endpoint to get all prompts", + "href": "https://github.com/orgs/langfuse/discussions/1770", + "created_at": "2024-04-18T02:40:14Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "zoltan-fedor", + "html_url": "https://github.com/zoltan-fedor" + }, + "category": "Ideas" + }, + { + "number": 1769, + "title": "Request chart of the generation speed of tokens (tokens/s)", + "href": "https://github.com/orgs/langfuse/discussions/1769", + "created_at": "2024-04-18T02:14:37Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "secsilm", + "html_url": "https://github.com/secsilm" + }, + "category": "Ideas" + }, + { + "number": 1760, + "title": "annotation of traces in langfuse console?", + "href": "https://github.com/orgs/langfuse/discussions/1760", + "created_at": "2024-04-17T17:51:47Z", + "upvotes": 3, + "comment_count": 2, + "resolved": false, + "labels": [ + "✅ Done", + "feat-annotation" + ], + "author": { + "login": "erik-squared", + "html_url": "https://github.com/erik-squared" + }, + "category": "Ideas" + }, + { + "number": 1755, + "title": "feat: Prompt API Search (by tags)", + "href": "https://github.com/orgs/langfuse/discussions/1755", + "created_at": "2024-04-17T09:37:50Z", + "upvotes": 2, + "comment_count": 2, + "resolved": false, + "labels": [ + "✅ Done" + ], + "author": { + "login": "bryan-agicap", + "html_url": "https://github.com/bryan-agicap" + }, + "category": "Ideas" + }, + { + "number": 1744, + "title": "Is it possible to support Dify?", + "href": "https://github.com/orgs/langfuse/discussions/1744", + "created_at": "2024-04-16T20:55:11Z", + "upvotes": 2, + "comment_count": 2, + "resolved": false, + "labels": [ + "integrations", + "✅ Done", + "integration-dify" + ], + "author": { + "login": "jtsang4", + "html_url": "https://github.com/jtsang4" + }, + "category": "Ideas" + }, + { + "number": 1716, + "title": "feat: Add `TRACE_EVENTS` flag", + "href": "https://github.com/orgs/langfuse/discussions/1716", + "created_at": "2024-04-15T12:29:30Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [ + "✅ Done" + ], + "author": { + "login": "JorisAndrade", + "html_url": "https://github.com/JorisAndrade" + }, + "category": "Ideas" + }, + { + "number": 1715, + "title": "Add support for ZITADEL OIDC", + "href": "https://github.com/orgs/langfuse/discussions/1715", + "created_at": "2024-04-15T12:27:54Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [ + "self-hosting" + ], + "author": { + "login": "bitfactory-sem-denbroeder", + "html_url": "https://github.com/bitfactory-sem-denbroeder" + }, + "category": "Ideas" + }, + { + "number": 1711, + "title": "Webhook to trigger CI/CD pipeline when new prompt version is created", + "href": "https://github.com/orgs/langfuse/discussions/1711", + "created_at": "2024-04-14T13:46:30Z", + "upvotes": 5, + "comment_count": 1, + "resolved": false, + "labels": [ + "feat-prompt-management", + "feat-api" + ], + "author": { + "login": "tamdoEH", + "html_url": "https://github.com/tamdoEH" + }, + "category": "Ideas" + }, + { + "number": 1710, + "title": "Review feature for prompt deployment", + "href": "https://github.com/orgs/langfuse/discussions/1710", + "created_at": "2024-04-14T13:39:50Z", + "upvotes": 3, + "comment_count": 3, + "resolved": false, + "labels": [ + "feat-prompt-management" + ], + "author": { + "login": "tamdoEH", + "html_url": "https://github.com/tamdoEH" + }, + "category": "Ideas" + }, + { + "number": 1707, + "title": "API for custom model <> token usage pricing", + "href": "https://github.com/orgs/langfuse/discussions/1707", + "created_at": "2024-04-13T22:37:38Z", + "upvotes": 3, + "comment_count": 2, + "resolved": false, + "labels": [ + "✅ Done", + "feat-api" + ], + "author": { + "login": "rydamckinney", + "html_url": "https://github.com/rydamckinney" + }, + "category": "Ideas" + }, + { + "number": 1696, + "title": "Export & import for prompts, copy between projects", + "href": "https://github.com/orgs/langfuse/discussions/1696", + "created_at": "2024-04-12T20:28:47Z", + "upvotes": 16, + "comment_count": 7, + "resolved": false, + "labels": [ + "feat-prompt-management" + ], + "author": { + "login": "zoltan-fedor", + "html_url": "https://github.com/zoltan-fedor" + }, + "category": "Ideas" + }, + { + "number": 1692, + "title": "Read-only prompt keys?", + "href": "https://github.com/orgs/langfuse/discussions/1692", + "created_at": "2024-04-12T00:57:44Z", + "upvotes": 2, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" + }, + "category": "Ideas" + }, + { + "number": 1671, + "title": "Ability to run langfuse in tests automatically without manual involvement", + "href": "https://github.com/orgs/langfuse/discussions/1671", + "created_at": "2024-04-11T05:29:44Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [ + "✅ Done", + "self-hosting" + ], + "author": { + "login": "SinghCoder", + "html_url": "https://github.com/SinghCoder" + }, + "category": "Ideas" + }, + { + "number": 1664, + "title": "\"Task\" and \"Bot\" core abstractions", + "href": "https://github.com/orgs/langfuse/discussions/1664", + "created_at": "2024-04-10T20:24:53Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "sfarthin", + "html_url": "https://github.com/sfarthin" + }, + "category": "Ideas" + }, + { + "number": 1660, + "title": "Prompt Composability", + "href": "https://github.com/orgs/langfuse/discussions/1660", + "created_at": "2024-04-10T15:25:05Z", + "upvotes": 10, + "comment_count": 5, + "resolved": false, + "labels": [ + "feat-prompt-management" + ], + "author": { + "login": "meissnereric", + "html_url": "https://github.com/meissnereric" + }, + "category": "Ideas" + }, + { + "number": 1633, + "title": "feat: Function Calling Under OpenAI Format", + "href": "https://github.com/orgs/langfuse/discussions/1633", + "created_at": "2024-04-09T08:49:58Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [ + "feat-playground" + ], + "author": { + "login": "anhphong22", + "html_url": "https://github.com/anhphong22" + }, + "category": "Ideas" + }, + { + "number": 1630, + "title": "Groq - Mixtral", + "href": "https://github.com/orgs/langfuse/discussions/1630", + "created_at": "2024-04-09T05:11:12Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "mike4lyf", + "html_url": "https://github.com/mike4lyf" + }, + "category": "Ideas" + }, + { + "number": 1627, + "title": "VertexAI support", + "href": "https://github.com/orgs/langfuse/discussions/1627", + "created_at": "2024-04-08T22:43:38Z", + "upvotes": 3, + "comment_count": 1, + "resolved": false, + "labels": [ + "integration-langchain" + ], + "author": { + "login": "eles13", + "html_url": "https://github.com/eles13" + }, + "category": "Ideas" + }, + { + "number": 1613, + "title": "[Feature] Add a score value filter", + "href": "https://github.com/orgs/langfuse/discussions/1613", + "created_at": "2024-04-08T07:58:58Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "Hacky-DH", + "html_url": "https://github.com/Hacky-DH" + }, + "category": "Ideas" + }, + { + "number": 1612, + "title": "DSPY integration", + "href": "https://github.com/orgs/langfuse/discussions/1612", + "created_at": "2024-04-07T18:54:32Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "wdhitchc", + "html_url": "https://github.com/wdhitchc" + }, + "category": "Ideas" + }, + { + "number": 1566, + "title": "LangchainCallbackHandler httpx_client not accessible", + "href": "https://github.com/orgs/langfuse/discussions/1566", + "created_at": "2024-04-03T09:18:12Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [ + "integration-langchain" + ], + "author": { + "login": "dlmatt", + "html_url": "https://github.com/dlmatt" + }, + "category": "Ideas" + }, + { + "number": 1541, + "title": "Disable events logging", + "href": "https://github.com/orgs/langfuse/discussions/1541", + "created_at": "2024-03-29T18:08:13Z", + "upvotes": 8, + "comment_count": 3, + "resolved": false, + "labels": [ + "✅ Done" + ], + "author": { + "login": "omgovich", + "html_url": "https://github.com/omgovich" + }, + "category": "Ideas" + }, + { + "number": 1535, + "title": "Request for Integration of Mistral Models into Langfuse", + "href": "https://github.com/orgs/langfuse/discussions/1535", + "created_at": "2024-03-28T16:10:25Z", + "upvotes": 5, + "comment_count": 2, + "resolved": false, + "labels": [ + "integrations", + "✅ Done" + ], + "author": { + "login": "Zherdev1996", + "html_url": "https://github.com/Zherdev1996" + }, + "category": "Ideas" + }, + { + "number": 1533, + "title": "Managing Embeddings", + "href": "https://github.com/orgs/langfuse/discussions/1533", + "created_at": "2024-03-28T15:36:21Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "Botman-Hotman", + "html_url": "https://github.com/Botman-Hotman" + }, + "category": "Ideas" + }, + { + "number": 1513, + "title": "Langfuse Trace with OpenAI Assistants", + "href": "https://github.com/orgs/langfuse/discussions/1513", + "created_at": "2024-03-27T11:47:19Z", + "upvotes": 10, + "comment_count": 5, + "resolved": false, + "labels": [ + "integration-openai" + ], + "author": { + "login": "marco-introvigne", + "html_url": "https://github.com/marco-introvigne" + }, + "category": "Ideas" + }, + { + "number": 1500, + "title": "Comment column can have any name the user chooses, there could be multiple comment columns per metric", + "href": "https://github.com/orgs/langfuse/discussions/1500", + "created_at": "2024-03-26T08:42:45Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "emailic", + "html_url": "https://github.com/emailic" + }, + "category": "Ideas" + }, + { + "number": 1488, + "title": "Make Langfuse switchable", + "href": "https://github.com/orgs/langfuse/discussions/1488", + "created_at": "2024-03-25T21:05:17Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "MrMojoR", + "html_url": "https://github.com/MrMojoR" + }, + "category": "Ideas" + }, + { + "number": 1479, + "title": "Add total filtered Generations to UI", + "href": "https://github.com/orgs/langfuse/discussions/1479", + "created_at": "2024-03-24T17:19:51Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "PhiBrandon", + "html_url": "https://github.com/PhiBrandon" + }, + "category": "Ideas" + }, + { + "number": 1461, + "title": "Loose prisma datasource db provider.", + "href": "https://github.com/orgs/langfuse/discussions/1461", + "created_at": "2024-03-21T13:09:15Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [ + "self-hosting" + ], + "author": { + "login": "muazhari", + "html_url": "https://github.com/muazhari" + }, + "category": "Ideas" + }, + { + "number": 1460, + "title": "Langfuse images for arm64 (mac silicon, some cloud vms)", + "href": "https://github.com/orgs/langfuse/discussions/1460", + "created_at": "2024-03-21T05:48:56Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "verdverm", + "html_url": "https://github.com/verdverm" + }, + "category": "Ideas" + }, + { + "number": 1454, + "title": "Add a time based filter option", + "href": "https://github.com/orgs/langfuse/discussions/1454", + "created_at": "2024-03-20T16:06:15Z", + "upvotes": 4, + "comment_count": 2, + "resolved": false, + "labels": [ + "✅ Done" + ], + "author": { + "login": "Kurumindla-Kranthivardhan", + "html_url": "https://github.com/Kurumindla-Kranthivardhan" + }, + "category": "Ideas" + }, + { + "number": 1431, + "title": "Integration with Langserve", + "href": "https://github.com/orgs/langfuse/discussions/1431", + "created_at": "2024-03-18T08:40:32Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "Haxeebraja", + "html_url": "https://github.com/Haxeebraja" + }, + "category": "Ideas" + }, + { + "number": 1428, + "title": "allow to delete sessions", + "href": "https://github.com/orgs/langfuse/discussions/1428", + "created_at": "2024-03-16T15:56:35Z", + "upvotes": 4, + "comment_count": 2, + "resolved": false, + "labels": [ + "feat-sessions" + ], + "author": { + "login": "morganveyret", + "html_url": "https://github.com/morganveyret" + }, + "category": "Ideas" + }, + { + "number": 1427, + "title": "Toggle collection of traces on a per-trace basis", + "href": "https://github.com/orgs/langfuse/discussions/1427", + "created_at": "2024-03-16T15:19:07Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "foragerr", + "html_url": "https://github.com/foragerr" + }, + "category": "Ideas" + }, + { + "number": 1415, + "title": "Add a \"correction\" field on the user feedback info", + "href": "https://github.com/orgs/langfuse/discussions/1415", + "created_at": "2024-03-14T14:18:30Z", + "upvotes": 3, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "almirb", + "html_url": "https://github.com/almirb" + }, + "category": "Ideas" + }, + { + "number": 1408, + "title": "Trace Latencies line chart please", + "href": "https://github.com/orgs/langfuse/discussions/1408", + "created_at": "2024-03-13T15:00:35Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "Huarong", + "html_url": "https://github.com/Huarong" + }, + "category": "Ideas" + }, + { + "number": 1398, + "title": "What standardized dataset formats are people using?", + "href": "https://github.com/orgs/langfuse/discussions/1398", + "created_at": "2024-03-12T15:47:53Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, + "labels": [ + "feat-datasets" + ], + "author": { + "login": "norton120", + "html_url": "https://github.com/norton120" + }, + "category": "Ideas" + }, + { + "number": 1397, + "title": "Reorder columns in tables", + "href": "https://github.com/orgs/langfuse/discussions/1397", + "created_at": "2024-03-12T14:45:37Z", + "upvotes": 3, + "comment_count": 2, + "resolved": false, + "labels": [ + "✅ Done" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 1394, + "title": "Adding a \"Select all\" button to tables", + "href": "https://github.com/orgs/langfuse/discussions/1394", + "created_at": "2024-03-12T10:37:23Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "samyxdev", + "html_url": "https://github.com/samyxdev" + }, + "category": "Ideas" + }, + { + "number": 1392, + "title": "Hide prompts/completions (privacy)", + "href": "https://github.com/orgs/langfuse/discussions/1392", + "created_at": "2024-03-12T07:48:22Z", + "upvotes": 10, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "ziodave", + "html_url": "https://github.com/ziodave" + }, + "category": "Ideas" + }, + { + "number": 1391, + "title": "Enhancements for Langfuse User Sign-Up Control", + "href": "https://github.com/orgs/langfuse/discussions/1391", + "created_at": "2024-03-11T23:38:18Z", + "upvotes": 7, + "comment_count": 0, + "resolved": false, + "labels": [ + "self-hosting" + ], + "author": { + "login": "udit-001", + "html_url": "https://github.com/udit-001" + }, + "category": "Ideas" + }, + { + "number": 1385, + "title": "bug: Not allowing to limit Azure AD authentication for selected users in same tenent", + "href": "https://github.com/orgs/langfuse/discussions/1385", + "created_at": "2024-03-11T17:42:05Z", + "upvotes": 2, + "comment_count": 2, + "resolved": false, + "labels": [ + "self-hosting" + ], + "author": { + "login": "SathinduGA", + "html_url": "https://github.com/SathinduGA" + }, + "category": "Ideas" + }, + { + "number": 1378, + "title": "Aggregate cost per span", + "href": "https://github.com/orgs/langfuse/discussions/1378", + "created_at": "2024-03-08T16:06:04Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "ladislasdellinger", + "html_url": "https://github.com/ladislasdellinger" + }, + "category": "Ideas" + }, + { + "number": 1376, + "title": "Support parsing LLM model for ChatOllama", + "href": "https://github.com/orgs/langfuse/discussions/1376", + "created_at": "2024-03-08T14:13:58Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "kleebaum", + "html_url": "https://github.com/kleebaum" + }, + "category": "Ideas" + }, + { + "number": 1374, + "title": "Add LLamaIndexTS example", + "href": "https://github.com/orgs/langfuse/discussions/1374", + "created_at": "2024-03-08T00:42:30Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "luandro", + "html_url": "https://github.com/luandro" + }, + "category": "Ideas" + }, + { + "number": 1361, + "title": "Add a retention window for unnecessary data", + "href": "https://github.com/orgs/langfuse/discussions/1361", + "created_at": "2024-03-07T14:42:07Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "albertoforcato", + "html_url": "https://github.com/albertoforcato" + }, + "category": "Ideas" + }, + { + "number": 1337, + "title": "Support for Langchain ChatAnthropic", + "href": "https://github.com/orgs/langfuse/discussions/1337", + "created_at": "2024-03-06T10:42:36Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [ + "integration-langchain" + ], + "author": { + "login": "dotrunghieu96", + "html_url": "https://github.com/dotrunghieu96" + }, + "category": "Ideas" + }, + { + "number": 1331, + "title": "Adding cost to the datasets tables", + "href": "https://github.com/orgs/langfuse/discussions/1331", + "created_at": "2024-03-05T18:53:25Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [ + "✅ Done" + ], + "author": { + "login": "ladislasdellinger", + "html_url": "https://github.com/ladislasdellinger" + }, + "category": "Ideas" + }, + { + "number": 1321, + "title": "More prompt environments/tags instead of just `active`", + "href": "https://github.com/orgs/langfuse/discussions/1321", + "created_at": "2024-03-05T11:05:17Z", + "upvotes": 3, + "comment_count": 2, + "resolved": false, + "labels": [ + "feat-prompt-management", + "✅ Done" + ], + "author": { + "login": "ladislasdellinger", + "html_url": "https://github.com/ladislasdellinger" + }, + "category": "Ideas" + }, + { + "number": 1309, + "title": "Log used prompt on generations when using Langchain", + "href": "https://github.com/orgs/langfuse/discussions/1309", + "created_at": "2024-03-04T09:03:35Z", + "upvotes": 5, + "comment_count": 2, + "resolved": false, + "labels": [ + "integration-langchain", + "✅ Done" + ], + "author": { + "login": "TobinShaw", + "html_url": "https://github.com/TobinShaw" + }, + "category": "Ideas" + }, + { + "number": 1306, + "title": "[TS] Generating through OpenAI SDK directly", + "href": "https://github.com/orgs/langfuse/discussions/1306", + "created_at": "2024-03-02T10:56:07Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [ + "integrations", + "integration-openai", + "✅ Done" + ], + "author": { + "login": "louis030195", + "html_url": "https://github.com/louis030195" + }, + "category": "Ideas" + }, + { + "number": 1305, + "title": "Allow Project-Specific Default Time Ranges", + "href": "https://github.com/orgs/langfuse/discussions/1305", + "created_at": "2024-03-02T03:42:42Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "dkindlund", + "html_url": "https://github.com/dkindlund" + }, + "category": "Ideas" + }, + { + "number": 1300, + "title": "Consider adding support for DSPy", + "href": "https://github.com/orgs/langfuse/discussions/1300", + "created_at": "2024-03-01T15:42:23Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "sutyum", + "html_url": "https://github.com/sutyum" + }, + "category": "Ideas" + }, + { + "number": 1295, + "title": "Support DSPy", + "href": "https://github.com/orgs/langfuse/discussions/1295", + "created_at": "2024-03-01T11:34:05Z", + "upvotes": 19, + "comment_count": 9, + "resolved": false, + "labels": [ + "integrations", + "✅ Done", + "integration-dspy" + ], + "author": { + "login": "sandangel", + "html_url": "https://github.com/sandangel" + }, + "category": "Ideas" + }, + { + "number": 1291, + "title": "Integration: LlamaIndex JS/TS", + "href": "https://github.com/orgs/langfuse/discussions/1291", + "created_at": "2024-02-29T11:56:42Z", + "upvotes": 33, + "comment_count": 3, + "resolved": false, + "labels": [ + "sdk-js", + "integrations", + "integraton-llamaindex" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 1287, + "title": "Add filtering by errors", + "href": "https://github.com/orgs/langfuse/discussions/1287", + "created_at": "2024-02-28T22:52:59Z", + "upvotes": 3, + "comment_count": 2, + "resolved": false, + "labels": [ + "ui" + ], + "author": { + "login": "ankerbachryhl", + "html_url": "https://github.com/ankerbachryhl" + }, + "category": "Ideas" + }, + { + "number": 1277, + "title": "Add Audit Logging System to Worker Tasks", + "href": "https://github.com/orgs/langfuse/discussions/1277", + "created_at": "2024-02-28T11:53:15Z", + "upvotes": 1, + "comment_count": 3, + "resolved": false, + "labels": [], + "author": { + "login": "khareyash05", + "html_url": "https://github.com/khareyash05" + }, + "category": "Ideas" + }, + { + "number": 1268, + "title": "Possible with different units for input and output", + "href": "https://github.com/orgs/langfuse/discussions/1268", + "created_at": "2024-02-27T13:45:21Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "Stadly", + "html_url": "https://github.com/Stadly" + }, + "category": "Ideas" + }, + { + "number": 1264, + "title": "ChatML/ChatMessage Prompt Templates", + "href": "https://github.com/orgs/langfuse/discussions/1264", + "created_at": "2024-02-27T01:59:05Z", + "upvotes": 4, + "comment_count": 3, + "resolved": false, + "labels": [ + "feat-prompt-management", + "✅ Done" + ], + "author": { + "login": "tuan3w", + "html_url": "https://github.com/tuan3w" + }, + "category": "Ideas" + }, + { + "number": 1258, + "title": "Dashboard for all projects of an organization", + "href": "https://github.com/orgs/langfuse/discussions/1258", + "created_at": "2024-02-26T20:12:22Z", + "upvotes": 11, + "comment_count": 2, + "resolved": false, + "labels": [ + "feat-dashboard" + ], + "author": { + "login": "aiakubovich", + "html_url": "https://github.com/aiakubovich" + }, + "category": "Ideas" + }, + { + "number": 1221, + "title": "Add Haystack integration", + "href": "https://github.com/orgs/langfuse/discussions/1221", + "created_at": "2024-02-21T13:06:06Z", + "upvotes": 9, + "comment_count": 2, + "resolved": false, + "labels": [ + "integrations", + "✅ Done", + "integration-haystack" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 1220, + "title": "Export to S3", + "href": "https://github.com/orgs/langfuse/discussions/1220", + "created_at": "2024-02-21T12:46:58Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [ + "integrations" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 1219, + "title": "Export to BigQuery", + "href": "https://github.com/orgs/langfuse/discussions/1219", + "created_at": "2024-02-21T12:46:26Z", + "upvotes": 4, + "comment_count": 0, + "resolved": false, + "labels": [ + "integrations" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 1212, + "title": "Adding support for async Langchain methods", + "href": "https://github.com/orgs/langfuse/discussions/1212", + "created_at": "2024-02-20T13:09:19Z", + "upvotes": 24, + "comment_count": 5, + "resolved": false, + "labels": [ + "integration-langchain", + "✅ Done" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 1208, + "title": "Add Images in Tracing", + "href": "https://github.com/orgs/langfuse/discussions/1208", + "created_at": "2024-02-20T00:41:41Z", + "upvotes": 11, + "comment_count": 2, + "resolved": false, + "labels": [ + "✅ Done", + "feat-multimodal" + ], + "author": { + "login": "aiakubovich", + "html_url": "https://github.com/aiakubovich" + }, + "category": "Ideas" + }, + { + "number": 1190, + "title": "Request to add 75 percentile under Model latency section as shown in image below", + "href": "https://github.com/orgs/langfuse/discussions/1190", + "created_at": "2024-02-16T21:41:29Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "ssubburaj85", + "html_url": "https://github.com/ssubburaj85" + }, + "category": "Ideas" + }, + { + "number": 1170, + "title": "LLM Playground", + "href": "https://github.com/orgs/langfuse/discussions/1170", + "created_at": "2024-02-15T17:44:42Z", + "upvotes": 7, + "comment_count": 6, + "resolved": false, + "labels": [ + "feat-prompt-management", + "✅ Done", + "feat-playground" + ], + "author": { + "login": "reza-mohideen", + "html_url": "https://github.com/reza-mohideen" + }, + "category": "Ideas" + }, + { + "number": 1159, + "title": "Looking for users (that are migrating off of something) to co-build Langfuse integration with", + "href": "https://github.com/orgs/langfuse/discussions/1159", + "created_at": "2024-02-14T19:05:27Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "skrawcz", + "html_url": "https://github.com/skrawcz" + }, + "category": "Ideas" + }, + { + "number": 1156, + "title": "Possible to set timestamp when creating trace", + "href": "https://github.com/orgs/langfuse/discussions/1156", + "created_at": "2024-02-14T14:26:22Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [ + "sdk-js" + ], + "author": { + "login": "Stadly", + "html_url": "https://github.com/Stadly" + }, + "category": "Ideas" + }, + { + "number": 1154, + "title": "Dedicated user object which can include groups/teams and other attributes", + "href": "https://github.com/orgs/langfuse/discussions/1154", + "created_at": "2024-02-14T09:45:40Z", + "upvotes": 6, + "comment_count": 5, + "resolved": false, + "labels": [ + "feat-users" + ], + "author": { + "login": "bryan-agicap", + "html_url": "https://github.com/bryan-agicap" + }, + "category": "Ideas" + }, + { + "number": 1133, + "title": "API to delete scores", + "href": "https://github.com/orgs/langfuse/discussions/1133", + "created_at": "2024-02-12T11:19:59Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [ + "feat-api", + "feat-scores" + ], + "author": { + "login": "Jason-CKY", + "html_url": "https://github.com/Jason-CKY" + }, + "category": "Ideas" + }, + { + "number": 1128, + "title": "Display all traces within a session", + "href": "https://github.com/orgs/langfuse/discussions/1128", + "created_at": "2024-02-10T17:36:48Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [ + "ui", + "feat-sessions" + ], + "author": { + "login": "benm5678", + "html_url": "https://github.com/benm5678" + }, + "category": "Ideas" + }, + { + "number": 1118, + "title": "[Simple Feature/WebUI] Adding a button to hide the sidebar", + "href": "https://github.com/orgs/langfuse/discussions/1118", + "created_at": "2024-02-09T09:43:34Z", + "upvotes": 3, + "comment_count": 1, + "resolved": false, + "labels": [ + "ui" + ], + "author": { + "login": "samyxdev", + "html_url": "https://github.com/samyxdev" + }, + "category": "Ideas" + }, + { + "number": 1115, + "title": "Prioritize traces captured from LangGraph by relevance", + "href": "https://github.com/orgs/langfuse/discussions/1115", + "created_at": "2024-02-08T06:44:34Z", + "upvotes": 8, + "comment_count": 3, + "resolved": false, + "labels": [ + "ui", + "integration-langchain" + ], + "author": { + "login": "litagent", + "html_url": "https://github.com/litagent" + }, + "category": "Ideas" + }, + { + "number": 1114, + "title": "Pulling prompt/completions via API", + "href": "https://github.com/orgs/langfuse/discussions/1114", + "created_at": "2024-02-08T00:52:10Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "mukundt", + "html_url": "https://github.com/mukundt" + }, + "category": "Ideas" + }, + { + "number": 1106, + "title": "Prompt version comments", + "href": "https://github.com/orgs/langfuse/discussions/1106", + "created_at": "2024-02-07T15:38:07Z", + "upvotes": 5, + "comment_count": 2, + "resolved": false, + "labels": [ + "ui", + "feat-prompt-management", + "✅ Done" + ], + "author": { + "login": "mukundt", + "html_url": "https://github.com/mukundt" + }, + "category": "Ideas" + }, + { + "number": 1105, + "title": "\"Git diff\" view between two prompt versions", + "href": "https://github.com/orgs/langfuse/discussions/1105", + "created_at": "2024-02-07T15:37:18Z", + "upvotes": 13, + "comment_count": 1, + "resolved": false, + "labels": [ + "ui", + "feat-prompt-management" + ], + "author": { + "login": "mukundt", + "html_url": "https://github.com/mukundt" + }, + "category": "Ideas" + }, + { + "number": 1097, + "title": "Ability to post-process generation data", + "href": "https://github.com/orgs/langfuse/discussions/1097", + "created_at": "2024-02-06T17:45:58Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "denisergashbaev", + "html_url": "https://github.com/denisergashbaev" + }, + "category": "Ideas" + }, + { + "number": 1096, + "title": "[Python SDK] Link prompt to OpenAI Chat Completion directly", + "href": "https://github.com/orgs/langfuse/discussions/1096", + "created_at": "2024-02-06T17:19:29Z", + "upvotes": 2, + "comment_count": 2, + "resolved": false, + "labels": [ + "sdk-python", + "feat-prompt-management", + "integration-openai" + ], + "author": { + "login": "fancyweb", + "html_url": "https://github.com/fancyweb" + }, + "category": "Ideas" + }, + { + "number": 1089, + "title": "Use JWTs for API private key", + "href": "https://github.com/orgs/langfuse/discussions/1089", + "created_at": "2024-02-06T02:11:39Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" + }, + "category": "Ideas" + }, + { + "number": 1082, + "title": "Add LLM call duration on session and trace table", + "href": "https://github.com/orgs/langfuse/discussions/1082", + "created_at": "2024-02-05T20:52:23Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [ + "ui" + ], + "author": { + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" + }, + "category": "Ideas" + }, + { + "number": 1077, + "title": "Flowise: Allow adding metadata in API call to populate Langfuse trace metadata", + "href": "https://github.com/orgs/langfuse/discussions/1077", + "created_at": "2024-02-05T15:55:07Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, + "labels": [ + "integration-flowise" + ], + "author": { + "login": "jpmin7", + "html_url": "https://github.com/jpmin7" + }, + "category": "Ideas" + }, + { + "number": 1076, + "title": "Flowise: Allow Langfuse traceId to be set or passed on with API response", + "href": "https://github.com/orgs/langfuse/discussions/1076", + "created_at": "2024-02-05T14:58:23Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [ + "sdk-js", + "integration-flowise" + ], + "author": { + "login": "jpmin7", + "html_url": "https://github.com/jpmin7" + }, + "category": "Ideas" + }, + { + "number": 1074, + "title": "Model costs in terms of energy for self hosted models (or cloud hosted)", + "href": "https://github.com/orgs/langfuse/discussions/1074", + "created_at": "2024-02-05T10:15:27Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "vquilon", + "html_url": "https://github.com/vquilon" + }, + "category": "Ideas" + }, + { + "number": 1073, + "title": "Use proper logger for backend API to make it configurable", + "href": "https://github.com/orgs/langfuse/discussions/1073", + "created_at": "2024-02-05T09:19:01Z", + "upvotes": 3, + "comment_count": 5, + "resolved": false, + "labels": [ + "✅ Done", + "self-hosting" + ], + "author": { + "login": "code-haven", + "html_url": "https://github.com/code-haven" + }, + "category": "Ideas" + }, + { + "number": 1049, + "title": "API Examples for Generations", + "href": "https://github.com/orgs/langfuse/discussions/1049", + "created_at": "2024-02-02T07:02:08Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" + }, + "category": "Ideas" + }, + { + "number": 1048, + "title": "Allow sharing traces as a self contained HTML file via presigned S3 URL", + "href": "https://github.com/orgs/langfuse/discussions/1048", + "created_at": "2024-02-02T06:05:47Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, + "labels": [], + "author": { + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" + }, + "category": "Ideas" + }, + { + "number": 1043, + "title": "Ability to query entities from SDK", + "href": "https://github.com/orgs/langfuse/discussions/1043", + "created_at": "2024-02-01T23:51:00Z", + "upvotes": 4, + "comment_count": 2, + "resolved": false, + "labels": [ + "feat-api" + ], + "author": { + "login": "Pranov1", + "html_url": "https://github.com/Pranov1" + }, + "category": "Ideas" + }, + { + "number": 1033, + "title": "Subscribe to Langfuse Events via Webhooks", + "href": "https://github.com/orgs/langfuse/discussions/1033", + "created_at": "2024-02-01T18:59:56Z", + "upvotes": 34, + "comment_count": 6, + "resolved": false, + "labels": [], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 1032, + "title": "Periodic reports (email or slack)", + "href": "https://github.com/orgs/langfuse/discussions/1032", + "created_at": "2024-02-01T18:57:42Z", + "upvotes": 12, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 1021, + "title": "Add `Embedding` observation type", + "href": "https://github.com/orgs/langfuse/discussions/1021", + "created_at": "2024-02-01T03:15:17Z", + "upvotes": 57, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 1020, + "title": "Leveraging Azure OpenAI Diagnostic Settings?", + "href": "https://github.com/orgs/langfuse/discussions/1020", + "created_at": "2024-02-01T02:58:54Z", + "upvotes": 1, + "comment_count": 0, + "resolved": false, + "labels": [ + "integration-openai", + "integration-litellm" + ], + "author": { + "login": "Manouchehri", + "html_url": "https://github.com/Manouchehri" + }, + "category": "Ideas" + }, + { + "number": 1011, + "title": "Configurable dashboards", + "href": "https://github.com/orgs/langfuse/discussions/1011", + "created_at": "2024-01-31T13:40:59Z", + "upvotes": 17, + "comment_count": 2, + "resolved": false, + "labels": [ + "ui", + "feat-dashboard" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 1010, + "title": "Add new integration: LLM Proxy", + "href": "https://github.com/orgs/langfuse/discussions/1010", + "created_at": "2024-01-31T12:40:35Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [ + "integrations" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 1009, + "title": "Decorator-based integration with Langfuse", + "href": "https://github.com/orgs/langfuse/discussions/1009", + "created_at": "2024-01-31T12:19:26Z", + "upvotes": 7, + "comment_count": 3, + "resolved": false, + "labels": [ + "sdk-python", + "integrations", + "✅ Done", + "integration-python-decorator" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 1004, + "title": "should work with OpenAI-compatible self-hosted endpoints", + "href": "https://github.com/orgs/langfuse/discussions/1004", + "created_at": "2024-01-31T09:04:28Z", + "upvotes": 2, + "comment_count": 2, + "resolved": false, + "labels": [ + "sdk-python", + "integration-openai" + ], + "author": { + "login": "7flash", + "html_url": "https://github.com/7flash" + }, + "category": "Ideas" + }, + { + "number": 999, + "title": "Users should be able to pass metadata and tags via `overrideConfig` when using the Flowise integration", + "href": "https://github.com/orgs/langfuse/discussions/999", + "created_at": "2024-01-30T19:52:41Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [ + "sdk-js", + "integration-flowise", + "✅ Done" + ], + "author": { + "login": "giorgosera", + "html_url": "https://github.com/giorgosera" + }, + "category": "Ideas" + }, + { + "number": 991, + "title": "Inferring cost of trace from metadata field if optionally provided", + "href": "https://github.com/orgs/langfuse/discussions/991", + "created_at": "2024-01-30T07:38:56Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "sumba101", + "html_url": "https://github.com/sumba101" + }, + "category": "Ideas" + }, + { + "number": 990, + "title": "filtering sessions with metadata", + "href": "https://github.com/orgs/langfuse/discussions/990", + "created_at": "2024-01-30T06:21:42Z", + "upvotes": 7, + "comment_count": 2, + "resolved": false, + "labels": [ + "ui", + "feat-sessions", + "feat-metadata" + ], + "author": { + "login": "litagent", + "html_url": "https://github.com/litagent" + }, + "category": "Ideas" + }, + { + "number": 989, + "title": "Enable Collaboration Platforms for Project Members", + "href": "https://github.com/orgs/langfuse/discussions/989", + "created_at": "2024-01-30T04:00:26Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "khareyash05", + "html_url": "https://github.com/khareyash05" + }, + "category": "Ideas" + }, + { + "number": 982, + "title": "Supporting OpenAI Vision", + "href": "https://github.com/orgs/langfuse/discussions/982", + "created_at": "2024-01-29T19:06:44Z", + "upvotes": 7, + "comment_count": 2, + "resolved": false, + "labels": [ + "integration-openai", + "✅ Done", + "feat-multimodal" + ], + "author": { + "login": "pj747", + "html_url": "https://github.com/pj747" + }, + "category": "Ideas" + }, + { + "number": 980, + "title": "Comments on objects across the Langfuse UI", + "href": "https://github.com/orgs/langfuse/discussions/980", + "created_at": "2024-01-29T18:21:03Z", + "upvotes": 3, + "comment_count": 3, + "resolved": false, + "labels": [ + "ui", + "✅ Done" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 976, + "title": "Support alternative databases next to Postgres, e.g. MySQL", + "href": "https://github.com/orgs/langfuse/discussions/976", + "created_at": "2024-01-28T21:44:11Z", + "upvotes": 3, + "comment_count": 6, + "resolved": false, + "labels": [ + "self-hosting" + ], + "author": { + "login": "zoltan-fedor", + "html_url": "https://github.com/zoltan-fedor" + }, + "category": "Ideas" + }, + { + "number": 969, + "title": "Flowise - OpenAI Assistant cost tracking", + "href": "https://github.com/orgs/langfuse/discussions/969", + "created_at": "2024-01-26T18:04:07Z", + "upvotes": 2, + "comment_count": 0, + "resolved": false, + "labels": [ + "integration-flowise" + ], + "author": { + "login": "jozsef-gereby", + "html_url": "https://github.com/jozsef-gereby" + }, + "category": "Ideas" + }, + { + "number": 964, + "title": "Latency metrics - Time to first token, Tokens per second", + "href": "https://github.com/orgs/langfuse/discussions/964", + "created_at": "2024-01-26T15:37:01Z", + "upvotes": 8, + "comment_count": 3, + "resolved": false, + "labels": [ + "✅ Done" + ], + "author": { + "login": "nikcaryo-super", + "html_url": "https://github.com/nikcaryo-super" + }, + "category": "Ideas" + }, + { + "number": 958, + "title": "LLM calls captured via Langchain integration should match what’s sent to the LLM", + "href": "https://github.com/orgs/langfuse/discussions/958", + "created_at": "2024-01-25T16:45:38Z", + "upvotes": 3, + "comment_count": 2, + "resolved": false, + "labels": [], + "author": { + "login": "benm5678", + "html_url": "https://github.com/benm5678" + }, + "category": "Ideas" + }, + { + "number": 953, + "title": "Improve integration with flowise", + "href": "https://github.com/orgs/langfuse/discussions/953", + "created_at": "2024-01-24T19:57:06Z", + "upvotes": 1, + "comment_count": 2, + "resolved": false, + "labels": [ + "sdk-js", + "integration-flowise" + ], + "author": { + "login": "tsiougkosn", + "html_url": "https://github.com/tsiougkosn" + }, + "category": "Ideas" + }, + { + "number": 941, + "title": "Dark mode", + "href": "https://github.com/orgs/langfuse/discussions/941", + "created_at": "2024-01-24T05:52:30Z", + "upvotes": 9, + "comment_count": 5, + "resolved": false, + "labels": [ + "✅ Done" + ], + "author": { + "login": "archywillhe", + "html_url": "https://github.com/archywillhe" + }, + "category": "Ideas" + }, + { + "number": 939, + "title": "Full-text search on trace/observation/generation input/output", + "href": "https://github.com/orgs/langfuse/discussions/939", + "created_at": "2024-01-23T23:47:11Z", + "upvotes": 28, + "comment_count": 10, + "resolved": false, + "labels": [ + "ui" + ], + "author": { + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" + }, + "category": "Ideas" + }, + { + "number": 917, + "title": "Download dashboard details", + "href": "https://github.com/orgs/langfuse/discussions/917", + "created_at": "2024-01-21T16:35:24Z", + "upvotes": 8, + "comment_count": 3, + "resolved": false, + "labels": [], + "author": { + "login": "kerenaba", + "html_url": "https://github.com/kerenaba" + }, + "category": "Ideas" + }, + { + "number": 902, + "title": "Support secret in docker compose", + "href": "https://github.com/orgs/langfuse/discussions/902", + "created_at": "2024-01-17T14:03:26Z", + "upvotes": 2, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "shuther", + "html_url": "https://github.com/shuther" + }, + "category": "Ideas" + }, + { + "number": 896, + "title": "generation usage should accept a list of dict for async generation", + "href": "https://github.com/orgs/langfuse/discussions/896", + "created_at": "2024-01-17T05:59:24Z", + "upvotes": 1, + "comment_count": 1, + "resolved": false, + "labels": [], + "author": { + "login": "dove-young", + "html_url": "https://github.com/dove-young" + }, + "category": "Ideas" + }, + { + "number": 874, + "title": "Improve exception handling and type safety in python SDK", + "href": "https://github.com/orgs/langfuse/discussions/874", + "created_at": "2024-01-12T17:01:58Z", + "upvotes": 5, + "comment_count": 3, + "resolved": false, + "labels": [], + "author": { + "login": "hubert-springbok", + "html_url": "https://github.com/hubert-springbok" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1071, - "title": "feat: support for custom httpx.client", - "href": "https://github.com/orgs/langfuse/discussions/1071", - "created_at": "2024-02-05T06:35:23Z", - "upvotes": 1, - "comment_count": 2, + "number": 854, + "title": "Feature: API should give User-Tokens", + "href": "https://github.com/orgs/langfuse/discussions/854", + "created_at": "2024-01-09T14:26:47Z", + "upvotes": 6, + "comment_count": 0, "resolved": false, "labels": [], "author": { - "login": "brandonkzw", - "html_url": "https://github.com/brandonkzw" + "login": "droggta", + "html_url": "https://github.com/droggta" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1070, - "title": "Where to log request and response headers of generations? (litellm)", - "href": "https://github.com/orgs/langfuse/discussions/1070", - "created_at": "2024-02-05T02:40:38Z", - "upvotes": 1, + "number": 852, + "title": "Add prompt.to_langchain() to get a Langchain Prompt Template", + "href": "https://github.com/orgs/langfuse/discussions/852", + "created_at": "2024-01-09T13:20:55Z", + "upvotes": 7, "comment_count": 2, - "resolved": true, + "resolved": false, "labels": [ - "integration-litellm" + "integrations", + "feat-prompt-management", + "✅ Done" ], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" - }, - "category": "Support" - }, - { - "number": 1055, - "title": "Best way to flush LF in Next.js?", - "href": "https://github.com/orgs/langfuse/discussions/1055", - "created_at": "2024-02-02T17:50:58Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, - "labels": [], - "author": { - "login": "gullerg", - "html_url": "https://github.com/gullerg" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1054, - "title": "Sentry for self-hosted?", - "href": "https://github.com/orgs/langfuse/discussions/1054", - "created_at": "2024-02-02T17:21:06Z", - "upvotes": 1, + "number": 853, + "title": "feat(ui): Dashboard filter and highlight", + "href": "https://github.com/orgs/langfuse/discussions/853", + "created_at": "2024-01-09T05:37:34Z", + "upvotes": 2, "comment_count": 1, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "ui", + "Dashboard" + ], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "lkNGAT", + "html_url": "https://github.com/lkNGAT" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1051, - "title": "How can I get the trace_id in langfuse.openai.OpenAI?", - "href": "https://github.com/orgs/langfuse/discussions/1051", - "created_at": "2024-02-02T09:39:55Z", - "upvotes": 1, - "comment_count": 1, - "resolved": true, + "number": 844, + "title": "Integration: Node.js/Typescript OpenAI SDK", + "href": "https://github.com/orgs/langfuse/discussions/844", + "created_at": "2024-01-08T22:39:27Z", + "upvotes": 8, + "comment_count": 2, + "resolved": false, "labels": [ - "integration-openai" + "sdk-js", + "integrations", + "✅ Done" ], "author": { - "login": "yangge2333", - "html_url": "https://github.com/yangge2333" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1044, - "title": "AWS SES IAM Policy", - "href": "https://github.com/orgs/langfuse/discussions/1044", - "created_at": "2024-02-02T01:58:26Z", - "upvotes": 2, - "comment_count": 1, + "number": 828, + "title": "LlamaIndex integration (Python)", + "href": "https://github.com/orgs/langfuse/discussions/828", + "created_at": "2024-01-06T18:21:02Z", + "upvotes": 20, + "comment_count": 7, "resolved": false, - "labels": [], + "labels": [ + "sdk-python", + "integrations", + "✅ Done", + "integraton-llamaindex" + ], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1019, - "title": "WAF Rules for self-hosted", - "href": "https://github.com/orgs/langfuse/discussions/1019", - "created_at": "2024-02-01T01:41:51Z", - "upvotes": 3, - "comment_count": 0, + "number": 1007, + "title": "Admin API: projects, api keys, user management", + "href": "https://github.com/orgs/langfuse/discussions/1007", + "created_at": "2023-12-21T13:22:28Z", + "upvotes": 24, + "comment_count": 13, "resolved": false, - "labels": [], + "labels": [ + "feat-api", + "self-hosting" + ], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "maxxte", + "html_url": "https://github.com/maxxte" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1016, - "title": "Scaling / Parallelism / Concurrency safe?", - "href": "https://github.com/orgs/langfuse/discussions/1016", - "created_at": "2024-01-31T22:33:36Z", + "number": 1006, + "title": "Versioning of docs", + "href": "https://github.com/orgs/langfuse/discussions/1006", + "created_at": "2023-12-18T01:27:09Z", "upvotes": 1, "comment_count": 1, - "resolved": true, - "labels": [], + "resolved": false, + "labels": [ + "docs" + ], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "flxwu", + "html_url": "https://github.com/flxwu" }, - "category": "Support" + "category": "Ideas" }, { - "number": 1013, - "title": "Building Docker container without database connection?", - "href": "https://github.com/orgs/langfuse/discussions/1013", - "created_at": "2024-01-31T19:32:47Z", - "upvotes": 1, - "comment_count": 2, - "resolved": true, - "labels": [], + "number": 1008, + "title": "Datasets: Diff of output and expected output", + "href": "https://github.com/orgs/langfuse/discussions/1008", + "created_at": "2023-11-29T00:35:13Z", + "upvotes": 6, + "comment_count": 3, + "resolved": false, + "labels": [ + "ui", + "feat-datasets" + ], "author": { - "login": "Manouchehri", - "html_url": "https://github.com/Manouchehri" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" }, { - "number": 973, - "title": "If we use cloud services, when we migrate to our own host later, do all the above data support export?", - "href": "https://github.com/orgs/langfuse/discussions/973", - "created_at": "2024-01-27T09:55:41Z", + "number": 1066, + "title": "feat: Publish arm64 compatible docker images", + "href": "https://github.com/orgs/langfuse/discussions/1066", + "created_at": "2023-11-08T16:06:08Z", "upvotes": 1, - "comment_count": 1, - "resolved": true, - "labels": [], + "comment_count": 10, + "resolved": false, + "labels": [ + "✅ Done", + "self-hosting" + ], "author": { - "login": "wsdo", - "html_url": "https://github.com/wsdo" + "login": "code-haven", + "html_url": "https://github.com/code-haven" }, - "category": "Support" + "category": "Ideas" }, { - "number": 866, - "title": "Cannot see Add to Dataset button in the UI", - "href": "https://github.com/orgs/langfuse/discussions/866", - "created_at": "2024-01-11T09:12:16Z", + "number": 1065, + "title": "OpenAI SDK wrapper for JS", + "href": "https://github.com/orgs/langfuse/discussions/1065", + "created_at": "2023-09-15T10:55:35Z", "upvotes": 1, - "comment_count": 2, - "resolved": true, + "comment_count": 3, + "resolved": false, "labels": [ - "feat-datasets" + "sdk-js", + "integrations", + "integration-openai", + "✅ Done" ], "author": { - "login": "SinghCoder", - "html_url": "https://github.com/SinghCoder" + "login": "marcklingen", + "html_url": "https://github.com/marcklingen" }, - "category": "Support" + "category": "Ideas" } ] }, @@ -10132,8 +12984,8 @@ "title": "Upcoming architecture changes for Langfuse 3.0 (self-hosted)", "href": "https://github.com/orgs/langfuse/discussions/1902", "created_at": "2024-04-29T12:36:04Z", - "upvotes": 20, - "comment_count": 22, + "upvotes": 22, + "comment_count": 24, "resolved": false, "labels": [ "Architecture", @@ -10180,7 +13032,7 @@ "title": "Langfuse Roadmap", "href": "https://github.com/orgs/langfuse/discussions/1396", "created_at": "2024-03-12T14:04:23Z", - "upvotes": 5, + "upvotes": 6, "comment_count": 0, "resolved": false, "labels": [], diff --git a/src/overrides.css b/src/overrides.css index c1cd6538d..075d9119c 100644 --- a/src/overrides.css +++ b/src/overrides.css @@ -1,75 +1,105 @@ /* make nav more blurry */ .nextra-nav-container-blur { - background: transparent !important; + background: transparent !important; } -:is(html[class~=dark] .nextra-nav-container-blur, html[class~=dark] .nextra-nav-container-blur) { - background: transparent !important; +:is( + html[class~="dark"] .nextra-nav-container-blur, + html[class~="dark"] .nextra-nav-container-blur + ) { + background: transparent !important; } -.nextra-toc>div> :last-child { - fill-opacity: 50; - padding-top: 0.5rem; - padding-bottom: 0.5rem; +.nextra-toc > div > :last-child { + fill-opacity: 50; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } /* Hide guides and faq from main menu */ -.nextra-nav-container>nav>div>a[href="/guides"] { - display: none !important; +.nextra-nav-container > nav > div > a[href="/guides"] { + display: none !important; } -.nextra-nav-container>nav>div>a[href="/faq"] { - display: none !important; +.nextra-nav-container > nav > div > a[href="/faq"] { + display: none !important; } +/* Less gap in desktop menu */ +.nextra-menu-desktop { + gap: 0.1rem; +} +.nextra-menu-desktop > li:not(:has(*)) { + /* only those that have no children */ + margin-bottom: 0.1rem; +} /* smaller search bar */ .nextra-nav-container input[type="search"] { - width: 8rem; + width: 8rem; - @media (min-width: 1024px) { - width: 10rem; - } + @media (min-width: 1024px) { + width: 10rem; + } - @media (min-width: 1280px) { - width: 16rem; - } + @media (min-width: 1280px) { + width: 16rem; + } - border-radius: 0.25rem; + border-radius: 0.25rem; } /* Fix logo overflowing */ -.nextra-nav-container>nav>a:first-child { - flex-shrink: 0; +.nextra-nav-container > nav > a:first-child { + flex-shrink: 0; } /* Fix nested lists */ -li>ol, -li>ul { - margin-top: 0 !important; +li > ol, +li > ul { + margin-top: 0 !important; } /* No dark background of videos */ media-outlet { - background-color: transparent !important; + background-color: transparent !important; } -/* More gap between h2 in articles */ +/* More gap between h2 across docs and articles */ +article.nextra-content h2._border-b { + /* h2 with border-bottom as this is how h2 is on default docs mode, we do not want to target custom/raw h2 on landingpage, changelog, blog etc. */ + margin-top: 4rem; +} article.nextra-body-typesetting-article h2 { - margin-top: 6rem; + margin-top: 6rem; } svg .nodeLabel, svg .edgeLabel { - font-family: monospace; + font-family: monospace; } /* Fix callout list */ .nextra-callout ul { - margin-top: 0; + margin-top: 0; } /* Overflowing nextra tabs should wrap */ [role="tablist"] { - flex-wrap: wrap; - row-gap: 0.2rem; -} \ No newline at end of file + flex-wrap: wrap; + row-gap: 0.2rem; +} + +/* Subsequent details should have less of a gap */ +details + details { + margin-top: 0.5rem !important; +} + +/* Fix detail padding */ +details > div { + padding: 0.25rem; +} + +/* Details header should be bold */ +details > summary { + font-weight: 700; +} diff --git a/tailwind.config.js b/tailwind.config.js index c9bc721ee..184f4de0b 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -131,6 +131,9 @@ module.exports = { }, }, }, + perspective: { + '1000': '1000px', + }, }, plugins: [require("tailwindcss-animate")], } diff --git a/theme.config.tsx b/theme.config.tsx index f2a9f7f24..ce4f6e4d5 100644 --- a/theme.config.tsx +++ b/theme.config.tsx @@ -11,7 +11,6 @@ import { COOKBOOK_ROUTE_MAPPING } from "./lib/cookbook_route_mapping"; import { GeistSans } from "geist/font/sans"; import IconDiscord from "./components/icons/discord"; import FooterMenu from "./components/FooterMenu"; -import Link from "next/link"; import { AvailabilityBanner, AvailabilitySidebar, @@ -189,22 +188,37 @@ const config: DocsThemeConfig = { CloudflareVideo, Video, }, - banner: { - key: "banner-hiring", - dismissible: true, - content: ( - - {/* mobile */} - - Thursday: Langfuse Meetup in SF → - - {/* desktop */} - - Thursday: Langfuse User Meetup in San Francisco → - - - ), - }, + // banner: { + // key: "ph-prompt-experiments", + // dismissible: false, + // content: ( + // + // {/* mobile */} + // + // ✨ Today: Support us on{" "} + // Product Hunt{" "} + // ✨ + // + // {/* desktop */} + // + // ✨ Today: Support{" "} + // Langfuse Prompt Experimentation on{" "} + // Product Hunt{" "} + // ✨ + // + // + // ), + // }, }; export default config;