
agent-kit
AgentKit: Build multi-agent networks in TypeScript with deterministic routing and rich tooling via MCP.
Stars: 376

AgentKit is a framework for creating and orchestrating AI Agents, enabling developers to build, test, and deploy reliable AI applications at scale. It allows for creating networked agents with separate tasks and instructions to solve specific tasks, as well as simple agents for tasks like writing content. The framework requires the Inngest TypeScript SDK as a dependency and provides documentation on agents, tools, network, state, and routing. Example projects showcase AgentKit in action, such as the Test Writing Network demo using Workflow Kit, Supabase, and OpenAI.
README:
Build multi-agent networks with deterministic routing and rich tooling via MCP.
Documentation · Blog · Community
AgentKit offers more deterministic and flexible routing, works with multiple model providers, embraces MCP (for rich tooling), and supports the unstoppable and growing community of TypeScript AI developers. Combined the Inngest Dev Server to start locally and its orchestration engine, making your Agents fault-tolerant when deployed to the cloud.
Core concepts
- Agents: LLM calls that can be combined with prompts, tools, and MCP.
- Networks: a simple way to get Agents to collaborate with a shared State, including handoff.
- State: combines conversation history with a fully typed state machine, used in routing.
- Routers: where the autonomy lives, from code-based to LLM-based (ex: ReAct) orchestration
- Tracing: debug and optimize your workflow locally and in the cloud with built-in tracing
Get started now by cloning our examples or exploring the documentation.
npm i @inngest/agent-kit
Choose your favorite MCP server on Smithery (or self-host one) to build an AgentKit Agent using MCP as tools. Here is an example using the Neon database MCP server:
import {
anthropic,
createAgent,
createNetwork,
createTool,
} from "@inngest/agent-kit";
import { createServer } from "@inngest/agent-kit/server";
import { createSmitheryUrl } from "@smithery/sdk/config.js";
import { z } from "zod";
const smitheryUrl = createSmitheryUrl("https://server.smithery.ai/neon/ws", {
neonApiKey: process.env.NEON_API_KEY,
});
const neonAgent = createAgent({
name: "neon-agent",
system: `You are a helpful assistant that help manage a Neon account.
IMPORTANT: Call the 'done' tool when the question is answered.
`,
tools: [
createTool({
name: "done",
description: "Call this tool when you are finished with the task.",
parameters: z.object({
answer: z.string().describe("Answer to the user's question."),
}),
handler: async ({ answer }, { network }) => {
network?.state.kv.set("answer", answer);
},
}),
],
mcpServers: [
{
name: "neon",
transport: {
type: "ws",
url: smitheryUrl.toString(),
},
},
],
});
const neonAgentNetwork = createNetwork({
name: "neon-agent",
agents: [neonAgent],
defaultModel: anthropic({
model: "claude-3-5-sonnet-20240620",
defaultParameters: {
max_tokens: 1000,
},
}),
router:work }) => {
if (!network?.state.kv.get("answer")) {
return neonAgent;
}
return;
},
});
// Create and start the server
const server = createServer({
networks: [neonAgentNetwork],
});
server.listen(3010, () =>
console.log("Support Agent demo server is running on port 3010")
);
Get started with this example locally: https://github.com/inngest/agent-kit/tree/main/examples/mcp-neon-agent#readme
You will find other examples in the sections below.
AgentKit provides a unique approach to deterministic Routing with State-based routing that enables the implementation of code-based to fully autonomous routing while keeping control all along the way.
The State is a key value stored and shared between all the Agents of the same network.
This state is then accessible from the router, agent lifecycle callbacks, agent prompts, and agent tools:
flowchart LR
subgraph Network
state["State"]
subgraph Agent
systemp["System prompt"]
tools["Tools"]
lifecycle["Lifecycle callbacks"]
end
router["Router"]
end
state-->systemp
state<-->tools
state<-->lifecycle
state<-->router
The bidirectional arrows illustrate an R/W write access, while the one-way arrows have an R/O access.
This shared State, combined with the network's message history, is the building block of AgentKit's deterministic stated-based routing.
We recommend starting with a code-based routing that provides complete control over your network execution flow.
This routing pattern is the most deterministic. By providing a Routing function that gets access to the state and history, you will implement an agentic routing that reacts to the state updates performed by the Agents’ tools.
Here is an example of a Coding Agent using a code-based router to orchestrate the agents of the network based on the plan generated by the codeAssistantAgent
:
import { z } from "zod";
import {
anthropic,
createAgent,
createNetwork,
createTool,
} from "@inngest/agent-kit";
import { readFileSync } from "fs";
import { join } from "path";
// create a shared tool
const saveSuggestions = createTool({
name: "save_suggestions",
description: "Save the suggestions made by other agents into the state",
parameters: z.object({
suggestions: z.array(z.string()),
}),
handler: async (input, { network }) => {
const suggestions = network?.state.kv.get("suggestions") || [];
network?.state.kv.set("suggestions", [
...suggestions,
...input.suggestions,
]);
return "Suggestions saved!";
},
});
// create agents with access to the state via the `saveSuggestions` tool
const documentationAgent = createAgent({
name: "documentation_agent",
system: "You are an expert at generating documentation for code",
tools: [saveSuggestions],
});
const analysisAgent = createAgent({
name: "analysis_agent",
system: "You are an expert at analyzing code and suggesting improvements",
tools: [saveSuggestions],
});
const summarizationAgent = createAgent({
name: "summarization_agent",
system: ({ network }) => {
const suggestions = network?.state.kv.get("suggestions") || [];
return `Save a summary of the following suggestions:
${suggestions.join("\n")}`;
},
tools: [
createTool({
name: "save_summary",
description:
"Save a summary of the suggestions made by other agents into the state",
parameters: z.object({
summary: z.string(),
}),
handler: async (input, { network }) => {
network?.state.kv.set("summary", input.summary);
return "Saved!";
},
}),
],
});
// Create the code assistant agent which generates a plan
const codeAssistantAgent = createAgent({
name: "code_assistant_agent",
system: ({ network }) => {
const agents = Array.from(network?.agents.values() || [])
.filter(
(agent) =>
!["code_assistant_agent", "summarization_agent"].includes(agent.name)
)
.map((agent) => `${agent.name} (${agent.system})`);
return `From a given user request, ONLY perform the following tool calls:
- read the file content
- generate a plan of agents to run from the following list: ${agents.join(", ")}
Answer with "done" when you are finished.`;
},
tools: [
createTool({
name: "read_file",
description: "Read a file from the current directory",
parameters: z.object({
filename: z.string(),
}),
handler: async (input, { network }) => {
const filePath = join(process.cwd(), `files/${input.filename}`);
const code = readFileSync(filePath, "utf-8");
network?.state.kv.set("code", code);
return "File read!";
},
}),
createTool({
name: "generate_plan",
description: "Generate a plan of agents to run",
parameters: z.object({
plan: z.array(z.string()),
}),
handler: async (input, { network }) => {
network?.state.kv.set("plan", input.plan);
return "Plan generated!";
},
}),
],
});
const network = createNetwork({
name: "code-assistant-v2",
agents: [
codeAssistantAgent,
documentationAgent,
analysisAgent,
summarizationAgent,
],
// our routing function relies on the shared state to orchestrate agents
// first, the codeAssistantAgent is called and then, its plan gets
// executed step by step until a summary gets written in the state.
router:work }) => {
if (!network?.state.kv.has("code") || !network?.state.kv.has("plan")) {
return codeAssistantAgent;
} else {
const plan = (network?.state.kv.get("plan") || []) as string[];
const nextAgent = plan.pop();
if (nextAgent) {
network?.state.kv.set("plan", plan);
return network?.agents.get(nextAgent);
} else if (!network?.state.kv.has("summary")) {
return summarizationAgent;
} else {
return undefined;
}
}
},
defaultModel: anthropic({
model: "claude-3-5-sonnet-latest",
defaultParameters: {
max_tokens: 4096,
},
}),
});
The source code is available here: https://github.com/inngest/agent-kit/blob/main/examples/code-assistant-agentic/src/index.ts
The Agent-based routing replaces the routing function with an Agent. This enables your network of agents to autonomously select which agents to execute and decide when the tasks are completed.
A Routing Agent comes with an onRoute
lifecycle callback that recalls the code-based routing approach. This lifecycle callback is your gateway to keep control of the Agent routing decision.
The below example showcases a Support Agent using a Routing Agent as a “Supervisor”:
import {
anthropic,
createAgent,
createNetwork,
createRoutingAgent,
createTool,
} from "@inngest/agent-kit";
import { z } from "zod";
import { isLastMessageOfType, lastResult } from "./utils.js";
import { knowledgeBaseDB, releaseNotesDB, ticketsDB } from "./databases.js";
// Create shared tools
const searchKnowledgeBase = createTool({
name: "search_knowledge_base",
description: "Search the knowledge base for relevant articles",
parameters: z.object({
query: z.string().describe("The search query"),
}),
handler: async ({ query }, { step }) => {
return await step?.run("search_knowledge_base", async () => {
// Simulate knowledge base search
const results = knowledgeBaseDB.filter(
(article) =>
article.title.toLowerCase().includes(query.toLowerCase()) ||
article.content.toLowerCase().includes(query.toLowerCase())
);
return results;
});
},
});
const searchLatestReleaseNotes = createTool({
name: "search_latest_release_notes",
description: "Search the latest release notes for relevant articles",
parameters: z.object({
query: z.string().describe("The search query"),
}),
handler: async ({ query }, { step }) => {
return await step?.run("search_latest_release_notes", async () => {
// Simulate knowledge base search
const results = releaseNotesDB.filter(
(releaseNote) =>
releaseNote.title.toLowerCase().includes(query.toLowerCase()) ||
releaseNote.content.toLowerCase().includes(query.toLowerCase())
);
return results;
});
},
});
const getTicketDetails = async (ticketId: string) => {
const ticket = ticketsDB.find((t) => t.id === ticketId);
return ticket || { error: "Ticket not found" };
};
// Create our agents
const customerSupportAgent = createAgent({
name: "Customer Support",
description:
"I am a customer support agent that helps customers with their inquiries.",
system: `You are a helpful customer support agent.
Your goal is to assist customers with their questions and concerns.
Be professional, courteous, and thorough in your responses.`,
model: anthropic({
model: "claude-3-5-haiku-latest",
defaultParameters: {
max_tokens: 1000,
},
}),
tools: [
searchKnowledgeBase,
createTool({
name: "update_ticket",
description: "Update a ticket with a note",
parameters: z.object({
ticketId: z.string().describe("The ID of the ticket to update"),
priority: z.string().describe("The priority of the ticket"),
status: z.string().describe("The status of the ticket"),
note: z.string().describe("A note to update the ticket with"),
}),
handler: async ({ ticketId, priority, status, note }, { step }) => {
return await step?.run("update_ticket", async () => {
// TODO: Update the ticket in the database
return { message: "Ticket updated successfully" };
});
},
}),
],
});
const technicalSupportAgent = createAgent({
name: "Technical Support",
description: "I am a technical support agent that helps critical tickets.",
system: `You are a technical support specialist.
Your goal is to help resolve critical tickets.
Use your expertise to diagnose problems and suggest solutions.`,
model: anthropic({
model: "claude-3-5-haiku-latest",
defaultParameters: {
max_tokens: 1000,
},
}),
tools: [searchLatestReleaseNotes],
});
// Create our Routing Agent that will orchestrate the network of agents
// and evaluate if the support request is answered.
const supervisorRoutingAgent = createRoutingAgent({
name: "Supervisor",
description: "I am a Support supervisor.",
system: `You are a supervisor.
Your goal is to answer customer initial request or escalate the ticket if no answer can be provided.
Choose to route tickets to the appropriate agent using the following instructions:
- Critical tickets should be routed to the "Technical Support" agent.
- Actions such as updating the ticket or handling non-critical tickets should be routed to the "Customer Support" agent.
Think step by step and reason through your decision.
When an agent as answered the ticket initial request or updated the ticket, call the "done" tool.`,
model: anthropic({
model: "claude-3-5-haiku-latest",
defaultParameters: {
max_tokens: 1000,
},
}),
tools: [
createTool({
name: "done",
description: "Call this when the ticket is solved or escalated",
handler: async () => {},
}),
createTool({
name: "route_to_agent",
description: "Route the ticket to the appropriate agent",
parameters: z.object({
agent: z.string().describe("The agent to route the ticket to"),
}),
handler: async ({ agent }) => {
return agent;
},
}),
],
lifecycle: {
onRoute: ({ result, network }) => {
const lastMessage = lastResult(network?.state.results);
// ensure to loop back to the last executing agent if a tool has been called
if (lastMessage && isLastMessageOfType(lastMessage, "tool_call")) {
return [lastMessage?.agent.name];
}
const tool = result.toolCalls[0];
if (!tool) {
return;
}
const toolName = tool.tool.name;
if (toolName === "done") {
return;
} else if (toolName === "route_to_agent") {
if (
typeof tool.content === "object" &&
tool.content !== null &&
"data" in tool.content &&
typeof tool.content.data === "string"
) {
return [tool.content.data];
}
}
return;
},
},
});
// Create a network with the agents with the routing agent
const supportNetwork = createNetwork({
name: "Support Network",
agents: [customerSupportAgent, technicalSupportAgent],
defaultModel: anthropic({
model: "claude-3-5-haiku-latest",
defaultParameters: {
max_tokens: 1000,
},
}),
router: isorRoutingAgent,
});
Try this agent network locally: https://github.com/inngest/agent-kit/tree/main/examples/support-agent-human-in-the-loop#readme
Both approaches are compatible with the
maxIter
parameters that enable you to put a maximum number of network iterations. We recommend always setting amaster
value when using Agent-based routing.
- The AgentKit SWE-bench example demonstrates how to build a network of agents solving a complex SWE bench challenge.
- The Simple Search Agent navigates the web autonomously to answer the given question
-
The Support Agent demonstrates how Inngest’s
waitForEvent()
enables the Agent to ask a human for help. - The Coding Agent replicates the Cursor’s Agent mode, creating a complete project from a simple prompt.
After cloning the repository:
- Ensure that you have
node
andpnpm
installed
node -v # should be > 20.x
pnpm -v # should be > 9.x
- Install dependencies:
pnpm;
- Build the package or run tests:
pnpm build
pnpm test
License
For Tasks:
Click tags to check more tools for each tasksFor Jobs:
Alternative AI tools for agent-kit
Similar Open Source Tools

agent-kit
AgentKit is a framework for creating and orchestrating AI Agents, enabling developers to build, test, and deploy reliable AI applications at scale. It allows for creating networked agents with separate tasks and instructions to solve specific tasks, as well as simple agents for tasks like writing content. The framework requires the Inngest TypeScript SDK as a dependency and provides documentation on agents, tools, network, state, and routing. Example projects showcase AgentKit in action, such as the Test Writing Network demo using Workflow Kit, Supabase, and OpenAI.

mcpdotnet
mcpdotnet is a .NET implementation of the Model Context Protocol (MCP), facilitating connections and interactions between .NET applications and MCP clients and servers. It aims to provide a clean, specification-compliant implementation with support for various MCP capabilities and transport types. The library includes features such as async/await pattern, logging support, and compatibility with .NET 8.0 and later. Users can create clients to use tools from configured servers and also create servers to register tools and interact with clients. The project roadmap includes expanding documentation, increasing test coverage, adding samples, performance optimization, SSE server support, and authentication.

mcp-go
MCP Go is a Go implementation of the Model Context Protocol (MCP), facilitating seamless integration between LLM applications and external data sources and tools. It handles complex protocol details and server management, allowing developers to focus on building tools. The tool is designed to be fast, simple, and complete, aiming to provide a high-level and easy-to-use interface for developing MCP servers. MCP Go is currently under active development, with core features working and advanced capabilities in progress.

Ollama
Ollama SDK for .NET is a fully generated C# SDK based on OpenAPI specification using OpenApiGenerator. It supports automatic releases of new preview versions, source generator for defining tools natively through C# interfaces, and all modern .NET features. The SDK provides support for all Ollama API endpoints including chats, embeddings, listing models, pulling and creating new models, and more. It also offers tools for interacting with weather data and providing weather-related information to users.

modelfusion
ModelFusion is an abstraction layer for integrating AI models into JavaScript and TypeScript applications, unifying the API for common operations such as text streaming, object generation, and tool usage. It provides features to support production environments, including observability hooks, logging, and automatic retries. You can use ModelFusion to build AI applications, chatbots, and agents. ModelFusion is a non-commercial open source project that is community-driven. You can use it with any supported provider. ModelFusion supports a wide range of models including text generation, image generation, vision, text-to-speech, speech-to-text, and embedding models. ModelFusion infers TypeScript types wherever possible and validates model responses. ModelFusion provides an observer framework and logging support. ModelFusion ensures seamless operation through automatic retries, throttling, and error handling mechanisms. ModelFusion is fully tree-shakeable, can be used in serverless environments, and only uses a minimal set of dependencies.

LightRAG
LightRAG is a PyTorch library designed for building and optimizing Retriever-Agent-Generator (RAG) pipelines. It follows principles of simplicity, quality, and optimization, offering developers maximum customizability with minimal abstraction. The library includes components for model interaction, output parsing, and structured data generation. LightRAG facilitates tasks like providing explanations and examples for concepts through a question-answering pipeline.

llm.nvim
llm.nvim is a neovim plugin designed for LLM-assisted programming. It provides a no-frills approach to integrating language model assistance into the coding workflow. Users can configure the plugin to interact with various AI services such as GROQ, OpenAI, and Anthropics. The plugin offers functions to trigger the LLM assistant, create new prompt files, and customize key bindings for seamless interaction. With a focus on simplicity and efficiency, llm.nvim aims to enhance the coding experience by leveraging AI capabilities within the neovim environment.

whetstone.chatgpt
Whetstone.ChatGPT is a simple light-weight library that wraps the Open AI API with support for dependency injection. It supports features like GPT 4, GPT 3.5 Turbo, chat completions, audio transcription and translation, vision completions, files, fine tunes, images, embeddings, moderations, and response streaming. The library provides a video walkthrough of a Blazor web app built on it and includes examples such as a command line bot. It offers quickstarts for dependency injection, chat completions, completions, file handling, fine tuning, image generation, and audio transcription.

continuous-eval
Open-Source Evaluation for LLM Applications. `continuous-eval` is an open-source package created for granular and holistic evaluation of GenAI application pipelines. It offers modularized evaluation, a comprehensive metric library covering various LLM use cases, the ability to leverage user feedback in evaluation, and synthetic dataset generation for testing pipelines. Users can define their own metrics by extending the Metric class. The tool allows running evaluation on a pipeline defined with modules and corresponding metrics. Additionally, it provides synthetic data generation capabilities to create user interaction data for evaluation or training purposes.

UniChat
UniChat is a pipeline tool for creating online and offline chat-bots in Unity. It leverages Unity.Sentis and text vector embedding technology to enable offline mode text content search based on vector databases. The tool includes a chain toolkit for embedding LLM and Agent in games, along with middleware components for Text to Speech, Speech to Text, and Sub-classifier functionalities. UniChat also offers a tool for invoking tools based on ReActAgent workflow, allowing users to create personalized chat scenarios and character cards. The tool provides a comprehensive solution for designing flexible conversations in games while maintaining developer's ideas.

CopilotKit
CopilotKit is an open-source framework for building, deploying, and operating fully custom AI Copilots, including in-app AI chatbots, AI agents, and AI Textareas. It provides a set of components and entry points that allow developers to easily integrate AI capabilities into their applications. CopilotKit is designed to be flexible and extensible, so developers can tailor it to their specific needs. It supports a variety of use cases, including providing app-aware AI chatbots that can interact with the application state and take action, drop-in replacements for textareas with AI-assisted text generation, and in-app agents that can access real-time application context and take action within the application.

dynamiq
Dynamiq is an orchestration framework designed to streamline the development of AI-powered applications, specializing in orchestrating retrieval-augmented generation (RAG) and large language model (LLM) agents. It provides an all-in-one Gen AI framework for agentic AI and LLM applications, offering tools for multi-agent orchestration, document indexing, and retrieval flows. With Dynamiq, users can easily build and deploy AI solutions for various tasks.

extrapolate
Extrapolate is an app that uses Artificial Intelligence to show you how your face ages over time. It generates a 3-second GIF of your aging face and allows you to store and retrieve photos from Cloudflare R2 using Workers. Users can deploy their own version of Extrapolate on Vercel by setting up ReplicateHQ and Upstash accounts, as well as creating a Cloudflare R2 instance with a Cloudflare Worker to handle uploads and reads. The tool provides a fun and interactive way to visualize the aging process through AI technology.

ChatRex
ChatRex is a Multimodal Large Language Model (MLLM) designed to seamlessly integrate fine-grained object perception and robust language understanding. By adopting a decoupled architecture with a retrieval-based approach for object detection and leveraging high-resolution visual inputs, ChatRex addresses key challenges in perception tasks. It is powered by the Rexverse-2M dataset with diverse image-region-text annotations. ChatRex can be applied to various scenarios requiring fine-grained perception, such as object detection, grounded conversation, grounded image captioning, and region understanding.

funcchain
Funcchain is a Python library that allows you to easily write cognitive systems by leveraging Pydantic models as output schemas and LangChain in the backend. It provides a seamless integration of LLMs into your apps, utilizing OpenAI Functions or LlamaCpp grammars (json-schema-mode) for efficient structured output. Funcchain compiles the Funcchain syntax into LangChain runnables, enabling you to invoke, stream, or batch process your pipelines effortlessly.

OpenAI-DotNet
OpenAI-DotNet is a simple C# .NET client library for OpenAI to use through their RESTful API. It is independently developed and not an official library affiliated with OpenAI. Users need an OpenAI API account to utilize this library. The library targets .NET 6.0 and above, working across various platforms like console apps, winforms, wpf, asp.net, etc., and on Windows, Linux, and Mac. It provides functionalities for authentication, interacting with models, assistants, threads, chat, audio, images, files, fine-tuning, embeddings, and moderations.
For similar tasks

agent-kit
AgentKit is a framework for creating and orchestrating AI Agents, enabling developers to build, test, and deploy reliable AI applications at scale. It allows for creating networked agents with separate tasks and instructions to solve specific tasks, as well as simple agents for tasks like writing content. The framework requires the Inngest TypeScript SDK as a dependency and provides documentation on agents, tools, network, state, and routing. Example projects showcase AgentKit in action, such as the Test Writing Network demo using Workflow Kit, Supabase, and OpenAI.

agent-os
The Agent OS is an experimental framework and runtime to build sophisticated, long running, and self-coding AI agents. We believe that the most important super-power of AI agents is to write and execute their own code to interact with the world. But for that to work, they need to run in a suitable environment—a place designed to be inhabited by agents. The Agent OS is designed from the ground up to function as a long-term computing substrate for these kinds of self-evolving agents.

AISystem
This open-source project, also known as **Deep Learning System** or **AI System (AISys)**, aims to explore and learn about the system design of artificial intelligence and deep learning. The project is centered around the full-stack content of AI systems that ZOMI has accumulated,整理, and built during his work. The goal is to collaborate with all friends who are interested in AI open-source projects to jointly promote learning and discussion.

skypilot
SkyPilot is a framework for running LLMs, AI, and batch jobs on any cloud, offering maximum cost savings, highest GPU availability, and managed execution. SkyPilot abstracts away cloud infra burdens: - Launch jobs & clusters on any cloud - Easy scale-out: queue and run many jobs, automatically managed - Easy access to object stores (S3, GCS, R2) SkyPilot maximizes GPU availability for your jobs: * Provision in all zones/regions/clouds you have access to (the _Sky_), with automatic failover SkyPilot cuts your cloud costs: * Managed Spot: 3-6x cost savings using spot VMs, with auto-recovery from preemptions * Optimizer: 2x cost savings by auto-picking the cheapest VM/zone/region/cloud * Autostop: hands-free cleanup of idle clusters SkyPilot supports your existing GPU, TPU, and CPU workloads, with no code changes.

BentoML
BentoML is an open-source model serving library for building performant and scalable AI applications with Python. It comes with everything you need for serving optimization, model packaging, and production deployment.

council
Council is an open-source platform designed for the rapid development and deployment of customized generative AI applications using teams of agents. It extends the LLM tool ecosystem by providing advanced control flow and scalable oversight for AI agents. Users can create sophisticated agents with predictable behavior by leveraging Council's powerful approach to control flow using Controllers, Filters, Evaluators, and Budgets. The framework allows for automated routing between agents, comparing, evaluating, and selecting the best results for a task. Council aims to facilitate packaging and deploying agents at scale on multiple platforms while enabling enterprise-grade monitoring and quality control.

LazyLLM
LazyLLM is a low-code development tool for building complex AI applications with multiple agents. It assists developers in building AI applications at a low cost and continuously optimizing their performance. The tool provides a convenient workflow for application development and offers standard processes and tools for various stages of application development. Users can quickly prototype applications with LazyLLM, analyze bad cases with scenario task data, and iteratively optimize key components to enhance the overall application performance. LazyLLM aims to simplify the AI application development process and provide flexibility for both beginners and experts to create high-quality applications.

spring-ai-alibaba
Spring AI Alibaba is an AI application framework for Java developers that seamlessly integrates with Alibaba Cloud QWen LLM services and cloud-native infrastructures. It provides features like support for various AI models, high-level AI agent abstraction, function calling, and RAG support. The framework aims to simplify the development, evaluation, deployment, and observability of AI native Java applications. It offers open-source framework and ecosystem integrations to support features like prompt template management, event-driven AI applications, and more.
For similar jobs

sweep
Sweep is an AI junior developer that turns bugs and feature requests into code changes. It automatically handles developer experience improvements like adding type hints and improving test coverage.

teams-ai
The Teams AI Library is a software development kit (SDK) that helps developers create bots that can interact with Teams and Microsoft 365 applications. It is built on top of the Bot Framework SDK and simplifies the process of developing bots that interact with Teams' artificial intelligence capabilities. The SDK is available for JavaScript/TypeScript, .NET, and Python.

ai-guide
This guide is dedicated to Large Language Models (LLMs) that you can run on your home computer. It assumes your PC is a lower-end, non-gaming setup.

classifai
Supercharge WordPress Content Workflows and Engagement with Artificial Intelligence. Tap into leading cloud-based services like OpenAI, Microsoft Azure AI, Google Gemini and IBM Watson to augment your WordPress-powered websites. Publish content faster while improving SEO performance and increasing audience engagement. ClassifAI integrates Artificial Intelligence and Machine Learning technologies to lighten your workload and eliminate tedious tasks, giving you more time to create original content that matters.

chatbot-ui
Chatbot UI is an open-source AI chat app that allows users to create and deploy their own AI chatbots. It is easy to use and can be customized to fit any need. Chatbot UI is perfect for businesses, developers, and anyone who wants to create a chatbot.

BricksLLM
BricksLLM is a cloud native AI gateway written in Go. Currently, it provides native support for OpenAI, Anthropic, Azure OpenAI and vLLM. BricksLLM aims to provide enterprise level infrastructure that can power any LLM production use cases. Here are some use cases for BricksLLM: * Set LLM usage limits for users on different pricing tiers * Track LLM usage on a per user and per organization basis * Block or redact requests containing PIIs * Improve LLM reliability with failovers, retries and caching * Distribute API keys with rate limits and cost limits for internal development/production use cases * Distribute API keys with rate limits and cost limits for students

uAgents
uAgents is a Python library developed by Fetch.ai that allows for the creation of autonomous AI agents. These agents can perform various tasks on a schedule or take action on various events. uAgents are easy to create and manage, and they are connected to a fast-growing network of other uAgents. They are also secure, with cryptographically secured messages and wallets.

griptape
Griptape is a modular Python framework for building AI-powered applications that securely connect to your enterprise data and APIs. It offers developers the ability to maintain control and flexibility at every step. Griptape's core components include Structures (Agents, Pipelines, and Workflows), Tasks, Tools, Memory (Conversation Memory, Task Memory, and Meta Memory), Drivers (Prompt and Embedding Drivers, Vector Store Drivers, Image Generation Drivers, Image Query Drivers, SQL Drivers, Web Scraper Drivers, and Conversation Memory Drivers), Engines (Query Engines, Extraction Engines, Summary Engines, Image Generation Engines, and Image Query Engines), and additional components (Rulesets, Loaders, Artifacts, Chunkers, and Tokenizers). Griptape enables developers to create AI-powered applications with ease and efficiency.