Skip to content

Commit 75019d9

Browse files
authored
Merge pull request #3522 from Agenta-AI/feat/posthog-signup-event
feat(api): capture user_signed_up_v1
2 parents 86f7dfc + b4f8468 commit 75019d9

File tree

23 files changed

+14326
-99
lines changed

23 files changed

+14326
-99
lines changed

api/oss/src/core/auth/supertokens/overrides.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,19 @@ async def _create_account(email: str, uid: str) -> bool:
258258

259259
payload["organization_id"] = str(organization_db.id)
260260
await create_accounts(payload)
261+
262+
if env.posthog.enabled and env.posthog.api_key:
263+
try:
264+
posthog.capture(
265+
distinct_id=email,
266+
event="user_signed_up_v1",
267+
properties={
268+
"source": "auth",
269+
"is_ee": is_ee(),
270+
},
271+
)
272+
except Exception:
273+
log.error("[AUTH] Failed to capture PostHog signup event", exc_info=True)
261274
log.info("[AUTH] _create_account done", email=email, uid=uid)
262275
return True
263276

docs/blog/entries/projects-within-organizations.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ Projects work well when you need to:
3636

3737
If you're managing complex AI initiatives across multiple products, projects give you the structure to keep everything organized. You can create your first project from the sidebar and start organizing your prompts and evaluations.
3838

39-
For questions about projects or organizational structure, check the [FAQ](/docs/misc/faq) or reach out through our [support channels](/docs/misc/getting_support).
39+
For questions about projects or organizational structure, check the [FAQ](/docs/faq) or reach out through our [support channels](/docs/misc/getting_support).
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
---
2+
title: "Test Set Versioning and New Test Set UI"
3+
slug: testset-versioning
4+
date: 2026-01-20
5+
tags: [v0.74.0]
6+
description: "Track test set changes with versioning and link evaluations to specific versions. Plus a completely rebuilt test set UI that scales to hundreds of thousands of rows."
7+
---
8+
9+
# Test Set Versioning and New Test Set UI
10+
11+
## Overview
12+
13+
When you compare evaluation results from last week to today, how do you know the test data didn't change? You don't. Until now.
14+
15+
Test set versioning tracks every change to your test sets. Each edit, upload, or programmatic update creates a new version. Evaluations link to specific versions, so you can trust your comparisons.
16+
17+
We also rebuilt the test set UI from scratch. It handles hundreds of thousands of rows without slowing down. Editing is faster, especially for chat messages and complex JSON data.
18+
19+
<div style={{display: 'flex', justifyContent: 'center', marginTop: "20px", marginBottom: "20px", flexDirection: 'column', alignItems: 'center'}}>
20+
<iframe
21+
width="100%"
22+
height="500"
23+
src="https://www.youtube.com/embed/hh1OHhzak6Q"
24+
title="Test Set Versioning Demo"
25+
frameBorder="0"
26+
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
27+
allowFullScreen
28+
></iframe>
29+
</div>
30+
31+
## Test Set Versioning
32+
33+
Every change to a test set creates a new version. You can see the version history, compare versions, and revert to previous versions.
34+
35+
**What gets versioned:**
36+
- Adding, editing, or deleting test cases
37+
- Uploading new data (CSV, JSON)
38+
- Programmatic updates via SDK or API
39+
- Column changes
40+
41+
**Evaluation linking:**
42+
When you run an evaluation, it links to the specific test set version used. This means:
43+
- You can compare evaluations knowing they used the same test data
44+
- If someone updates the test set, your historical evaluations still reference the original version
45+
- You can filter evaluations by test set version
46+
47+
**Programmatic versioning:**
48+
Upload test sets via the SDK or API. The system detects changes and creates new versions automatically.
49+
50+
```python
51+
import agenta as ag
52+
53+
# Upload a test set - creates a new version if content changed
54+
testset = ag.testsets.upload(
55+
name="my-test-set",
56+
data=test_cases, # Your test case data
57+
)
58+
59+
# The testset object includes version information
60+
print(f"Version: {testset.version}")
61+
```
62+
63+
## New Test Set UI
64+
65+
The test set view is completely rebuilt. It uses virtualized rendering, so it stays fast with large datasets.
66+
67+
**What's new:**
68+
- **Scale**: Handle 100,000+ rows without performance issues
69+
- **JSON support**: View and edit complex JSON directly. Toggle between raw JSON and formatted views
70+
- **String or JSON columns**: Choose how each column stores data. Use JSON for structured data like chat messages
71+
72+
**Chat message editing:**
73+
Test cases with chat messages (like `[{"role": "user", "content": "..."}]`) now have a dedicated editor. Add, remove, or reorder messages. Edit content with proper formatting.
74+
75+
**Upload options:**
76+
- Upload CSV or JSON files
77+
- Create test sets in the UI
78+
- Create programmatically via SDK
79+
- Add spans from observability to test sets
80+
81+
## Traceability
82+
83+
Everything connects. When you view a trace in observability:
84+
- See which test case it came from
85+
- See which test set version
86+
- Filter traces by test case or test set
87+
88+
When you view an evaluation:
89+
- See the exact test set version used
90+
- Compare only evaluations that used the same version
91+
- Navigate to the test set to see the data
92+
93+
## Getting Started
94+
95+
Test set versioning is automatic. Any change creates a new version.
96+
97+
To use versioned test sets in evaluations:
98+
1. Create or upload a test set
99+
2. Make your edits (each save creates a version)
100+
3. Run an evaluation (it links to the current version)
101+
4. Later, compare evaluations knowing they used the same test data
102+
103+
For programmatic access, check the [test sets documentation](/evaluation/evaluation-from-sdk/managing-testsets).

docs/blog/main.mdx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,18 @@ import Image from "@theme/IdealImage";
1212

1313

1414

15+
### [Test Set Versioning and New Test Set UI](/changelog/testset-versioning)
16+
17+
_20 January 2026_
18+
19+
**v0.74.0**
20+
21+
Test sets now have versioning. Every edit, upload, or programmatic update creates a new version. Evaluations link to specific versions, so you can compare results knowing they used the same test data.
22+
23+
The test set UI is completely rebuilt. It handles hundreds of thousands of rows without slowing down. Editing is much easier, especially for chat messages. You can view and edit complex JSON directly, toggle between raw and formatted views, and choose whether columns store strings or JSON.
24+
25+
---
26+
1527
### [Playground UX Improvements](/changelog/playground-ux-improvements-jan-2026)
1628

1729
_13 January 2026_

docs/docs/misc/01-opensource.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Open source matters for an LLMOps platform like Agenta because it gives you:
1717
1. **Flexibility**: Modify and customize the software to fit your needs.
1818
2. **Independence**: Avoid vendor lock-in, ensuring long-term project continuity.
1919
3. **Community Support**: Benefit from contributions and shared improvements from the community.
20+
2021
### License Information
2122

2223
The Agenta open-core is licensed under the MIT license. Everything in our public repositories is open source, with no closed-source components included. All SDKs, client libraries, and APIs are fully open source under MIT. You can self-host it, modify it, and use it in commercial projects without restrictions.
@@ -77,4 +78,4 @@ Community support is available via GitHub and Discord. Professional support requ
7778
### How do I upgrade from self-hosted open source to commercial features?
7879
You have two options:
7980
1. Switch to our cloud offering by [creating an account](https://app.agenta.ai)
80-
2. [Contact our team](mailto:[email protected]) or [book a call](https://cal.com/mahmoud-mabrouk-ogzgey/demo) for enterprise self-hosting
81+
2. [Contact our team](mailto:[email protected]) or [book a call](https://cal.com/mahmoud-mabrouk-ogzgey/demo) for enterprise self-hosting

docs/docs/misc/02-faq.mdx

Lines changed: 0 additions & 66 deletions
This file was deleted.

docs/docs/misc/faq/_category_.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"label": "FAQ",
3+
"position": 2,
4+
"collapsed": false,
5+
"collapsible": true,
6+
"link": {
7+
"type": "doc",
8+
"id": "misc/faq/index"
9+
}
10+
}

docs/docs/misc/faq/index.mdx

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
title: "Frequently Asked Questions"
3+
description: "Answers to common questions about Agenta"
4+
slug: /faq
5+
---
6+
7+
import Link from '@docusaurus/Link';
8+
9+
# Frequently Asked Questions
10+
11+
These FAQs cover common questions about Agenta.
12+
13+
## Platform
14+
15+
<div className="faq-cards">
16+
<Link to="/faq/platform/api-rate-limits" className="faq-card">
17+
<span className="faq-card-title">What are the API rate limits?</span>
18+
<span className="faq-card-desc">Rate limits by endpoint type and plan</span>
19+
</Link>
20+
<Link to="/faq/platform/data-retention" className="faq-card">
21+
<span className="faq-card-title">What is the data retention period?</span>
22+
<span className="faq-card-desc">Data retention by plan</span>
23+
</Link>
24+
</div>
25+
26+
## Integrations
27+
28+
<div className="faq-cards">
29+
<Link to="/faq/integrations/typescript" className="faq-card">
30+
<span className="faq-card-title">Does Agenta work with TypeScript?</span>
31+
<span className="faq-card-desc">How to use Agenta from TypeScript and other languages</span>
32+
</Link>
33+
<Link to="/faq/integrations/llm-providers" className="faq-card">
34+
<span className="faq-card-title">What LLM providers does Agenta support?</span>
35+
<span className="faq-card-desc">Supported model providers and custom endpoints</span>
36+
</Link>
37+
</div>
38+
39+
<div className="faq-tip-spacer"></div>
40+
41+
:::tip
42+
If you cannot find your answer, open an issue on [GitHub](https://github.com/agenta-ai/agenta/issues).
43+
:::
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"label": "Integrations",
3+
"position": 2,
4+
"link": {
5+
"type": "generated-index",
6+
"title": "Integrations",
7+
"description": "Questions about language support, LLM providers, and third party integrations.",
8+
"slug": "/faq/integrations"
9+
}
10+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
title: "What LLM providers does Agenta support?"
3+
description: "Supported model providers and custom endpoints"
4+
slug: /faq/integrations/llm-providers
5+
---
6+
7+
Agenta works with almost any provider.
8+
9+
Common providers include OpenAI, Anthropic, Cohere, OpenRouter, Perplexity AI, TogetherAI, DeepInfra, Groq, Gemini, Mistral AI, and Ollama.
10+
11+
Agenta also supports AWS Bedrock, Azure OpenAI, and Vertex AI.
12+
13+
You can add any OpenAI compatible endpoint, including self hosted models and custom deployments.
14+
15+
See [custom providers](/prompt-engineering/playground/custom-providers).

0 commit comments

Comments
 (0)