From 33f78254218d26ae3e88894d68148fb8c8d25ad9 Mon Sep 17 00:00:00 2001 From: Zachary Groves <32471391+ZStriker19@users.noreply.github.com> Date: Thu, 30 Apr 2026 16:09:58 -0400 Subject: [PATCH 1/5] Update otel docs to point towards llmobs setup for endpoint (#36390) * Update _index.md * Apply suggestions from code review Co-authored-by: Zachary Groves <32471391+ZStriker19@users.noreply.github.com> * Apply suggestion from @estherk15 Co-authored-by: Esther Kim * Apply suggestion from @ZStriker19 * Update _index.md --------- Co-authored-by: Esther Kim --- content/en/opentelemetry/setup/otlp_ingest/_index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/en/opentelemetry/setup/otlp_ingest/_index.md b/content/en/opentelemetry/setup/otlp_ingest/_index.md index 2be16c506db..2b0f067b285 100644 --- a/content/en/opentelemetry/setup/otlp_ingest/_index.md +++ b/content/en/opentelemetry/setup/otlp_ingest/_index.md @@ -21,7 +21,8 @@ You might prefer this option if you're looking for a straightforward setup and w - [OTLP logs intake endpoint][3] - [OTLP metrics intake endpoint][4] -- OTLP traces intake endpoint (in Preview): To request access, contact your Customer Success Manager. +- [Instrumenting for LLM Observability][5] +- OTLP traces intake endpoint (in Preview): To request access for use, contact your Customer Success Manager. ## Further reading @@ -31,3 +32,4 @@ You might prefer this option if you're looking for a straightforward setup and w [2]: /opentelemetry/setup/collector_exporter/ [3]: /opentelemetry/setup/intake_endpoint/otlp_logs [4]: /opentelemetry/setup/intake_endpoint/otlp_metrics +[5]: /llm_observability/instrumentation/otel_instrumentation/?tab=python#setup From 81f865cf7305823e82cf433a4554e40e1a422c26 Mon Sep 17 00:00:00 2001 From: maddiefranke Date: Thu, 30 Apr 2026 16:19:15 -0400 Subject: [PATCH 2/5] Add Google Workspace connection documentation (#36243) * Add Google Workspace connection documentation Covers OAuth2 setup, scope selection, and connection creation in Datadog for Gmail, Calendar, Drive, Docs, Sheets, Forms, and Chat. * Add Authorized JavaScript origins step and hyperlink navigation steps Co-Authored-By: Claude Sonnet 4.6 * Update connection steps to reference Action Catalog page Co-Authored-By: Claude Sonnet 4.6 * Apply editorial review feedback to Google Workspace connection doc - Use the {{< ui >}}{{< /ui >}} shortcode for Datadog UI labels for consistency with other connection docs - Renumber reference links sequentially (skipped [3] previously) - Remove numerals from prerequisite subheadings to produce cleaner anchors - Rephrase step 2 of "Enable the required APIs" so the table reads as part of the procedure - Drop redundant "below" after in-page anchor links - Replace "info" with "information" in the User identity scopes table - Reword "Google Docs documents" and "Google Sheets spreadsheets" to remove noun stacking * Update to OAuth 2.0 * Add to left nav * Address PR review feedback - Reword Prerequisites intro and replace inline Google Cloud project creation steps with a link to Google's own guide. - Link "app verification" to Google's restricted-scope verification doc and clarify "authorize" -> "authorize the app". - Combine the Authorized JavaScript origins and Authorized redirect URIs steps into a single instruction with a shared note. - Reword the Authorize URL/Token URL step to "Leave [...] as their pre-populated default values". - Renumber reference-style links in usage order and drop the now-unused Google Cloud Console root link. Co-Authored-By: Claude Opus 4.7 (1M context) --------- Co-authored-by: Claude Sonnet 4.6 Co-authored-by: Esther Kim --- config/_default/menus/main.en.yaml | 7 +- .../actions/connections/google_workspace.md | 163 ++++++++++++++++++ content/en/actions/connections/http.md | 2 +- 3 files changed, 170 insertions(+), 2 deletions(-) create mode 100644 content/en/actions/connections/google_workspace.md diff --git a/config/_default/menus/main.en.yaml b/config/_default/menus/main.en.yaml index 5f23163fd9e..a1e62d18b2c 100644 --- a/config/_default/menus/main.en.yaml +++ b/config/_default/menus/main.en.yaml @@ -2956,7 +2956,12 @@ menu: url: actions/connections/aws_integration/ parent: actions_connections identifier: actions_aws_integration - weight: 101 + weight: 102 + - name: Google Workspace + url: actions/connections/google_workspace/ + parent: actions_connections + identifier: actions_google_workspace + weight: 103 - name: Private Actions url: actions/private_actions/ parent: action_catalog diff --git a/content/en/actions/connections/google_workspace.md b/content/en/actions/connections/google_workspace.md new file mode 100644 index 00000000000..17f180188ae --- /dev/null +++ b/content/en/actions/connections/google_workspace.md @@ -0,0 +1,163 @@ +--- +title: Google Workspace +description: Connect Datadog Actions to Google Workspace services using OAuth 2.0 to automate tasks in Gmail, Calendar, Drive, Docs, Sheets, Forms, and Chat. +disable_toc: false +further_reading: +- link: "/actions/connections/" + tag: "Documentation" + text: "Find out more about connection credentials" +--- + +Use a Google Workspace connection to authenticate Datadog Actions against Google Workspace APIs. This allows you to interact with Gmail, Google Calendar, Google Drive, Google Docs, Google Sheets, Google Forms, and Google Chat in your workflows and apps. + +## Prerequisites + +You must have an OAuth 2.0 client in Google Cloud to create a connection in Datadog. If you don't already have a Google Cloud project, follow Google's [Create a Google Cloud project][1] guide. + +### Enable the required APIs + +Enable the Google APIs you plan to use in your workflows and apps: + +1. Navigate to [**APIs & Services** > **Library**][2] in the Google Cloud Console. +1. Search for and enable the APIs for the Google Workspace services you intend to use, listed in the following table. + +| Google Workspace service | API to enable | +|---|---| +| Gmail | Gmail API | +| Google Calendar | Google Calendar API | +| Google Drive | Google Drive API | +| Google Docs | Google Docs API | +| Google Sheets | Google Sheets API | +| Google Forms | Google Forms API | +| Google Chat | Google Chat API | + +### Configure the OAuth consent screen + +1. Navigate to [**APIs & Services** > **OAuth consent screen**][3] in the Google Cloud Console. +1. Select a user type: + - **Internal**: Limits access to users in your Google Workspace organization. Recommended for most enterprise use cases. + - **External**: Allows any Google account to authorize the app. Requires [app verification][4] for production use. +1. Fill in the required app information fields and click **Save and Continue**. +1. Under **Scopes**, add the OAuth scopes required for the actions you intend to use. See the [scopes reference](#scopes-reference). +1. Complete the remaining steps and click **Back to Dashboard**. + +### Create OAuth 2.0 credentials + +1. Navigate to [**APIs & Services** > **Credentials**][5] in the Google Cloud Console. +1. Click **Create Credentials** > **OAuth client ID**. +1. For **Application type**, select **Web application**. +1. Under **Authorized JavaScript origins**, add the Datadog origin URL. Under **Authorized redirect URIs**, add the Datadog OAuth callback URL. Both URLs are displayed in the Datadog connection creation dialog when you select **Google Workspace**. +1. Click **Create**. +1. Copy the **Client ID** and **Client Secret**—you need these when creating the connection in Datadog. + +## Create the connection in Datadog + +1. From the [Action Catalog page][6], click the {{< ui >}}Connections{{< /ui >}} tab. +1. Click {{< ui >}}New Connection{{< /ui >}}. +1. Select the {{< ui >}}Google Workspace{{< /ui >}} icon. +1. Enter a {{< ui >}}Connection Name{{< /ui >}}. +1. Enter the {{< ui >}}Client ID{{< /ui >}} and {{< ui >}}Client Secret{{< /ui >}} from your Google Cloud OAuth 2.0 credentials. +1. Select the {{< ui >}}Scopes{{< /ui >}} required for the actions you plan to use. See the [scopes reference](#scopes-reference). +1. Leave the {{< ui >}}Authorize URL{{< /ui >}} and {{< ui >}}Token URL{{< /ui >}} fields as their pre-populated default values unless you have a specific reason to change them. +1. Click {{< ui >}}Create{{< /ui >}}. +1. In the authorization window that opens, sign in with the Google account you want to use and grant the requested permissions. + +## Scopes reference + +Select only the scopes required by the actions you intend to use. + +### Gmail + +| Scope label | Scope value | Description | +|---|---|---| +| Gmail: Full Access | `https://mail.google.com/` | Full read and write access to all Gmail resources | +| Gmail: Read, Compose, Send, and Permanently Delete Threads | `https://www.googleapis.com/auth/gmail.modify` | All access except deleting permanently | +| Gmail: Read Only | `https://www.googleapis.com/auth/gmail.readonly` | View email messages and settings | +| Gmail: Send Only | `https://www.googleapis.com/auth/gmail.send` | Send email on behalf of the user | +| Gmail: Compose and Send | `https://www.googleapis.com/auth/gmail.compose` | Manage drafts and send email | +| Gmail: Manage Labels | `https://www.googleapis.com/auth/gmail.labels` | Create, read, update, and delete labels | +| Gmail: View Metadata Only | `https://www.googleapis.com/auth/gmail.metadata` | View email metadata such as labels and headers | + +### Google Calendar + +| Scope label | Scope value | Description | +|---|---|---| +| Calendar: Full Access | `https://www.googleapis.com/auth/calendar` | Full read and write access to calendars | +| Calendar: Read Only | `https://www.googleapis.com/auth/calendar.readonly` | View calendars | +| Calendar: Manage Events | `https://www.googleapis.com/auth/calendar.events` | View and edit events on all calendars | +| Calendar: View Events | `https://www.googleapis.com/auth/calendar.events.readonly` | View events on all calendars | + +### Google Drive + +| Scope label | Scope value | Description | +|---|---|---| +| Drive: Full Access | `https://www.googleapis.com/auth/drive` | Full read and write access to all Drive files | +| Drive: Read Only | `https://www.googleapis.com/auth/drive.readonly` | View files in Drive | +| Drive: Access Files Created by This App | `https://www.googleapis.com/auth/drive.file` | Access only files created or opened by this app | +| Drive: App Data Folder | `https://www.googleapis.com/auth/drive.appdata` | Access the app-specific data folder | +| Drive: Manage Metadata | `https://www.googleapis.com/auth/drive.metadata` | View and manage metadata of files | +| Drive: View Metadata | `https://www.googleapis.com/auth/drive.metadata.readonly` | View metadata of files | + +### Google Docs + +| Scope label | Scope value | Description | +|---|---|---| +| Docs: Full Access | `https://www.googleapis.com/auth/documents` | View and manage documents in Google Docs | +| Docs: Read Only | `https://www.googleapis.com/auth/documents.readonly` | View documents in Google Docs | + +### Google Sheets + +| Scope label | Scope value | Description | +|---|---|---| +| Sheets: Full Access | `https://www.googleapis.com/auth/spreadsheets` | View and manage spreadsheets in Google Sheets | +| Sheets: Read Only | `https://www.googleapis.com/auth/spreadsheets.readonly` | View spreadsheets in Google Sheets | + +### Google Forms + +| Scope label | Scope value | Description | +|---|---|---| +| Forms: Create and Edit Forms | `https://www.googleapis.com/auth/forms.body` | View and manage form definitions | +| Forms: View Forms | `https://www.googleapis.com/auth/forms.body.readonly` | View form definitions | +| Forms: View Responses | `https://www.googleapis.com/auth/forms.responses.readonly` | View form responses | + +### Google Chat + +| Scope label | Scope value | Description | +|---|---|---| +| Chat: View, Compose, and Delete Messages | `https://www.googleapis.com/auth/chat.messages` | View, create, update, and delete messages | +| Chat: Compose and Send Messages | `https://www.googleapis.com/auth/chat.messages.create` | Create and send messages in spaces | +| Chat: View Messages | `https://www.googleapis.com/auth/chat.messages.readonly` | View messages and reactions | +| Chat: Manage Spaces | `https://www.googleapis.com/auth/chat.spaces` | Create, view, update, and delete spaces | +| Chat: Create Spaces | `https://www.googleapis.com/auth/chat.spaces.create` | Create spaces | +| Chat: View Spaces | `https://www.googleapis.com/auth/chat.spaces.readonly` | View spaces | + +### User identity + +| Scope label | Scope value | Description | +|---|---|---| +| User Info: Email Address | `https://www.googleapis.com/auth/userinfo.email` | View the user's email address | +| User Info: Basic Profile | `https://www.googleapis.com/auth/userinfo.profile` | View the user's basic profile information | +| OpenID Connect | `openid` | Authenticate using OpenID Connect | + +### Google Workspace Admin + +| Scope label | Scope value | Description | +|---|---|---| +| Admin: Manage Users | `https://www.googleapis.com/auth/admin.directory.user` | Create, read, update, and delete users | +| Admin: View Users | `https://www.googleapis.com/auth/admin.directory.user.readonly` | View users in the directory | +| Admin: Manage Groups | `https://www.googleapis.com/auth/admin.directory.group` | Create, read, update, and delete groups | +| Admin: View Groups | `https://www.googleapis.com/auth/admin.directory.group.readonly` | View groups in the directory | + +## Further reading + +{{< partial name="whats-next/whats-next.html" >}} + +
Do you have questions or feedback? Join the **#workflows** or **#app-builder** channel on the [Datadog Community Slack][7]. + +[1]: https://developers.google.com/workspace/guides/create-project +[2]: https://console.cloud.google.com/apis/library +[3]: https://console.cloud.google.com/apis/credentials/consent +[4]: https://developers.google.com/identity/protocols/oauth2/production-readiness/restricted-scope-verification +[5]: https://console.cloud.google.com/apis/credentials +[6]: https://app.datadoghq.com/actions/action-catalog +[7]: https://chat.datadoghq.com/ diff --git a/content/en/actions/connections/http.md b/content/en/actions/connections/http.md index 16c751f1d34..9840b45084d 100644 --- a/content/en/actions/connections/http.md +++ b/content/en/actions/connections/http.md @@ -52,7 +52,7 @@ If you need to authenticate your request, use the action's {{< ui >}}Connection{ 1. In the {{< ui >}}Connection{{< /ui >}} section, click the plus icon ({{< ui >}}+{{< /ui >}}). 1. Select {{< ui >}}Azure{{< /ui >}}. 1. Enter a {{< ui >}}Connection Name{{< /ui >}}, {{< ui >}}Tenant ID{{< /ui >}}, {{< ui >}}Client ID{{< /ui >}}, and {{< ui >}}Client Secret{{< /ui >}}. -1. Optionally, enter the {{< ui >}}Custom Scope{{< /ui >}} to be requested from Microsoft when acquiring an OAuth 2 access token. A resource's scope is constructed using the identifier URI for the resource and `.default`, separated by a forward slash (`/`). For example, `{identifierURI}/.default`. For more information, see [the Microsoft documentation on .default scope][3]. +1. Optionally, enter the {{< ui >}}Custom Scope{{< /ui >}} to be requested from Microsoft when acquiring an OAuth 2.0 access token. A resource's scope is constructed using the identifier URI for the resource and `.default`, separated by a forward slash (`/`). For example, `{identifierURI}/.default`. For more information, see [the Microsoft documentation on .default scope][3]. 1. Click {{< ui >}}Create{{< /ui >}}. ### Create an HTTP token authentication connection From 0e94452527f88f3e71868b1b9b5e80b698a91ac6 Mon Sep 17 00:00:00 2001 From: Reda El Issati <41970812+onceLearner@users.noreply.github.com> Date: Thu, 30 Apr 2026 22:36:28 +0200 Subject: [PATCH 3/5] chore(docs-ai): drop unsued Feature flag & Typesense + body-class gating (#36376) * chore: clean up docs-ai ff * chore: fix layout shift * chore: change phrasing of the thinking messages to map user frienler versions * chore: send exposure data * chore: remove preset --- .../components/conversational-search/index.js | 229 +++++------------- .../conversational-search/logger.js | 6 +- .../conversational-search/streaming.js | 109 --------- .../components/instantsearch/searchbarHits.js | 13 +- assets/scripts/helpers/feature-flags.js | 108 ++------- .../conversational-search/_home-ask-ai.scss | 16 +- typesense.config.json | 13 - 7 files changed, 92 insertions(+), 402 deletions(-) delete mode 100644 assets/scripts/components/conversational-search/streaming.js diff --git a/assets/scripts/components/conversational-search/index.js b/assets/scripts/components/conversational-search/index.js index 64a9ea7e936..355edc06962 100644 --- a/assets/scripts/components/conversational-search/index.js +++ b/assets/scripts/components/conversational-search/index.js @@ -1,63 +1,68 @@ import { getConfig } from '../../helpers/getConfig'; -import { initializeFeatureFlags, getBooleanFlag, isDatadogEmployee, fetchDatadogUserStatus } from 'scripts/helpers/feature-flags'; +import { initializeFeatureFlags, getBooleanFlag, fetchDatadogUserStatus } from 'scripts/helpers/feature-flags'; import { logAction, logError } from './logger'; import { parseMarkdown, inlineRefChips, extractSources, renderMessageWithSources } from './markdown'; import { attachTooltips, buildSourceCards, showSourceTooltip, closeAllSourceTooltips, repositionTooltip } from './sources'; import { addMessageActions, injectCodeCopyButtons } from './actions'; -import { streamConversation, fetchConversation, resetTypesenseClient } from './streaming'; import { streamDocsAiChat } from './docsai-client'; import { pickQuestions } from './suggested-questions'; const { env } = document.documentElement.dataset; const docsConfig = getConfig(env); -const typesenseConfig = docsConfig.typesense; const docsAiConfig = docsConfig.docsAi; -// --- Providers & feature flags --------------------------------------------------- +const DOCS_AI_ENABLED_FLAG_KEY = 'docs-ai-enabled'; -const PROVIDER_INTERNAL = 'internal'; -const PROVIDER_TYPESENSE = 'typesense'; +// Optimistic render: default on so the UI mounts at DOMContentLoaded — no +// layout shift. If the flag resolves to false we tear the UI down. Right +// tradeoff for a default-on permanent kill switch: degraded UX during a rare +// incident is fine; everyday layout shift is not. +let IS_DOCS_AI_ENABLED = true; -let IS_CONVERSATIONAL_SEARCH_ENABLED = false; -const CONVERSATIONAL_SEARCH_FLAG_KEY = 'docs_conversational_search'; - -// When true, disables the internal docs-ai provider and uses the external Typesense provider. -// Default: false (internal docs-ai is the primary provider). -const USE_EXTERNAL_PROVIDER_FLAG_KEY = 'docs-ai-use-external-provider'; - -// Only relevant when provider is typesense. -const DISABLE_STREAMING_FLAG_KEY = 'docs-ai-disable-streaming'; - -const EXTERNAL_CONV_MODEL_DOCS_STABLE = 'docs-ai-conv-model-v1-stable'; const INTERNAL_CONVERSATION_ID_PREFIX = 'dd_docsai_'; const RENDER_THROTTLE = 50; +// Auto-rotated client-side messages shown while we wait for the first server `thinking` event. +// Aligned with the mapped server messages below so the user sees consistent copy either way. const LOADING_MESSAGES = [ - 'Searching documentation…', - 'Reviewing relevant pages…', - 'Analyzing content…', - 'Generating answer…' + 'Understanding your question…', + 'Searching the docs…', + 'Reading the most relevant pages…', + 'Drafting your response…' ]; +// Maps backend `thinking` event content to user-facing copy. +// `null` hides the event entirely (used for internal optimization steps the user shouldn't see). +// Unknown keys fall through to the original message so new backend stages still surface something. +const THINKING_MESSAGES = { + 'Rewriting query...': 'Understanding your question…', + 'Searching documentation...': 'Searching the docs…', + 'Reviewing relevant pages': 'Reading the most relevant pages…', + 'Generating answer...': 'Drafting your response…', + 'Something went wrong. Please try again.': 'Something went wrong. Try asking again.' +}; + +function mapThinkingMessage(serverMessage) { + if (Object.prototype.hasOwnProperty.call(THINKING_MESSAGES, serverMessage)) { + return THINKING_MESSAGES[serverMessage]; + } + return serverMessage; +} + let isDatadogUser = false; initializeFeatureFlags().then(async (client) => { - IS_CONVERSATIONAL_SEARCH_ENABLED = getBooleanFlag(client, CONVERSATIONAL_SEARCH_FLAG_KEY); - - if (!IS_CONVERSATIONAL_SEARCH_ENABLED && isDatadogEmployee()) { - IS_CONVERSATIONAL_SEARCH_ENABLED = true; - } - + IS_DOCS_AI_ENABLED = getBooleanFlag(client, DOCS_AI_ENABLED_FLAG_KEY, true); isDatadogUser = await fetchDatadogUserStatus(); - if (IS_CONVERSATIONAL_SEARCH_ENABLED) { - document.body.classList.add('conv-search-enabled'); + if (IS_DOCS_AI_ENABLED) { logAction('Conversational Search Impression', { conversational_search: { action: 'impression', page: window.location.pathname } }); - initConversationalSearch(); + } else { + teardownConversationalSearch(); } }); @@ -74,9 +79,6 @@ class ConversationalSearch { this.hasLoggedFirstOpen = false; this.isSuggestionQuery = false; - this.provider = PROVIDER_INTERNAL; - this.selectedModelId = EXTERNAL_CONV_MODEL_DOCS_STABLE; - this.typesenseStreamingDisabled = true; // Rewrites the initial user query for better retrieval before answering. // Only applied on the first message (no history). Follow-ups use history context instead. this.shouldRewriteQuery = true; @@ -87,14 +89,11 @@ class ConversationalSearch { if (!this.createElements()) return; this.bindEvents(); - this.resolveFlags(); this.ready = true; } get ctx() { return { - provider: this.provider, - selectedModelId: this.selectedModelId, conversationId: this.conversationId, isDatadogUser }; @@ -111,17 +110,6 @@ class ConversationalSearch { return `${INTERNAL_CONVERSATION_ID_PREFIX}${Date.now()}_${Math.random().toString(36).slice(2, 11)}`; } - resolveFlags() { - initializeFeatureFlags().then((client) => { - const useTypesense = getBooleanFlag(client, USE_EXTERNAL_PROVIDER_FLAG_KEY); - this.provider = useTypesense ? PROVIDER_TYPESENSE : PROVIDER_INTERNAL; - - if (useTypesense) { - this.typesenseStreamingDisabled = getBooleanFlag(client, DISABLE_STREAMING_FLAG_KEY); - } - }).catch(() => {}); - } - // --- DOM setup --------------------------------------------------------------- createElements() { @@ -325,7 +313,7 @@ class ConversationalSearch { open(trigger = 'entry_button') { if (!this.hasLoggedFirstOpen) { this.log('Conversational Search Open', { - conversational_search: { action: 'open_first_time', trigger, provider: this.provider } + conversational_search: { action: 'open_first_time', trigger } }); this.hasLoggedFirstOpen = true; } @@ -475,19 +463,16 @@ class ConversationalSearch { this.log('Conversational Search Interaction', { conversational_search: { action, - provider: this.provider, ...(this.conversationId && { conversation_id: this.conversationId }), ...extra } }); } - logResponse({ query, answer, startTime, streaming = true }) { + logResponse({ query, answer, startTime }) { this.log('Conversational Search Response', { conversational_search: { action: 'response_received', - provider: this.provider, - streaming, response_length: answer.length, ...(this.conversationId && { conversation_id: this.conversationId }), latency_ms: Date.now() - startTime @@ -510,19 +495,12 @@ class ConversationalSearch { this.addMessage('user', query); try { - if (this.provider === PROVIDER_INTERNAL) { - await this.runInternalStream(query); - } else if (this.typesenseStreamingDisabled) { - await this.runTypesenseFetch(query); - } else { - await this.runTypesenseStream(query); - } + await this.runInternalStream(query); } catch (error) { if (error.name === 'AbortError' && this.userCancelledRequest) { this.addResponseContainer().textContent = 'Request cancelled.'; } else { this.logErr('Conversational Search Response Error', error); - if (this.provider === PROVIDER_TYPESENSE) resetTypesenseClient(); this.addResponseContainer().textContent = 'Sorry, something went wrong. Please try again.'; } } finally { @@ -535,7 +513,7 @@ class ConversationalSearch { } } - // --- Internal docs-ai provider ----------------------------------------------- + // --- Docs AI streaming ------------------------------------------------------- async runInternalStream(query) { this.abortController = new AbortController(); @@ -563,7 +541,8 @@ class ConversationalSearch { rewriteQuery: isFirstMessage && this.shouldRewriteQuery && !isSuggestion, signal: this.abortController.signal, onThinking: (message) => { - loadingIndicator.updateStatus(message); + const mapped = mapThinkingMessage(message); + if (mapped) loadingIndicator.updateStatus(mapped); }, onToken: (_token, fullMessage) => { if (!responseContainer) { @@ -602,112 +581,9 @@ class ConversationalSearch { } } - // --- Typesense provider (streaming) ------------------------------------------ - - async runTypesenseStream(query) { - this.abortController = new AbortController(); - const startTime = Date.now(); - const loadingIndicator = this.showLoadingIndicator(); - - let responseContainer = null; - let accumulatedMessage = ''; - let lastRenderTime = 0; - - let response; - try { - response = await streamConversation({ - typesenseConfig, - query, - modelId: this.selectedModelId, - conversationId: this.conversationId, - signal: this.abortController.signal, - onChunk: (chunk) => { - if (chunk?.conversation_id && !this.conversationId) { - this.conversationId = chunk.conversation_id; - } - - if (chunk?.message !== undefined) { - if (!responseContainer) { - loadingIndicator.stop(); - responseContainer = this.addResponseContainer(); - } - - accumulatedMessage += chunk.message; - - const now = Date.now(); - if (now - lastRenderTime > RENDER_THROTTLE) { - const { displayMarkdown, sources } = extractSources(accumulatedMessage); - responseContainer.innerHTML = inlineRefChips(parseMarkdown(displayMarkdown)); - if (sources.length > 0) { - responseContainer.appendChild(buildSourceCards(sources)); - } - lastRenderTime = now; - this.scrollToBottom(); - } - } - }, - onError: (error) => { - this.logErr('Typesense Streaming Error', error); - } - }); - } finally { - loadingIndicator.stop(); - } - - const finalConversationId = response?.results?.[0]?.conversation?.conversation_id; - if (finalConversationId) { - this.conversationId = finalConversationId; - } - - if (!responseContainer) { - responseContainer = this.addResponseContainer(); - } - - if (accumulatedMessage) { - this.finalizeResponse(responseContainer, query, accumulatedMessage, startTime); - } else { - responseContainer.textContent = 'No response received. Please try again.'; - } - } - - // --- Typesense provider (non-streaming) -------------------------------------- - - async runTypesenseFetch(query) { - this.abortController = new AbortController(); - const startTime = Date.now(); - const loadingIndicator = this.showLoadingIndicator(); - - let response; - try { - response = await fetchConversation({ - typesenseConfig, - query, - modelId: this.selectedModelId, - conversationId: this.conversationId, - signal: this.abortController.signal - }); - } finally { - loadingIndicator.stop(); - } - - const conversation = response?.conversation || response?.results?.[0]?.conversation; - if (conversation?.conversation_id) { - this.conversationId = conversation.conversation_id; - } - - const answer = conversation?.answer || ''; - const responseContainer = this.addResponseContainer(); - - if (answer) { - this.finalizeResponse(responseContainer, query, answer, startTime, false); - } else { - responseContainer.textContent = 'No response received. Please try again.'; - } - } - // --- Shared finalization ----------------------------------------------------- - finalizeResponse(container, query, answer, startTime, streaming = true) { + finalizeResponse(container, query, answer, startTime) { container.innerHTML = renderMessageWithSources(answer, { attachTooltips, buildSourceCards @@ -715,7 +591,7 @@ class ConversationalSearch { injectCodeCopyButtons(container, this.ctx); addMessageActions(container.parentElement, query, answer, this.ctx); this.scrollToBottom(); - this.logResponse({ query, answer, startTime, streaming }); + this.logResponse({ query, answer, startTime }); } } @@ -724,7 +600,8 @@ class ConversationalSearch { let conversationalSearchInstance = null; function initConversationalSearch() { - if (!IS_CONVERSATIONAL_SEARCH_ENABLED || conversationalSearchInstance) return; + if (!IS_DOCS_AI_ENABLED || conversationalSearchInstance) return; + const instance = new ConversationalSearch(); if (instance.ready) conversationalSearchInstance = instance; @@ -738,12 +615,24 @@ function initConversationalSearch() { } } +function teardownConversationalSearch() { + const inst = conversationalSearchInstance; + if (inst) { + inst.floatButton?.remove(); + inst.overlay?.remove(); + inst.sidebar?.remove(); + conversationalSearchInstance = null; + } + document.querySelector('.home-ai-btn')?.remove(); + document.querySelector('.home-ai-divider')?.remove(); +} + // The minimum length of the query to auto-submit the conversation. // to avoid submitting short queries that are not meaningful. const AUTO_SUBMIT_MIN_LENGTH = 10; function askDocsAI(query, options = {}) { - if (!IS_CONVERSATIONAL_SEARCH_ENABLED || !conversationalSearchInstance) return; + if (!IS_DOCS_AI_ENABLED || !conversationalSearchInstance) return; const trimmed = (query || '').trim(); const inst = conversationalSearchInstance; @@ -767,4 +656,4 @@ if (document.readyState === 'loading') { initConversationalSearch(); } -export { ConversationalSearch, askDocsAI, CONVERSATIONAL_SEARCH_FLAG_KEY }; +export { ConversationalSearch, askDocsAI, DOCS_AI_ENABLED_FLAG_KEY }; diff --git a/assets/scripts/components/conversational-search/logger.js b/assets/scripts/components/conversational-search/logger.js index b35b35fc9dd..a421d6f0b0d 100644 --- a/assets/scripts/components/conversational-search/logger.js +++ b/assets/scripts/components/conversational-search/logger.js @@ -1,7 +1,6 @@ -export function logAction(message, data, { selectedModelId, isDatadogUser } = {}) { +export function logAction(message, data, { isDatadogUser } = {}) { const conversationalSearchData = { docs_ai: true, - model_id: selectedModelId, is_datadog_user: isDatadogUser ?? false, ...(data?.conversational_search || {}) }; @@ -19,10 +18,9 @@ export function logAction(message, data, { selectedModelId, isDatadogUser } = {} } } -export function logError(message, error, { selectedModelId, conversationId, isDatadogUser } = {}) { +export function logError(message, error, { conversationId, isDatadogUser } = {}) { const errorData = { docs_ai: true, - model_id: selectedModelId, conversation_id: conversationId, is_datadog_user: isDatadogUser ?? false, error_message: error?.message || String(error), diff --git a/assets/scripts/components/conversational-search/streaming.js b/assets/scripts/components/conversational-search/streaming.js deleted file mode 100644 index f5dc391520c..00000000000 --- a/assets/scripts/components/conversational-search/streaming.js +++ /dev/null @@ -1,109 +0,0 @@ -import Typesense from 'typesense'; - -let client = null; - -export function resetTypesenseClient() { - client = null; -} - -export function getTypesenseClient(typesenseConfig) { - if (client) return client; - - client = new Typesense.Client({ - nearestNode: { host: `${typesenseConfig.host}.a1.typesense.net`, port: 443, protocol: 'https' }, - nodes: [ - { host: `${typesenseConfig.host}-1.a1.typesense.net`, port: 443, protocol: 'https' }, - { host: `${typesenseConfig.host}-2.a1.typesense.net`, port: 443, protocol: 'https' }, - { host: `${typesenseConfig.host}-3.a1.typesense.net`, port: 443, protocol: 'https' } - ], - apiKey: typesenseConfig.public_key, - connectionTimeoutSeconds: 45 - }); - - return client; -} - -/** - * Strips Typesense query syntax that breaks hybrid (keyword + vector) search: - * - "double quotes" trigger exact-phrase mode; when 0 keyword hits match, - * Typesense skips vector search entirely and returns 0 results. - * - -dash prefix triggers token exclusion, which is not meaningful for - * a conversational AI query. - */ -export function sanitizeQuery(raw) { - return raw - .replace(/"/g, '') - .replace(/(^|\s)-/g, '$1') - .trim(); -} - -export async function streamConversation({ - typesenseConfig, - query, - modelId, - conversationId, - signal, - onChunk, - onError -}) { - const tsClient = getTypesenseClient(typesenseConfig); - - const searchBody = { - searches: [ - { - collection: typesenseConfig.docsIndex, - preset: 'docs_ai_search_preset' - } - ] - }; - - const commonSearchParams = { - conversation: true, - conversation_model_id: modelId, - q: sanitizeQuery(query), - conversation_stream: true - }; - - if (conversationId) { - commonSearchParams.conversation_id = conversationId; - } - - return tsClient.apiCall.post('/multi_search', searchBody, commonSearchParams, {}, { - abortSignal: signal, - isStreamingRequest: true, - streamConfig: { onChunk, onError } - }); -} - -export async function fetchConversation({ - typesenseConfig, - query, - modelId, - conversationId, - signal -}) { - const tsClient = getTypesenseClient(typesenseConfig); - - const searchBody = { - searches: [ - { - collection: typesenseConfig.docsIndex, - preset: 'docs_ai_search_preset' - } - ] - }; - - const commonSearchParams = { - conversation: true, - conversation_model_id: modelId, - q: sanitizeQuery(query) - }; - - if (conversationId) { - commonSearchParams.conversation_id = conversationId; - } - - return tsClient.apiCall.post('/multi_search', searchBody, commonSearchParams, {}, { - abortSignal: signal - }); -} diff --git a/assets/scripts/components/instantsearch/searchbarHits.js b/assets/scripts/components/instantsearch/searchbarHits.js index 2c2033a98b2..90302fdc024 100644 --- a/assets/scripts/components/instantsearch/searchbarHits.js +++ b/assets/scripts/components/instantsearch/searchbarHits.js @@ -1,14 +1,15 @@ import { getHitData, getSnippetForDisplay } from './getHitData'; import { bodyClassContains } from '../../helpers/helpers'; -import { CONVERSATIONAL_SEARCH_FLAG_KEY } from '../../components/conversational-search'; +import { DOCS_AI_ENABLED_FLAG_KEY } from '../../components/conversational-search'; import connectHits from 'instantsearch.js/es/connectors/hits/connectHits'; -import { initializeFeatureFlags, getBooleanFlag, isDatadogEmployee } from '../../helpers/feature-flags'; +import { initializeFeatureFlags, getBooleanFlag } from '../../helpers/feature-flags'; -let IS_CONVERSATIONAL_SEARCH_ENABLED = false; +// Optimistic render: assume on so the AI suggestion shows on first paint. +let IS_DOCS_AI_ENABLED = true; const ASK_AI_ICON_SRC = '/images/svg-icons/spark-ai.svg'; initializeFeatureFlags().then((client) => { - IS_CONVERSATIONAL_SEARCH_ENABLED = getBooleanFlag(client, CONVERSATIONAL_SEARCH_FLAG_KEY) || isDatadogEmployee(); + IS_DOCS_AI_ENABLED = getBooleanFlag(client, DOCS_AI_ENABLED_FLAG_KEY, true); }); const logDocsAIEvent = (message, payload) => { @@ -92,7 +93,7 @@ const updateNoHitsState = (container, numHits) => { // Kick off flag init once, update UI when ready const ensureConvSearchFlag = (state) => { - if (!IS_CONVERSATIONAL_SEARCH_ENABLED || !state?.isDocsContainer) return; + if (!IS_DOCS_AI_ENABLED || !state?.isDocsContainer) return; const aiList = state.container.querySelector('#ais-Hits-ai-list'); renderAskAISuggestion(aiList, state.query); updateNoHitsState(state.container, state.numHits); @@ -195,7 +196,7 @@ const renderHits = (renderOptions, isFirstRender) => { // Add AI suggestion first (only for docs container) if (isDocsContainer) { const aiList = container.querySelector('#ais-Hits-ai-list'); - if (IS_CONVERSATIONAL_SEARCH_ENABLED) { + if (IS_DOCS_AI_ENABLED) { renderAskAISuggestion(aiList, currentQuery); } else if (aiList) { aiList.replaceChildren(); diff --git a/assets/scripts/helpers/feature-flags.js b/assets/scripts/helpers/feature-flags.js index 7207847836a..ffb8507aeac 100644 --- a/assets/scripts/helpers/feature-flags.js +++ b/assets/scripts/helpers/feature-flags.js @@ -4,52 +4,14 @@ import { getConfig } from './getConfig'; const rawEnv = document.documentElement.dataset?.env || 'preview'; // TODO: Remove this once Feature Flag Rollout is complete -const env = rawEnv === 'development' ? 'preview' : rawEnv; +const env = rawEnv === 'development' ? 'preview' : rawEnv; const config = getConfig(env); -// Singleton Promise -let initializationPromise = null; - -const getRumTargetingKey = () => { - // Safety check for ad-blockers or missing global - if (typeof window === 'undefined' || !window.DD_RUM) return undefined; - - try { - const rumUser = window.DD_RUM.getUser && window.DD_RUM.getUser(); - const context = window.DD_RUM.getInternalContext && window.DD_RUM.getInternalContext(); - return rumUser?.device_id || context?.session_id; - } catch (e) { - return undefined; - } -}; - -const DD_INTERNAL_PARAM = 'dd_internal'; -const DD_INTERNAL_STORAGE_KEY = 'docs_dd_internal'; - -export const isDatadogEmployee = () => { - try { - - if (localStorage.getItem(DD_INTERNAL_STORAGE_KEY) === '1') return true; - - const params = new URLSearchParams(window.location.search); - if (params.get(DD_INTERNAL_PARAM) === '1') { - localStorage.setItem(DD_INTERNAL_STORAGE_KEY, '1'); - return true; - } - } catch { - console.error('Error checking if user is Datadog employee'); - } - return false; -}; - let datadogUserPromise = null; - export const fetchDatadogUserStatus = () => { if (datadogUserPromise) return datadogUserPromise; - const locateUrl = 'https://www.datadoghq.com/locate' - - datadogUserPromise = fetch(locateUrl, { credentials: 'include' }) + datadogUserPromise = fetch('https://www.datadoghq.com/locate', { credentials: 'include' }) .then((res) => res.json()) .then((data) => !!data.user_status) .catch(() => false); @@ -57,62 +19,32 @@ export const fetchDatadogUserStatus = () => { return datadogUserPromise; }; +let clientPromise = null; export const initializeFeatureFlags = () => { - if (initializationPromise) return initializationPromise; + if (clientPromise) return clientPromise; - initializationPromise = (async () => { + clientPromise = (async () => { if (!config?.ddClientToken || !config?.ddApplicationId) { console.error('[Flags] Missing Datadog config'); return null; } - - const client = OpenFeature.getClient(); - - const provider = new DatadogProvider({ - applicationId: config.ddApplicationId, - clientToken: config.ddClientToken, - env - }); - - await OpenFeature.setProviderAndWait(provider); - - // Blocking: weighted rollouts need the RUM targeting key in context. - await enrichContextWithRum(); - - return client; - })().catch((error) => { - const isAdBlockerLikely = typeof window !== 'undefined' && (!window.DD_RUM || error?.message?.includes('Unexpected end of JSON input')); - const contextMsg = isAdBlockerLikely ? ' (Likely blocked by an ad blocker or privacy extension)' : ''; - - console.warn(`[Flags] Initialization failed${contextMsg}:`, error); - initializationPromise = null; - return null; - }); - - return initializationPromise; -}; - -// Polls briefly for RUM targeting key while fetching /locate in parallel. -// RUM is either ready within ~500ms or blocked (ad-blocker). No point waiting longer. -const enrichContextWithRum = async () => { - const locatePromise = fetchDatadogUserStatus(); - - let targetingKey = getRumTargetingKey(); - if (!targetingKey) { - for (let i = 0; i < 5; i++) { - await new Promise((resolve) => setTimeout(resolve, 100)); - targetingKey = getRumTargetingKey(); - if (targetingKey) break; + try { + await OpenFeature.setProviderAndWait(new DatadogProvider({ + applicationId: config.ddApplicationId, + clientToken: config.ddClientToken, + env, + // Sends exposure events to the FF dashboard. + enableExposureLogging: true + })); + return OpenFeature.getClient(); + } catch (error) { + console.warn('[Flags] Initialization failed:', error); + return null; } - } - - const isDatadogUser = await locatePromise; - - const context = { isDatadogUser }; - if (targetingKey) context.targetingKey = targetingKey; + })(); - await OpenFeature.setContext(context); + return clientPromise; }; -export const getBooleanFlag = (client, key, defaultValue = false) => +export const getBooleanFlag = (client, key, defaultValue = false) => client?.getBooleanValue(key, defaultValue) ?? defaultValue; diff --git a/assets/styles/components/conversational-search/_home-ask-ai.scss b/assets/styles/components/conversational-search/_home-ask-ai.scss index 5ad582033df..76056bb2095 100644 --- a/assets/styles/components/conversational-search/_home-ask-ai.scss +++ b/assets/styles/components/conversational-search/_home-ask-ai.scss @@ -29,23 +29,19 @@ } .home-ai-divider { - display: none; + display: inline; color: rgba(255, 255, 255, 0.6); font-size: 13px; font-weight: 400; - .conv-search-enabled & { - display: inline; - - @media (max-width: 991px) { - display: none; - } + @media (max-width: 991px) { + display: none; } } .home-ai-btn { $home-ai-main: #b325b5; - display: none; + display: inline-flex; align-items: center; justify-content: center; gap: 6px; @@ -65,10 +61,6 @@ white-space: nowrap; transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; - .conv-search-enabled & { - display: inline-flex; - } - svg, img { flex-shrink: 0; width: 15px; diff --git a/typesense.config.json b/typesense.config.json index 34672b72e11..47244f5b366 100644 --- a/typesense.config.json +++ b/typesense.config.json @@ -275,19 +275,6 @@ "group_max_candidates": 1000, "exclude_fields": "embedding" } - }, - { - "name": "docs_ai_search_preset", - "search_parameters": { - "collection": "docs_alias", - "query_by": "embedding,title,section_header,content", - "vector_query": "embedding:([], alpha: 0.7)", - "per_page": 20, - "filter_by": "language:en", - "rerank_hybrid_matches": true, - "prefix": false, - "exclude_fields": "embedding, id, objectID, distinct_base_url, relpermalink, language, order, rank, tags, type" - } } ] }, From 878b32006a50d1bcf9eccefc9da83b59c231c2b4 Mon Sep 17 00:00:00 2001 From: Jennifer Mickel <59031802+jennm@users.noreply.github.com> Date: Thu, 30 Apr 2026 16:44:47 -0400 Subject: [PATCH 4/5] [MLOB-6998] added pydantic documentation (#35758) * added pydantic documentation * Update pydantic_evaluations.md * added LLMJudge as example * rephrased to make more clear * improved wording --------- Co-authored-by: cecilia saixue wat-kim --- config/_default/menus/main.en.yaml | 5 + .../evaluations/deepeval_evaluations.md | 4 + .../evaluations/pydantic_evaluations.md | 145 ++++++++++++++++++ .../guide/evaluation_developer_guide.md | 3 +- .../pydantic-experiment-result.png | Bin 0 -> 169726 bytes 5 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 content/en/llm_observability/evaluations/pydantic_evaluations.md create mode 100644 static/images/llm_observability/pydantic-experiment-result.png diff --git a/config/_default/menus/main.en.yaml b/config/_default/menus/main.en.yaml index a1e62d18b2c..bce66139ced 100644 --- a/config/_default/menus/main.en.yaml +++ b/config/_default/menus/main.en.yaml @@ -5366,6 +5366,11 @@ menu: parent: llm_obs_external_evaluations identifier: llm_obs_deepeval_evaluations weight: 40301 + - name: Pydantic Evaluations + url: llm_observability/evaluations/pydantic_evaluations + parent: llm_obs_external_evaluations + identifier: llm_obs_pydantic_evaluations + weight: 40302 - name: Annotation Queues url: llm_observability/evaluations/annotation_queues parent: llm_obs_evaluations diff --git a/content/en/llm_observability/evaluations/deepeval_evaluations.md b/content/en/llm_observability/evaluations/deepeval_evaluations.md index 62358d3577a..af2bc25a7cc 100644 --- a/content/en/llm_observability/evaluations/deepeval_evaluations.md +++ b/content/en/llm_observability/evaluations/deepeval_evaluations.md @@ -1,6 +1,10 @@ --- title: DeepEval Evaluations description: Use DeepEval evaluations with LLM Observability Experiments. +further_reading: +- link: "/llm_observability/evaluations/external_evaluations" + tag: "Documentation" + text: "Submit Evaluations" --- ## Overview diff --git a/content/en/llm_observability/evaluations/pydantic_evaluations.md b/content/en/llm_observability/evaluations/pydantic_evaluations.md new file mode 100644 index 00000000000..e39352dad42 --- /dev/null +++ b/content/en/llm_observability/evaluations/pydantic_evaluations.md @@ -0,0 +1,145 @@ +--- +title: Pydantic Evaluations +description: Use Pydantic evaluations with LLM Observability Experiments. +further_reading: +- link: "/llm_observability/evaluations/external_evaluations" + tag: "Documentation" + text: "Submit Evaluations" +--- + +## Overview + +Pydantic is an open source framework that provides ready-to-use evaluations and allows for customizable LLM evaluations. For more information, see [Pydantic's documentation][3]. + +You can use LLM Observability to run Pydantic evaluations and scalar Pydantic report evaluations in [Experiments][1]. Pydantic evaluation results appear as evaluator results tied to each instance in an [LLM Observability dataset][5]. Pydantic report evaluations run on an entire LLM Observability dataset and report one scalar result for the dataset. + +## Setup + +1. Set up an [LLM Observability Experiment][2] and an [LLM Observability Dataset][4]. +2. Provide a Pydantic evaluator to the `evaluators` parameter in an LLMObs `Experiment` as demonstrated in the following code sample. (Optional) Provide a Pydantic report evaluator to the `summary_evaluators` parameter in an LLMObs `Experiment`. **Note**: Only Pydantic report evaluators that return a `ScalarResult` are supported. + +```python + +from pydantic_evals.evaluators import ( + EqualsExpected, + EvaluationReason, + Evaluator, + EvaluatorContext, + EvaluatorOutput, + LLMJudge, + ReportEvaluator, + ReportEvaluatorContext, +) +from pydantic_evals.reporting.analyses import ScalarResult + +from ddtrace.llmobs import LLMObs + + +LLMObs.enable( + api_key="", # defaults to DD_API_KEY environment variable + app_key="", # defaults to DD_APP_KEY environment variable + site="datadoghq.com", # defaults to DD_SITE environment variable + project_name="" # defaults to DD_LLMOBS_PROJECT_NAME environment variable, or "default-project" if the environment variable is not set +) + + +# this can be any Pydantic evaluator +@dataclass +class ComprehensiveCheck(Evaluator): + def evaluate(self, ctx: EvaluatorContext) -> EvaluatorOutput: + format_valid = self._check_format(ctx.output) + + to_return = { + 'valid_format': EvaluationReason( + value=format_valid, + reason='Valid JSON format' if format_valid else 'Invalid JSON format', + ), + 'quality_score': self._score_quality(ctx.output), + 'category': self._classify(ctx.output), + } + return to_return + + def _check_format(self, output: str) -> bool: + return output.startswith('{') and output.endswith('}') + + def _score_quality(self, output: str) -> float: + return len(output) / 100.0 + + def _classify(self, output: str) -> str: + return 'short' if len(output) < 50 else 'long' + +# This can be any Pydantic ReportEvaluator that returns ScalarResult +class TotalCasesEvaluator(ReportEvaluator): + def evaluate(self, ctx: ReportEvaluatorContext) -> ScalarResult: + return ScalarResult( + title='Total', + value=len(ctx.report.cases), + unit='cases', + ) + +dataset = LLMObs.create_dataset( + dataset_name="capitals-of-the-world", + project_name="capitals-project", # optional, defaults to project_name used in LLMObs.enable + description="Questions about world capitals", + records=[ + { + "input_data": { + "question": "What is the capital of China?" + }, # required, JSON or string + "expected_output": "Beijing", # optional, JSON or string + "metadata": {"difficulty": "easy"}, # optional, JSON + }, + { + "input_data": { + "question": "Which city serves as the capital of South Africa?" + }, + "expected_output": "Pretoria", + "metadata": {"difficulty": "medium"}, + }, + ], +) + +def task(input_data: Dict[str, Any], config: Optional[Dict[str, Any]] = None, metadata: Optional[Dict[str, Any]] = None) -> str: + question = input_data['question'] + # Your LLM or processing logic here + return "Beijing" if "China" in question else "Unknown" + + +llm_judge = LLMJudge( + rubric='Response provides the same answer as expected, possibly with explanation', + include_input=True, + include_expected_output=True, +) + +experiment = LLMObs.experiment( + name="", + task=my_task, + dataset=dataset, + evaluators=[EqualsExpected(), ComprehensiveCheck(), llm_judge], + summary_evaluators=[TotalCasesEvaluator()], + description="", +) + + +results = experiment.run(jobs=4, raise_errors=True) + +print(f"View experiment: {experiment.url}") +``` + +For a working example, see [Datadog's Pydantic demo in GitHub][6]. + +### Usage +After you run an experiment with a Pydantic evaluation, you can view the Pydantic evaluation results per instance in the corresponding experiment run in Datadog. In the following experiment, two Pydantic evaluations (a custom Pydantic evaluator with the name "ComprehensiveCheck" and a built-in evaluator with the name "EqualsExpected") and one Pydantic report evaluator (a custom Pydantic report evaluator with the name "TotalCasesEvaluator") were run: + +{{< img src="llm_observability/pydantic-experiment-result.png" alt="An LLM Observability experiment with a Pydantic evaluator." style="width:100%;" >}} + +## Further reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /llm_observability/experiments +[2]: /llm_observability/experiments/setup#create-an-experiment +[3]: https://ai.pydantic.dev/evals/ +[4]: /llm_observability/experiments/setup#create-a-dataset +[5]: /llm_observability/experiments/datasets +[6]: https://github.com/DataDog/llm-observability/blob/main/experiments/eval-integrations/2-pydantic-demo.py diff --git a/content/en/llm_observability/guide/evaluation_developer_guide.md b/content/en/llm_observability/guide/evaluation_developer_guide.md index cdd0b467538..00b0bfc3585 100644 --- a/content/en/llm_observability/guide/evaluation_developer_guide.md +++ b/content/en/llm_observability/guide/evaluation_developer_guide.md @@ -49,7 +49,7 @@ The typical flow: ## Building evaluators -There are two ways to define an evaluator using LLM Observability: class-based and function-based. In addition to these evaluators, LLM Observability has integrations with open source evaluation frameworks, such as [DeepEval][6], that can be used in LLM Observability Experiments. +There are two ways to define an evaluator using LLM Observability: class-based and function-based. In addition to these evaluators, LLM Observability has integrations with open source evaluation frameworks, such as [DeepEval][6] and [Pydantic][], that can be used in LLM Observability Experiments. | | Class-based | Function-based | |---|---|---| @@ -701,3 +701,4 @@ When submitting evaluations for [OpenTelemetry-instrumented spans][3], include t [5]: /llm_observability/evaluations/custom_llm_as_a_judge_evaluations [6]: /llm_observability/evaluations/deepeval_evaluations/ [7]: /llm_observability/evaluations/custom_llm_as_a_judge_evaluations#configure-the-prompt +[8]: /llm_observability/evaluations/pydantic_evaluations \ No newline at end of file diff --git a/static/images/llm_observability/pydantic-experiment-result.png b/static/images/llm_observability/pydantic-experiment-result.png new file mode 100644 index 0000000000000000000000000000000000000000..acd2e9786bdeb3425b00e1c889862488106be83c GIT binary patch literal 169726 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 literal 0 HcmV?d00001 From 6c68d17d17699af6bf169aace9db062cba890790 Mon Sep 17 00:00:00 2001 From: Brett Blue <84536271+brett0000FF@users.noreply.github.com> Date: Thu, 30 Apr 2026 16:00:18 -0600 Subject: [PATCH 5/5] Update supported operating systems for the Agent (#36407) --- content/en/getting_started/agent/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/getting_started/agent/_index.md b/content/en/getting_started/agent/_index.md index c212e8d639b..ae70be1c083 100644 --- a/content/en/getting_started/agent/_index.md +++ b/content/en/getting_started/agent/_index.md @@ -32,7 +32,7 @@ This guide introduces the Datadog Agent and covers: The Datadog Agent is software that runs on your hosts. It collects events and metrics from hosts and sends them to Datadog, where you can analyze your monitoring and performance data. The Agent can run on: -- Local hosts (Windows, macOS) +- Local hosts (Windows, Linux, macOS) - Containerized environments (Docker, Kubernetes) - On-premises data centers