diff --git a/agenta-web/public/assets/On-boarding.webp b/agenta-web/public/assets/On-boarding.webp new file mode 100644 index 0000000000..2562fd4adc Binary files /dev/null and b/agenta-web/public/assets/On-boarding.webp differ diff --git a/agenta-web/src/components/pages/evaluations/autoEvaluation/AutoEvaluation.tsx b/agenta-web/src/components/pages/evaluations/autoEvaluation/AutoEvaluation.tsx index 2380da611a..707b27f45f 100644 --- a/agenta-web/src/components/pages/evaluations/autoEvaluation/AutoEvaluation.tsx +++ b/agenta-web/src/components/pages/evaluations/autoEvaluation/AutoEvaluation.tsx @@ -407,9 +407,15 @@ const AutoEvaluation = () => { icon: , onClick: (e) => { e.domEvent.stopPropagation() - router.push( - `/apps/${appId}/evaluations/results/${record.id}`, - ) + if ( + record.status.value === EvaluationStatus.FINISHED || + record.status.value === + EvaluationStatus.FINISHED_WITH_ERRORS + ) { + router.push( + `/apps/${appId}/evaluations/results/${record.id}`, + ) + } }, }, { @@ -605,7 +611,14 @@ const AutoEvaluation = () => { pagination={false} onRow={(record) => ({ style: {cursor: "pointer"}, - onClick: () => router.push(`/apps/${appId}/evaluations/results/${record.id}`), + onClick: () => { + if ( + record.status.value === EvaluationStatus.FINISHED || + record.status.value === EvaluationStatus.FINISHED_WITH_ERRORS + ) { + router.push(`/apps/${appId}/evaluations/results/${record.id}`) + } + }, })} /> diff --git a/agenta-web/src/lib/helpers/fileManipulations.ts b/agenta-web/src/lib/helpers/fileManipulations.ts index e3b6890e92..b9d542f3fe 100644 --- a/agenta-web/src/lib/helpers/fileManipulations.ts +++ b/agenta-web/src/lib/helpers/fileManipulations.ts @@ -22,8 +22,13 @@ export const downloadCsv = (csvContent: string, filename: string): void => { export const isValidCSVFile = (file: File) => { return new Promise((res) => { Papa.parse(file, { + skipEmptyLines: true, complete: (results) => { - res(results.errors.length === 0) + if (results.data && results.data.length > 0) { + res(true) + } else { + res(false) + } }, error: () => { res(false) diff --git a/docs/blog/main.mdx b/docs/blog/main.mdx index 49c9ac55a5..d65f977510 100644 --- a/docs/blog/main.mdx +++ b/docs/blog/main.mdx @@ -8,6 +8,35 @@ import Image from "@theme/IdealImage"; ```
+### Viewing Traces in the Playground and Authentication for Deployed Applications + +_29 November 2024_ + +**v0.28.0** + +#### Viewing traces in the playground: + +You can now see traces directly in the playground. For simple applications, this means you can view the prompts sent to LLMs. For custom workflows, you get an overview of intermediate steps and outputs. This makes it easier to understand what’s happening under the hood and debug your applications. + +#### Authentication improvements: + +We’ve strengthened authentication for deployed applications. As you know, Agenta lets you either fetch the app’s config or call it with Agenta acting as a proxy. Now, we’ve added authentication to the second method. The APIs we create are now protected and can be called using an API key. You can find code snippets for calling the application in the overview page. + +#### Documentation improvements: + +We’ve added new cookbooks and updated existing documentation: + +- New [cookbook for observability with LangChain](/tutorials/cookbooks/observability_langchain) +- New [cookbook for custom workflows](/tutorials/cookbooks/AI-powered-code-reviews) where we build an AI powered code reviewer +- Updated the [custom workflows documentation](/custom-workflows/overview) and added [reference](/reference/sdk/custom-workflow) +- Updated the [reference for the observability SDK](/reference/sdk/observability) and [for the prompt management SDK](/reference/sdk/configuration-management) + +#### Bug fixes: + +- Fixed an issue with the observability SDK not being compatible with LiteLLM. +- Fixed an issue where cost and token usage were not correctly computed for all calls. + +--- ### Observability and Prompt Management