From c0a7a79730e3e435b1d6826b098c8295e6a59f09 Mon Sep 17 00:00:00 2001 From: Marie-Alice Blete <10806774+malywut@users.noreply.github.com> Date: Fri, 6 Dec 2024 21:38:18 +0100 Subject: [PATCH] Simplify tags --- README.md | 5 +- resources.yaml | 151 +++++++++++++++++++++++++++---------------------- styles.css | 77 +++++++++++++++++++------ template.html | 23 +++++--- 4 files changed, 161 insertions(+), 95 deletions(-) diff --git a/README.md b/README.md index 4916e40..d264515 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ -# Resource Repository +# AI Engineering Landscape -This repository maintains a curated list of resources for AI Engineering +This repository maintains a curated list of resources for AI Engineering. +It is deployed [here](https://malywut.github.io/ai-engineering-landscape/). ## Contributing Resources diff --git a/resources.yaml b/resources.yaml index 1808f05..ed22269 100644 --- a/resources.yaml +++ b/resources.yaml @@ -2,202 +2,215 @@ resources: - name: "AutoGen" description: "Framework by Microsoft for building LLM applications based on multi-agent conversations" link: "https://github.com/microsoft/autogen" - licensing: "open-source" + licensing: + - "open-source" tags: - agents - - multi-agent usefullinks: - name: "AutoGPT" description: "Open source AI agent project. Given a goal, the agent will decompose it into actionable subtasks and utilize given resources to accomplish them" link: "https://github.com/Significant-Gravitas/AutoGPT" - licensing: "open-source" + licensing: + - "open-source" tags: - agents - - AI usefullinks: - name: "DSPy" description: "Framework for algorithmically optimizing LLM prompts" link: "https://github.com/stanfordnlp/dspy" - licensing: "open-source" + licensing: + - "open-source" tags: - - prompt generation + - prompt engineering - RAG usefullinks: - name: "Guardrails" description: "Framework to run input and output guards in your application that detect, quantify, and mitigate the presence of specific types of risks" link: "https://github.com/ShreyaR/guardrails" - licensing: "open-source" + licensing: + - "open-source" tags: - - guardrails - - security + - guardrails/security usefullinks: - hub: "https://hub.guardrailsai.com/" - - name: "Hugging Face" description: "An ML and data science collaborative platform. Users can find and contribute to models, datasets, and applications" link: "https://huggingface.co" - licensing: "freemium" + licensing: + - "open-source" tags: - - ML - - community + - LLM usefullinks: - name: "LangChain" description: "Framework to help in LLM-based application development. Provides an abstraction layer to interact with LLMs better, with prompt templating, chaining, RAG tools, agent implementation, and more" link: "https://github.com/langchain-ai/langchain" - licensing: "open-source" + licensing: + - "open-source" tags: - agents - RAG usefullinks: - - name: "LangChain4j" description: "Alternate frameworks for LLM-based applications for developers who prefer Java inspired by LangChain" link: "https://github.com/langchain4j/langchain4j" - licensing: "open-source" + licensing: + - "open-source" tags: - - Java + - alternative languages + - RAG usefullinks: - - name: "LangChain4j/LangChainGo" + - name: "LangChainGo" description: "Alternate frameworks for LLM-based applications for developers who prefer Go, inspired by LangChain" link: "https://github.com/tmc/langchaingo" - licensing: "open-source" + licensing: + - "open-source" tags: - - Go + - alternative languages + - RAG usefullinks: - - name: "Langfuse" description: "Open source solution dedicated to prompt management, and LLM-based application monitoring. Integrates a UI" link: "https://github.com/langfuse/langfuse" - licensing: "open-source" + licensing: + - "open-source" tags: - - testing - - prompt management - observability - - usage monitoring + - LLMOps usefullinks: - - name: "LangSmith" description: "Platform similar to a DevOps platform for LLMs, spawned from LangChain. Allows collaboration between developers, and testing and monitoring of LLM powered applications" link: "https://www.langchain.com/langsmith" - licensing: "commercial" + licensing: + - "commercial" tags: - - testing - observability - - collaboration platform - - usage monitoring + - platform + - LLMOps usefullinks: - - name: "LlamaIndex" description: "Framework designed to support LLM-based application development, specifically for integrating data from various data sources" link: "https://github.com/run-llama/llama_index" - licensing: "open-source" + licensing: + - "open-source" tags: - RAG - agents usefullinks: - - name: "LMSYS Chatbot Arena Leaderboard" description: "Crowdsourced leaderboard for LLMs. Provides an open platform dedicated to LLM ranking" link: "https://chat.lmsys.org/" - licensing: "open-source" + licensing: + - "open-source" tags: - - evaluation - LLM - - benchmarking usefullinks: - - name: "MLflow" description: "Open source MLOps platform, widespread in ML projects. Has recently added features dedicated to LLMs" link: "https://github.com/mlflow/mlflow" - licensing: "open-source" + licensing: + - "open-source" tags: - - ML lifecycle - - collaboration platform + - LLMOps + - platform usefullinks: - - name: "NeMo Guardrails" description: "Toolkit provided by NVIDIA for guardrails to LLM-based conversational applications, controlling the output of LLMs" link: "https://github.com/NVIDIA/NeMo-Guardrails" - licensing: "open-source" + licensing: + - "open-source" tags: - - guardrails - - hallucinations - - security + - guardrails/security usefullinks: - - name: "OpenAI evals" description: "Framework for evaluating LLM-based applications. OpenAI provides a detailed cookbook to get you started" link: "https://github.com/openai/evals" - licensing: "open-source" + licensing: + - "open-source" tags: - - evaluation - - LLM + - observability usefullinks: - - name: "promptfoo" description: "Tool to test and evaluate prompts, models, and RAG outputs. Works either in command line or with a detailed user interface" link: "https://github.com/promptfoo/promptfoo" - licensing: "open-source" + licensing: + - "open-source" tags: - prompt engineering - - evaluation - - testing + - observability usefullinks: - - name: "Ragas" description: "Framework dedicated to the evaluation of RAG pipelines. Can also be used for monitoring solutions in production" link: "https://github.com/explodinggradients/ragas" - licensing: "open-source" + licensing: + - "open-source" tags: - RAG - - evaluation - - monitoring - observability usefullinks: - - name: "SpringAI" description: "Alternate framework for LLM-based applications for Java developers" link: "https://github.com/spring-projects/spring-ai" - licensing: "open-source" + licensing: + - "open-source" tags: - - Java + - alternative languages + - RAG + - agents usefullinks: - - name: "tiktoken" description: "Library integrating a tokenizer for OpenAI models. Can be used to monitor costs and usage manually" link: "https://github.com/openai/tiktoken" - licensing: "open-source" + licensing: + - "open-source" tags: - - usage and cost monitoring - - tokenization + - observability usefullinks: - - name: "Weights & Biases (W&B)" description: "Platform dedicated to experiment tracking, model training, fine-tuning, and collaboration, with solutions to help LLM application development" link: "https://wandb.ai" - licensing: "freemium" + licensing: + - "freemium" tags: - - ML lifecycle - - collaboration platform - - experiment tracking + - platform + - LLMOps usefullinks: + - name: "Weaviate" + description: "Provides an open source vector database, and cloud-based managed deployment." + link: "https://www.semi.technology/products/weaviate" + licensing: + - "open-source" + - commercial + tags: + - data storage + - RAG + usefullinks: + + - name: "Pinecone" + description: "Managed vector database" + link: "https://www.pinecone.io" + licensing: + - commercial + tags: + - data storage + - RAG + usefullinks: diff --git a/styles.css b/styles.css index 9bf276d..299e7c5 100644 --- a/styles.css +++ b/styles.css @@ -6,6 +6,17 @@ body { background-color: #f4f4f4; } + :root { + --tag-color-1: #3498db; + --tag-color-2: #2ecc71; + --tag-color-3: #e74c3c; + --tag-color-4: #f39c12; + --tag-color-5: #9b59b6; + --tag-color-6: #34495e; + --tag-color-7: #16a085; + --tag-color-8: #27ae60; + --tag-color-9: #2980b9; + .sticky { background-color: #f4f4f4; position: sticky; @@ -79,43 +90,75 @@ body { font-weight: 500; } -/* Explicit tag border colors */ -.tag-box[data-tag="agents"] { - border-color: #3498db; +/* Dynamic tag colors */ +.tag-box[data-tag="tag-1"] { + border-color: var(--tag-color-1); + + .tag-title { + border-bottom-color: var(--tag-color-1); + } +} + +.tag-box[data-tag="tag-2"] { + border-color: var(--tag-color-2); + + .tag-title { + border-bottom-color: var(--tag-color-2); + } +} + +.tag-box[data-tag="tag-3"] { + border-color: var(--tag-color-3); .tag-title { - border-bottom-color: #3498db; + border-bottom-color: var(--tag-color-3); } } -.tag-box[data-tag="Frameworks"] { - border-color: #2ecc71; +.tag-box[data-tag="tag-4"] { + border-color: var(--tag-color-4); .tag-title { - border-bottom-color: #2ecc71; + border-bottom-color: var(--tag-color-4); } } -.tag-box[data-tag="Learning"] { - border-color: #e74c3c; +.tag-box[data-tag="tag-5"] { + border-color: var(--tag-color-5); .tag-title { - border-bottom-color: #e74c3c; + border-bottom-color: var(--tag-color-5); } } -.tag-box[data-tag="Platforms"] { - border-color: #f39c12; +.tag-box[data-tag="tag-6"] { + border-color: var(--tag-color-6); .tag-title { - border-bottom-color: #f39c12; + border-bottom-color: var(--tag-color-6); } } -.tag-box[data-tag="Research"] { - border-color: #9b59b6; +.tag-box[data-tag="tag-7"] { + border-color: var(--tag-color-7); .tag-title { - border-bottom-color: #9b59b6; + border-bottom-color: var(--tag-color-7); } -} \ No newline at end of file +} + +.tag-box[data-tag="tag-8"] { + border-color: var(--tag-color-8); + + .tag-title { + border-bottom-color: var(--tag-color-8); + } +} + +.tag-box[data-tag="tag-9"] { + border-color: var(--tag-color-9); + + .tag-title { + border-bottom-color: var(--tag-color-9); + } +} diff --git a/template.html b/template.html index 0abdcff..6c18525 100644 --- a/template.html +++ b/template.html @@ -10,7 +10,7 @@
-
+

AI Engineering Landscape

@@ -60,13 +60,19 @@

AI Engineering Landscape

} acc[tag].push(resource); }); - return acc; + // Sort acc by the number of resources in each category + return Object.fromEntries( + Object.entries(acc).sort(([, a], [, b]) => b.length - a.length) + ); + }, {}); // Render categories and resources Object.entries(categorizedResources).forEach(([tag, tagResources]) => { const tagBox = document.createElement('div'); tagBox.className = 'tag-box'; - tagBox.dataset.tag = tag; + // Dynamic tag data attribute will bu used for css styling + // data-tag attribute is the order of the tag in the list + tagBox.dataset.tag = 'tag-' + Object.keys(categorizedResources).indexOf(tag); const tagTitle = document.createElement('div'); tagTitle.className = 'tag-title'; @@ -124,9 +130,11 @@

AI Engineering Landscape

// Licensing const licensingCell = document.createElement('td'); const licensingBadge = document.createElement('span'); - licensingBadge.className = `badge licensing-badge licensing-${resource.licensing.toLowerCase().replace(' ', '-')}`; - licensingBadge.textContent = resource.licensing; - licensingCell.appendChild(licensingBadge); + resource.licensing.forEach(licensing => { + licensingBadge.className = `badge licensing-badge licensing-${licensing.toLowerCase().replace(' ', '-')}`; + licensingBadge.textContent = licensing; + licensingCell.appendChild(licensingBadge); + }); row.appendChild(licensingCell); // Link @@ -171,8 +179,9 @@

AI Engineering Landscape

resource.name.toLowerCase().includes(searchTerm) || resource.description.toLowerCase().includes(searchTerm) || resource.tags.some(tag => tag.toLowerCase().includes(searchTerm)) || - resource.licensing.toLowerCase().includes(searchTerm) + resource.licensing.some(licensing => licensing.toLowerCase().includes(searchTerm)) ); + renderResourceLandscape(filteredResources); renderResources(filteredResources); });