ð€ Agenite
ããŒã«ã«ð€ Agenite ã«ã€ããŠ
Agenite ã¯ãããŒã«ãã¹ããªãŒãã³ã°ããã«ããšãŒãžã§ã³ãæ§æãåãã AI ãšãŒãžã§ã³ããæ§ç¯ã»çµã¿åããã»å¶åŸ¡ããããã® TypeScript ãã¬ãŒã ã¯ãŒã¯ã§ããåå®å šãªãšãŒãžã§ã³ãéçºãæãéçºè åãã§ãOpenAIãAnthropicãAWS BedrockãOllama ãªã©ã®ãããã€ããŒãåãæ¿ããããŸãã
äž»ãªæ©èœ
- 01TypeScript ã«ããåå®å šãªããŒã«å®çŸ©
- 02ããŒã«å ¥åã® JSON Schema æ€èšŒ
- 03è€æ°ã® LLM ãããã€ããŒã«å¯Ÿããçµ±äžã€ã³ã¿ãŒãã§ãŒã¹
- 04ãžã§ãã¬ãŒã¿ãŒã«ããã¹ãããå®è¡ãšã¹ããªãŒãã³ã°åºå
- 05MCP ãµãŒããŒæ¥ç¶çšã® MCP ã¯ã©ã€ã¢ã³ã
掻çšã·ãŒã³
- 01å€éšããŒã«ãåŒã³åºã TypeScript 補ãšãŒãžã§ã³ãã®æ§ç¯
- 02è€æ°ã®å°éãšãŒãžã§ã³ãã«ããã·ã¹ãã æ§æ
- 03ã¯ã©ãŠããããã€ããŒéã®åãæ¿ãã Ollama ã¢ãã«ã®ããŒã«ã«å®è¡
MCP 察å¿
@agenite/mcp ããã±ãŒãžãæäŸããŸããMCP ã¯ã©ã€ã¢ã³ããšã㊠MCP ãµãŒããŒã«æ¥ç¶ããWeb ã³ã³ãã³ãããã¡ã€ã«ã·ã¹ãã ãããŒã¿ããŒã¹ãªã©ã®ããŒã¿ãœãŒã¹ãããŒã«ã«ã¢ã¯ã»ã¹ããŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
ãã®ãµãŒããŒã®ããã±ãŒãžããªã¢ãŒããšã³ããã€ã³ãã¯ãŸã ååŸã§ããŠããŸããããããžã§ã¯ãã® README ã®æé ã«åŸã£ãŠãã ããã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
ð€ Agenite
TypeScript ã䜿çšã㊠AI ãšãŒãžã§ã³ããæ§ç¯ããããã®ãã¢ãã³ã§ã¢ãžã¥ãŒã«åŒãã€åå®å šãªãã¬ãŒã ã¯ãŒã¯
Agenite ãšã¯ïŒ
Agenite ã¯ãé«åºŠãª AI ãšãŒãžã§ã³ããæ§ç¯ããããã«èšèšããã匷å㪠TypeScript ãã¬ãŒã ã¯ãŒã¯ã§ããã¢ãžã¥ãŒã«åŒã§åå®å šãæè»ãªã¢ãŒããã¯ãã£ãæäŸããé«åºŠãªæ©èœãåãã AI ãšãŒãžã§ã³ãã®äœæãçµã¿åãããå¶åŸ¡ãç°¡åã«è¡ããŸãã
âš äž»ãªæ©èœ
-
åå®å šæ§ãšéçºè ãšã¯ã¹ããªãšã³ã¹
- TypeScript ãåºç€ãšããŠäžããæ§ç¯
- ããŒã«ãšãšãŒãžã§ã³ãèšå®ã«å¯Ÿããå ç¢ãªåãã§ãã¯
- åªãã IDE ãµããŒããšèªåè£å®
-
ããŒã«é£æº
- 颿°åŒã³åºããæåªå ã§ãµããŒã
- JSON Schema æ€èšŒãå èµ
- æ§é åããããšã©ãŒåŠç
- ç°¡å㪠API 飿º
-
ãããã€ããŒã«äŸåããªãèšèš
- OpenAIãAnthropicãAWS BedrockãOllama ããµããŒã
- ãããã€ããŒéã§äžè²«ããã€ã³ã¿ãŒãã§ãŒã¹
- æ°ãããããã€ããŒãç°¡åã«æ¡åŒµå¯èœ
-
é«åºŠãªã¢ãŒããã¯ãã£
- JavaScript ãžã§ãã¬ãŒã¿ãŒã䜿çšããåæ¹åãããŒ
- ã¹ãããããŒã¹ã®å®è¡ã¢ãã«
- reducer ã«ããç¶æ 管çãå èµ
- æè»ãªããã«ãŠã§ã¢ã·ã¹ãã
-
ã¢ãã«ã³ã³ããã¹ããããã³ã«ïŒMCPïŒ
- LLM ãããŒã¿ãœãŒã¹ã«æ¥ç¶ããããã®æšæºåãããã³ã«
- MCP ãµãŒããŒãšããåãããããã®ã¯ã©ã€ã¢ã³ãå®è£
- Web ã³ã³ãã³ãããã¡ã€ã«ã·ã¹ãã ãããŒã¿ããŒã¹ãªã©ã«ã¢ã¯ã»ã¹
ðŠ å©çšå¯èœãªããã±ãŒãž
| ããã±ãŒãž | 説æ | ã€ã³ã¹ããŒã« |
|---|---|---|
| ã³ã¢ããã±ãŒãž | ||
@agenite/agent | LLM ãšã®ããåããããŒã«å®è¡ãç¶æ 管çãè¡ãããã®ã³ã¢ãšãŒãžã§ã³ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ | npm install @agenite/agent |
@agenite/tool | åå®å šæ§ãã¹ããŒãæ€èšŒããšã©ãŒåŠçãåããããŒã«å®çŸ©ãã¬ãŒã ã¯ãŒã¯ | npm install @agenite/tool |
@agenite/llm | ããŸããŸãª LLM ãããã€ããŒãæœè±¡åããåºç€ãããã€ããŒã€ã³ã¿ãŒãã§ãŒã¹å±€ | npm install @agenite/llm |
| ãããã€ããŒããã±ãŒãž | ||
@agenite/openai | 颿°åŒã³åºãããµããŒããã GPT ã¢ãã«åãã® OpenAI API 飿º | npm install @agenite/openai |
@agenite/anthropic | Claude ã¢ãã«åãã® Anthropic API 飿º | npm install @agenite/anthropic |
@agenite/bedrock | Claude ãªã©ã®ã¢ãã«ããµããŒããã AWS Bedrock 飿º | npm install @agenite/bedrock |
@agenite/ollama | ã¢ãã«ãããŒã«ã«ã§å®è¡ããããã® Ollama 飿º | npm install @agenite/ollama |
| MCP ããã±ãŒãž | ||
@agenite/mcp | æšæºåãããããŒã¿ãœãŒã¹ãããŒã«ã«æ¥ç¶ããããã®ã¢ãã«ã³ã³ããã¹ããããã³ã«ã¯ã©ã€ã¢ã³ã | npm install @agenite/mcp |
| ããã«ãŠã§ã¢ããã±ãŒãž | ||
@agenite/pretty-logger | ãšãŒãžã§ã³ãå®è¡ã®ãããã°ã«äœ¿ãããã«ã©ãã«ãªã³ã³ãœãŒã«ãã®ã³ã°ããã«ãŠã§ã¢ | npm install @agenite/pretty-logger |
äžè¬çãªã»ããã¢ããã§ã¯ãã³ã¢ããã±ãŒãžãšå°ãªããšã 1 ã€ã®ãããã€ããŒãå¿ èŠã§ãã
# Install core packages
npm install @agenite/agent @agenite/tool @agenite/llm
# Install your preferred provider
npm install @agenite/openai
# OR
npm install @agenite/bedrock
ð ã¯ã€ãã¯ã¹ã¿ãŒã
import { Agent } from '@agenite/agent';
import { Tool } from '@agenite/tool';
import { BedrockProvider } from '@agenite/bedrock';
import { prettyLogger } from '@agenite/pretty-logger';
// Create a calculator tool
const calculatorTool = new Tool<{ expression: string }>({
name: 'calculator',
description: 'Perform basic math operations',
inputSchema: {
type: 'object',
properties: {
expression: { type: 'string' },
},
required: ['expression'],
},
execute: async ({ input }) => {
try {
const result = new Function('return ' + input.expression)();
return { isError: false, data: result.toString() };
} catch (error) {
if (error instanceof Error) {
return { isError: true, data: error.message };
}
return { isError: true, data: 'Unknown error' };
}
},
});
// Create an agent
const agent = new Agent({
name: 'math-buddy',
provider: new BedrockProvider({
model: 'anthropic.claude-3-5-sonnet-20240620-v1:0',
}),
tools: [calculatorTool],
instructions: 'You are a helpful math assistant.',
middlewares: [prettyLogger()],
});
// Example usage
const result = await agent.execute({
messages: [
{
role: 'user',
content: [{ type: 'text', text: 'What is 1234 * 5678?' }],
},
],
});
ðïž ã³ã¢ã³ã³ã»ãã
ãšãŒãžã§ã³ã
ãšãŒãžã§ã³ã㯠Agenite ã®äžå¿ãšãªãæ§æèŠçŽ ã§ãããšãŒãžã§ã³ãã¯æ¬¡ã®ããšãè¡ããŸãã
- LLM ãšããŒã«éã®ããåãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŸã
- äŒè©±ã®ç¶æ ãšã³ã³ããã¹ãã管çããŸã
- ããŒã«ã®å®è¡ãšçµæãåŠçããŸã
- è€éãªã¯ãŒã¯ãããŒã®ããã®å ¥ãåç¶ã®å®è¡ããµããŒãããŸã
- ãªã¢ã«ã¿ã€ã ã®ããåãã«å¯Ÿå¿ããã¹ããªãŒãã³ã°æ©èœãæäŸããŸã
ããŒã«
ããŒã«ã¯ãç¹å®ã®æ©èœãæäŸããŠãšãŒãžã§ã³ãã®èœåãæ¡åŒµããŸãã
- TypeScript ã«ãã匷åãªåå®å šæ§
- å ¥åã«å¯Ÿãã JSON Schema æ€èšŒ
- æè»ãªãšã©ãŒåŠç
- ç°¡å㪠API 飿º
ãããã€ããŒ
çŸåšãµããŒããããŠãã LLM ãããã€ããŒïŒ
- OpenAI APIïŒGPT ã¢ãã«ïŒ
- Anthropic APIïŒClaude ã¢ãã«ïŒ
- AWS BedrockïŒClaudeãTitan ã¢ãã«ïŒ
- Ollama çµç±ã®ããŒã«ã«ã¢ãã«
Model Context ProtocolïŒMCPïŒ
MCP ã¯ãLLM ãããŒã¿ãœãŒã¹ã«æ¥ç¶ããããã®æšæºåããããããã³ã«ã§ãïŒ
- MCP ãµãŒããŒãšé£æºããããã®ã¯ã©ã€ã¢ã³ãå®è£
- ãŠã§ãã³ã³ãã³ãããã¡ã€ã«ã·ã¹ãã ãããŒã¿ããŒã¹ãªã©ãžã®ã¢ã¯ã»ã¹
- USB-C ãæ±çšçãªããŒããŠã§ã¢æ¥ç¶ãæäŸããä»çµã¿ã«äŒŒãŠããŸã
ð é«åºŠãªæ©èœ
ãã«ããšãŒãžã§ã³ãã·ã¹ãã
// Create specialist agents
const calculatorAgent = new Agent({
name: 'calculator-specialist',
provider,
tools: [calculatorTool],
description: 'Specializes in mathematical calculations',
});
const weatherAgent = new Agent({
name: 'weather-specialist',
provider,
tools: [weatherTool],
description: 'Provides weather information',
});
// Create a coordinator agent
const coordinatorAgent = new Agent({
name: 'coordinator',
provider,
agents: [calculatorAgent, weatherAgent],
instructions: 'Coordinate between specialist agents to solve complex problems.',
});
ã¹ãããããŒã¹ã®å®è¡
// Create an iterator for fine-grained control
const iterator = agent.iterate({
messages: [{ role: 'user', content: [{ type: 'text', text: 'Calculate 25 divided by 5, then multiply by 3' }] }],
stream: true,
});
// Process the stream with custom handling
for await (const chunk of iterator) {
switch (chunk.type) {
case 'agenite.llm-call.streaming':
console.log(chunk.content);
break;
case 'agenite.tool-call.params':
console.log('Using tool:', chunk.toolUseBlocks);
break;
case 'agenite.tool-result':
console.log('Tool result:', chunk.result);
break;
}
}
ð ããã¥ã¡ã³ã
詳ããããã¥ã¡ã³ãã«ã€ããŠã¯ãdocs.agenite.comãã芧ãã ããïŒ
ð€ ã³ãã¥ããã£
ð ïž éçº
git clone https://github.com/subeshb1/agenite.git
cd agenite
pnpm install
pnpm build
ð ã©ã€ã»ã³ã¹
MIT
ð ã¹ã¿ãŒå±¥æŽ
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã