diff --git a/README.md b/README.md index 53ab5418224..dbd6ef92ac4 100644 --- a/README.md +++ b/README.md @@ -233,15 +233,15 @@ You can also output a nice [spreadsheet](https://docs.google.com/spreadsheets/d/ #### Model quality -In the [next example](https://github.com/promptfoo/promptfoo/tree/main/examples/gpt-3.5-vs-4), we evaluate the difference between GPT 3 and GPT 4 outputs for a given prompt: +In the [next example](https://github.com/promptfoo/promptfoo/tree/main/examples/gpt-4o-vs-4o-mini), we evaluate the difference between GPT 3 and GPT 4 outputs for a given prompt: ``` -npx promptfoo eval -p prompts.txt -r openai:gpt-3.5-turbo openai:gpt-4 -o output.html +npx promptfoo eval -p prompts.txt -r openai:gpt-4o openai:gpt-4o-mini -o output.html ``` Produces this HTML table: -![Side-by-side evaluation of LLM model quality, gpt3 vs gpt4, html output](https://user-images.githubusercontent.com/310310/235490527-e0c31f40-00a0-493a-8afc-8ed6322bb5ca.png) +![Side-by-side evaluation of LLM model quality, gpt-4o vs gpt-4o-mini, html output](https://user-images.githubusercontent.com/310310/235490527-e0c31f40-00a0-493a-8afc-8ed6322bb5ca.png) ## Usage (node package) diff --git a/package-lock.json b/package-lock.json index e8bbd3927c1..94f84f640e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -112,7 +112,7 @@ "shx": "^0.3.4", "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "typescript-eslint": "^7.18.0", "zod-to-json-schema": "^3.23.2" }, @@ -18641,9 +18641,9 @@ } }, "node_modules/express": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", - "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "license": "MIT", "dependencies": { "accepts": "~1.3.8", @@ -18658,7 +18658,7 @@ "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", "merge-descriptors": "1.0.3", @@ -18667,11 +18667,11 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.19.0", - "serve-static": "1.16.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -18704,20 +18704,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -19153,12 +19139,13 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -19173,14 +19160,25 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/find-cache-dir": { "version": "4.0.0", @@ -27816,6 +27814,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz", "integrity": "sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==", + "peer": true, "dependencies": { "@types/prismjs": "^1.26.0", "clsx": "^2.0.0" @@ -30170,63 +30169,27 @@ } }, "node_modules/serve-static": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", - "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/serve-static/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-static/node_modules/debug/node_modules/ms": { + "node_modules/serve-static/node_modules/encodeurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/serve-static/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/serve-static/node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.8" } }, "node_modules/set-cookie-parser": { @@ -32220,9 +32183,10 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -34581,14 +34545,14 @@ "@segment/ajv-human-errors": "^2.13.0", "clsx": "^2.1.1", "docusaurus-plugin-image-zoom": "^2.0.0", - "prism-react-renderer": "^2.3.1", + "prism-react-renderer": "^2.4.0", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@docusaurus/module-type-aliases": "^3.5.2", "@tsconfig/docusaurus": "^2.0.3", - "typescript": "^5.5.4" + "typescript": "^5.6.2" }, "engines": { "node": ">=18" @@ -35856,6 +35820,19 @@ "postcss": "^8.4.31" } }, + "site/node_modules/prism-react-renderer": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.0.tgz", + "integrity": "sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw==", + "license": "MIT", + "dependencies": { + "@types/prismjs": "^1.26.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.0.0" + } + }, "site/node_modules/stylehacks": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", @@ -35916,7 +35893,7 @@ "socket.io": "^4.7.5", "socket.io-client": "^4.7.5", "tiny-invariant": "^1.3.3", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "use-debounce": "^10.0.3", "uuid": "^10.0.0", "zustand": "^4.5.5" diff --git a/package.json b/package.json index 63b11a175c8..e57928f6a4b 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "shx": "^0.3.4", "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", - "typescript": "^5.5.4", + "typescript": "^5.6.2", "typescript-eslint": "^7.18.0", "zod-to-json-schema": "^3.23.2" }, diff --git a/site/blog/llm-agent-red-teaming-plugins.md b/site/blog/llm-agent-red-teaming-plugins.md index 572c8da4303..7c5eec40fc0 100644 --- a/site/blog/llm-agent-red-teaming-plugins.md +++ b/site/blog/llm-agent-red-teaming-plugins.md @@ -4,7 +4,7 @@ date: 2024-08-14 # New Red Teaming Plugins for LLM Agents: Enhancing API Security -We're excited to announce the release of three new red teaming plugins designed specifically for Large Language Model (LLM) agents with access to internal APIs. These plugins address critical security vulnerabilities outlined in the [OWASP API Security Top 10](https://owasp.org/www-project-api-security-top-10/): +We're excited to announce the release of three new red teaming plugins designed specifically for Large Language Model (LLM) agents with access to internal APIs. These plugins address critical security vulnerabilities outlined in the [OWASP API Security Top 10](https://genai.owasp.org/llm-top-10/): 1. [Broken Object Level Authorization (BOLA)](/docs/red-team/plugins/bola/) 2. [Broken Function Level Authorization (BFLA)](/docs/red-team/plugins/bfla/) diff --git a/site/blog/promptfoo-enterprise.md b/site/blog/promptfoo-enterprise.md index 9a8398876a6..dc0c7476d86 100644 --- a/site/blog/promptfoo-enterprise.md +++ b/site/blog/promptfoo-enterprise.md @@ -57,4 +57,4 @@ To meet the needs of larger teams, Promptfoo Enterprise offers: - Priority support with a 24-hour SLA - Named account manager -If your company is interested in signing up for Promptfoo Enterprise **[contact us](mailto:inquiries@promptfoo.com)** so we can get you up and running with a proof of concept. +If your company is interested in signing up for Promptfoo Enterprise **[contact us](mailto:inquiries@promptfoo.dev)** so we can get you up and running with a proof of concept. diff --git a/site/docs/getting-started.md b/site/docs/getting-started.md index 5bd36b715d0..1c7592fd953 100644 --- a/site/docs/getting-started.md +++ b/site/docs/getting-started.md @@ -254,7 +254,7 @@ You can also output a nice [spreadsheet](https://docs.google.com/spreadsheets/d/ ### Model quality -In [this next example](https://github.com/promptfoo/promptfoo/tree/main/examples/gpt-3.5-vs-4), we evaluate the difference between GPT 3 and GPT 4 outputs for a given prompt: +In [this next example](https://github.com/promptfoo/promptfoo/tree/main/examples/gpt-4o-vs-4o-mini), we evaluate the difference between GPT 3 and GPT 4 outputs for a given prompt: ```yaml title=promptfooconfig.yaml prompts: @@ -289,9 +289,9 @@ A simple `npx promptfoo@latest eval` will run the example. Also note that you ca Produces this HTML table: -![Side-by-side evaluation of LLM model quality, gpt3 vs gpt4, html output](https://user-images.githubusercontent.com/310310/235490527-e0c31f40-00a0-493a-8afc-8ed6322bb5ca.png) +![Side-by-side evaluation of LLM model quality, gpt-4o vs gpt-4o-mini, html output](https://user-images.githubusercontent.com/310310/235490527-e0c31f40-00a0-493a-8afc-8ed6322bb5ca.png) -Full setup and output [here](https://github.com/promptfoo/promptfoo/tree/main/examples/gpt-3.5-vs-4). +Full setup and output [here](https://github.com/promptfoo/promptfoo/tree/main/examples/gpt-4o-vs-4o-mini). A similar approach can be used to run other model comparisons. For example, you can: diff --git a/site/docs/guides/mixtral-vs-gpt.md b/site/docs/guides/mixtral-vs-gpt.md index ce07837453c..ac4541faffa 100644 --- a/site/docs/guides/mixtral-vs-gpt.md +++ b/site/docs/guides/mixtral-vs-gpt.md @@ -162,7 +162,7 @@ npx promptfoo@latest eval -o results.csv The comparison will provide you with a side-by-side performance view of Mixtral, GPT-4o-mini, and GPT-4o based on your test cases. Use this data to make informed decisions about which LLM best suits your application. -Contrast this with public benchmarks from the [Chatbot Arena](https://arena.lmsys.org/) leaderboard: +Contrast this with public benchmarks from the [Chatbot Arena](https://lmarena.ai/) leaderboard: | Model | Arena rating | MT-bench score | | -------------------------- | ------------ | -------------- | diff --git a/site/docs/guides/qwen-benchmark.md b/site/docs/guides/qwen-benchmark.md index 27efb9657e2..f9cd56fcdc1 100644 --- a/site/docs/guides/qwen-benchmark.md +++ b/site/docs/guides/qwen-benchmark.md @@ -183,7 +183,7 @@ npx promptfoo@latest eval -o results.csv The comparison will provide you with a side-by-side performance view of Qwen, GPT-4, and Llama based on your customer support chatbot test cases. Use this data to make informed decisions about which LLM best suits your application. -Contrast this with public benchmarks from the [Chatbot Arena](https://chat.lmsys.org/?leaderboard) leaderboard: +Contrast this with public benchmarks from the [Chatbot Arena](https://lmarena.ai/?leaderboard) leaderboard: | Model | Arena rating | | -------------------- | ------------ | diff --git a/site/docs/red-team/agents.md b/site/docs/red-team/agents.md index 41cad841c22..bff3d19ee95 100644 --- a/site/docs/red-team/agents.md +++ b/site/docs/red-team/agents.md @@ -42,7 +42,7 @@ redteam: The RBAC plugin tests whether the agent respects predefined access control policies. The BOLA and BFLA plugins check if the agent can be tricked into accessing or modifying resources or functions beyond its intended scope. -Promptfoo's red teaming capabilities include many other OWASP vulnerabilities. Learn more about them [here](https://promptfoo.com/docs/red-team/owasp-llm-top-10). +Promptfoo's red teaming capabilities include many other OWASP vulnerabilities. Learn more about them [here](https://promptfoo.dev/docs/red-team/owasp-llm-top-10). ## Context Poisoning and Data Exfiltration diff --git a/site/docs/red-team/llm-vulnerability-types.md b/site/docs/red-team/llm-vulnerability-types.md index 1f17570639a..e2b54fe3382 100644 --- a/site/docs/red-team/llm-vulnerability-types.md +++ b/site/docs/red-team/llm-vulnerability-types.md @@ -9,7 +9,7 @@ This page documents categories of potential LLM vulnerabilities and failure mode Potential failures are bucketed as follows: -- [Types of LLM vulnerabilities](#types-of-llm-vulnerabilities) +- [Types of LLM vulnerabilities](#) - [Privacy and Security](#privacy-and-security) - [Technical Vulnerabilities](#technical-vulnerabilities) - [Criminal Activities](#criminal-activities) @@ -17,7 +17,7 @@ Potential failures are bucketed as follows: - [Misinformation and Misuse](#misinformation-and-misuse) - [Common LLM vulnerabilities by application type](#common-llm-vulnerabilities-by-application-type) -Each vulnerability type is supported by Promptfoo's open-source LLM red teaming tool, with the `Plugin` column corresponding to the plugin ID in the tool. [Learn more](/docs/red-team/quickstart/). +Each vulnerability type is supported by Promptfoo's open-source LLM red teaming tool, with the `Plugin` column corresponding to the plugin ID in the tool. [Learn more](/docs/red-team/quickstart). ## Privacy and Security @@ -79,7 +79,7 @@ Each vulnerability type is supported by Promptfoo's open-source LLM red teaming | Hallucination | Generation of false or misleading information that undermines the reliability and trustworthiness of the system. | hallucination | | Overreliance | Model susceptibility to incorrect user input, potentially propagating errors or misinformation. | overreliance | -# Common LLM vulnerabilities by application type +## Common LLM vulnerabilities by application type The table below shows common vulnerabilities across different LLM application types. A 🚨 indicates that the vulnerability is typically applicable to that application type, while a ✅ means it's generally not a concern for that type of application. diff --git a/site/docs/red-team/plugins/prompt-extraction.md b/site/docs/red-team/plugins/prompt-extraction.md index 67938590922..ed075e96aac 100644 --- a/site/docs/red-team/plugins/prompt-extraction.md +++ b/site/docs/red-team/plugins/prompt-extraction.md @@ -70,10 +70,4 @@ Testing for prompt extraction vulnerabilities is critical for: By incorporating the Prompt Extraction plugin in your LLM red teaming strategy, you can identify and address potential vulnerabilities in your AI system's ability to protect its core instructions and maintain its intended role. -## Related Concepts - -- [Information Disclosure](../llm-vulnerability-types.md#privacy-and-security) -- [Social Engineering](../llm-vulnerability-types.md#social-engineering) -- [Model Inversion Attacks](../llm-vulnerability-types.md#model-inversion) - For a comprehensive overview of LLM vulnerabilities and red teaming strategies, visit our [Types of LLM Vulnerabilities](/docs/red-team/llm-vulnerability-types) page. diff --git a/site/docusaurus.config.js b/site/docusaurus.config.js index 06ba932fe61..cffa701678a 100644 --- a/site/docusaurus.config.js +++ b/site/docusaurus.config.js @@ -26,7 +26,7 @@ const config = { onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'throw', - + onBrokenAnchors: 'throw', // Even if you don't use internalization, you can use this field to set useful // metadata like html lang. For example, if your site is Chinese, you may want // to replace "en" with "zh-Hans". diff --git a/site/package.json b/site/package.json index a78276a8d2a..ff5bd9ce50b 100644 --- a/site/package.json +++ b/site/package.json @@ -28,14 +28,14 @@ "@segment/ajv-human-errors": "^2.13.0", "clsx": "^2.1.1", "docusaurus-plugin-image-zoom": "^2.0.0", - "prism-react-renderer": "^2.3.1", + "prism-react-renderer": "^2.4.0", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { "@docusaurus/module-type-aliases": "^3.5.2", "@tsconfig/docusaurus": "^2.0.3", - "typescript": "^5.5.4" + "typescript": "^5.6.2" }, "browserslist": { "production": [ diff --git a/site/src/pages/llm-vulnerability-scanner.tsx b/site/src/pages/llm-vulnerability-scanner.tsx index 87156370fd1..7793fbd60d6 100644 --- a/site/src/pages/llm-vulnerability-scanner.tsx +++ b/site/src/pages/llm-vulnerability-scanner.tsx @@ -44,7 +44,7 @@ function ScannerHeader() {
Get Started @@ -205,7 +205,7 @@ function CallToActionSection() {

Uncover hidden brand and legal risks

- + Get Started