A modern JavaScript project demonstrating the latest AI trends used by tech startups, featuring implementations with OpenAI and Claude APIs.
- OpenAI Integration - Full support for GPT-4, function calling, streaming, and Assistants API
- Claude Integration - Support for Claude Sonnet 4.5, tool use, and streaming
- RAG (Retrieval-Augmented Generation) - Vector search with LLM for domain-specific knowledge
- Function Calling Agents - AI agents that can use tools and perform actions
- Streaming Responses - Real-time token streaming for better UX
- Multi-Model Support - Compare and use different AI models
- Structured Outputs - JSON mode and structured data extraction
- Multi-Agent Collaboration - Multiple agents working together
- Error Handling & Retries - Production-ready error handling patterns
- Cost Tracking - Token usage and cost monitoring
- Batch Processing - Efficient parallel request handling
- Memory Management - Advanced conversation context handling
- Prompt Engineering - Advanced prompting techniques
- Vision/Image Analysis - Image understanding capabilities
- Agentic Workflows - Multi-step autonomous workflows
- Structured Logging - Configurable logging with levels and metadata
- Type Safety - Comprehensive JSDoc type annotations
- Code Quality - ESLint, Prettier, and pre-commit hooks
- Node.js 20+ (LTS recommended, with ES modules support)
- API keys from:
- Azure OpenAI (Recommended)
- OpenAI (Alternative)
- Anthropic (Optional)
- Clone or navigate to the project directory:
cd "AI Agents"- Install dependencies:
npm install- Set up environment variables:
cp env.example .envNote: If
env.exampledoesn't exist, create a.envfile manually with the variables shown below.
- Edit
.envand add your API keys:
Azure OpenAI (Recommended)
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
AZURE_OPENAI_API_KEY=your_azure_openai_api_key_here
AZURE_OPENAI_DEPLOYMENT=your_deployment_name
AZURE_OPENAI_API_VERSION=2024-02-15-preview
AZURE_OPENAI_EMBEDDING_DEPLOYMENT=text-embedding-ada-002Option 2: Standard OpenAI (Alternative)
OPENAI_API_KEY=your_openai_api_key_hereOption 3: Default Provider Configuration
When using createAIClient('openai'), control which provider is used:
OPENAI_DEFAULT_PROVIDER=azure-openai # Use Azure OpenAI (default)
# or
OPENAI_DEFAULT_PROVIDER=openai-standard # Use Standard OpenAIThis allows switching between Azure and Standard OpenAI without code changes.
Claude (Optional)
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# Optional: Override default model
# CLAUDE_MODEL=claude-sonnet-4-5-20250929Run the interactive menu to browse and select examples:
npm start
# or
npm run menuThis will display a menu with all available examples organized by category. Simply select a number to run any example.
You can also run examples directly using npm scripts:
These examples demonstrate direct usage of OpenAI/Claude SDK APIs:
Full conversational interface with back-and-forth interaction:
npm run demo:interactive-chatFeatures:
- Continuous conversation loop
- Conversation history maintained across messages
- Special commands:
/help,/clear,/stats,/exit - Works with both OpenAI and Claude
- Graceful error handling
Basic chat completion with OpenAI or Claude:
npm run demo:chatReal-time token streaming:
npm run demo:streamingCompare outputs from different models:
npm run demo:multi-modelGet consistent, parseable JSON responses from AI models:
npm run demo:structuredDemonstrates JSON mode, data extraction, and structured data generation.
Persistent AI assistants with thread management:
npm run demo:assistantsDemonstrates assistant creation, threads, and persistent conversations.
Persistent conversations with tool use using Claude's Messages API:
npm run demo:claude-assistantsDemonstrates similar patterns to OpenAI Assistants API using Claude's Messages API with tool use capabilities.
Embeddings beyond RAG - similarity, clustering, classification:
npm run demo:embeddingsDemonstrates semantic search, document clustering, and text classification.
Image understanding and analysis capabilities:
npm run demo:visionDemonstrates image description, OCR, visual Q&A, and code extraction.
These examples demonstrate advanced patterns, strategies, and architectural approaches:
AI agent that can use tools/functions:
npm run demo:agentRetrieval-Augmented Generation with vector search:
npm run demo:ragMultiple AI agents working together on complex tasks:
npm run demo:multi-agentShows research, writing, and review agents collaborating.
Production-ready error handling with exponential backoff:
npm run demo:error-handlingIncludes retry logic, circuit breakers, and graceful degradation.
Monitor token usage and estimate API costs:
npm run demo:cost-trackingTrack costs by provider, model, and request type.
Efficient processing of multiple requests in parallel:
npm run demo:batchDemonstrates parallel processing, rate limiting, and sequential workflows.
Advanced conversation handling with context window management:
npm run demo:memoryIncludes automatic summarization, context window management, and persistence.
Advanced prompting strategies and techniques (includes Chain-of-Thought reasoning):
npm run demo:promptsCovers 10+ techniques: few-shot learning, chain-of-thought reasoning, role-playing, output formatting, constrained generation, self-consistency, prompt chaining, negative prompting, temperature tuning, and meta-prompting.
Multi-step autonomous workflows with decision-making:
npm run demo:workflowShows linear, iterative, conditional, and parallel workflows.
Security best practices for AI applications:
npm run demo:securityIncludes input sanitization, prompt injection detection, and validation.
Caching strategies to reduce costs and improve latency:
npm run demo:cachingIncludes cache management, invalidation, and cost savings analysis.
Token counting strategies and prompt optimization:
npm run demo:tokensDemonstrates token estimation, prompt optimization, and budget management.
Evaluate and test AI responses for quality and consistency:
npm run demo:evaluationIncludes quality evaluation, A/B testing, and automated test suites.
ai-agents/
βββ src/
β βββ config.js # Configuration and environment setup
β βββ menu.js # Interactive example selector
β βββ clients/
β β βββ ai-client-interface.js # Unified client interface
β β βββ azure-openai-client.js # Azure OpenAI API client
β β βββ standard-openai-client.js # Standard OpenAI API client
β β βββ claude-client.js # Claude API client
β β βββ README.md # Client interface documentation
β βββ agents/
β β βββ rag-agent.js # RAG implementation
β β βββ function-calling-agent.js # Function calling agent
β βββ utils/
β β βββ simple-vector-store.js # In-memory vector store
β β βββ token-utils.js # Token counting utilities
β β βββ cost-utils.js # Cost calculation utilities
β β βββ similarity-utils.js # Similarity calculation utilities
β βββ examples/
β βββ sdk-usage/ # Direct SDK usage examples
β β βββ simple-chat.js # Basic chat example
β β βββ interactive-chat.js # Interactive chat interface
β β βββ streaming-example.js # Streaming example
β β βββ multi-model-example.js # Multi-model comparison
β β βββ structured-output-example.js # JSON mode & structured outputs
β β βββ assistants-api-example.js # OpenAI Assistants API
β β βββ claude-assistants-example.js # Claude Messages API
β β βββ embeddings-example.js # Standalone embeddings
β β βββ vision-example.js # Vision/image analysis
β β βββ langgraph-example.js # LangGraph workflows
β β βββ langfuse-example.js # Langfuse observability
β βββ strategies/ # Higher-level strategies and patterns
β βββ agent-example.js # Function calling example
β βββ rag-example.js # RAG example
β βββ multi-agent/ # Multi-agent systems
β βββ a2a-agent/ # Agent-to-agent communication
β βββ react-agent/ # ReAct pattern
β βββ agent-orchestration/ # Agent orchestration
β βββ error-handling/ # Error handling & retries
β βββ cost-tracking/ # Cost tracking
β βββ batch/ # Batch processing
β βββ memory/ # Memory management
β βββ prompt-techniques-example.js # Prompt engineering
β βββ workflow/ # Agentic workflows
β βββ security/ # Security & prompt injection
β βββ caching/ # Response caching
β βββ token-optimization/ # Token optimization
β βββ evaluation/ # Evaluation & testing
β βββ context-extraction/ # Context extraction
β βββ state-persistence/ # State persistence
βββ package.json
βββ env.example # Environment variables template
βββ .env # Your API keys (not in git)
βββ README.md # This file
βββ TUTORIAL.md # Comprehensive tutorial
import { createAIClient } from './src/clients/client-factory.js';
// Use factory function (recommended)
const client = createAIClient('openai'); // Uses defaultProvider setting
// or explicitly:
const azureClient = createAIClient('azure-openai');
const standardClient = createAIClient('openai-standard');
const response = await client.chat([
{ role: 'user', content: 'Hello, how are you?' }
]);
console.log(response.choices[0].message.content);import { ClaudeClient } from './src/clients/claude-client.js';
const client = new ClaudeClient();
await client.chatStream(
[{ role: 'user', content: 'Tell me a story' }],
(chunk) => process.stdout.write(chunk)
);import { FunctionCallingAgent } from './src/agents/function-calling-agent.js';
const agent = new FunctionCallingAgent('openai');
// Register a function
agent.registerFunction(
'sendEmail',
'Send an email',
{
type: 'object',
properties: {
to: { type: 'string' },
subject: { type: 'string' },
body: { type: 'string' }
},
required: ['to', 'subject', 'body']
},
async ({ to, subject, body }) => {
// Your email sending logic
return { success: true };
}
);
// Use the agent
const response = await agent.chat('Send an email to [email protected]');import { RAGAgent } from './src/agents/rag-agent.js';
const ragAgent = new RAGAgent();
// Add documents to vector store
await ragAgent.addDocuments([
'Document 1 content...',
'Document 2 content...'
]);
// Query with RAG
const answer = await ragAgent.query('What is in the documents?');This project demonstrates 21+ core AI strategies across 30+ example files, organized into two categories:
These examples show direct usage of OpenAI/Claude SDK APIs:
- Strategy: Full conversational interface with continuous interaction
- Techniques: Conversation history, command handling, session management
- Use Cases: Chatbots, interactive assistants, conversational AI applications
- Strategy: Synchronous text generation
- Techniques: System prompts, message formatting
- Use Cases: Q&A, content generation, general conversation
- Strategy: Real-time token streaming for better UX
- Techniques: Incremental response delivery, chunk processing
- Use Cases: Chat interfaces, long-form content, real-time feedback
- Strategy: Comparing outputs from different AI models
- Techniques: Parallel queries, response comparison
- Use Cases: Model selection, quality assurance, A/B testing
- Strategy: JSON mode for consistent, parseable responses
- Techniques: JSON schema enforcement, data extraction, structured generation
- Use Cases: API responses, data parsing, ETL pipelines
- Strategy: Persistent AI assistants with thread management
- Techniques: Assistant creation, thread management, persistent conversations
- Use Cases: Long-running conversations, support systems, persistent agents
- Strategy: Embeddings beyond RAG for various use cases
- Techniques: Semantic similarity, clustering, classification, duplicate detection
- Use Cases: Document similarity, content organization, recommendation systems
- Strategy: Multimodal AI for image understanding
- Techniques: Image description, OCR, visual Q&A, code extraction
- Use Cases: Document processing, image analysis, visual content understanding
These examples demonstrate advanced patterns, strategies, and architectural approaches:
- Strategy: AI agents using external tools and APIs
- Techniques: Function registration, schema definition, tool execution
- Use Cases: Email sending, calculations, API integrations, automation
- Strategy: Vector search + LLM for domain-specific knowledge
- Techniques: Embeddings, similarity search, context injection
- Use Cases: Knowledge bases, document Q&A, domain-specific assistants
- Strategy: Multiple specialized agents working together
- Techniques: Agent orchestration, task delegation, result synthesis
- Use Cases: Complex workflows, content creation pipelines, research tasks
- Strategy: Production-ready error handling patterns
- Techniques: Exponential backoff, circuit breakers, graceful degradation
- Use Cases: Production systems, API reliability, fault tolerance
- Strategy: Token usage monitoring and cost optimization
- Techniques: Usage tracking, cost calculation, provider comparison
- Use Cases: Budget management, cost optimization, usage analytics
- Strategy: Efficient parallel and sequential request handling
- Techniques: Concurrency control, rate limiting, sequential dependencies
- Use Cases: Bulk operations, data processing, parallel queries
- Strategy: Advanced conversation context handling
- Techniques: Context summarization, window management, persistence
- Use Cases: Long conversations, context optimization, session management
- Strategy: 10+ advanced prompting techniques
- Techniques:
- Few-shot learning
- Chain-of-thought prompting
- Role-playing
- Output formatting
- Constrained generation
- Self-consistency
- Prompt chaining
- Negative prompting
- Temperature tuning
- Meta-prompting
- Use Cases: Improving model performance, controlling output, specialized tasks
- Strategy: Multi-step autonomous workflows with decision-making
- Techniques: Linear workflows, iterative refinement, conditional logic, parallel tasks
- Use Cases: Complex multi-step tasks, autonomous systems, workflow automation
- Strategy: Security best practices for AI applications
- Techniques: Input sanitization, injection detection, validation, secure prompts
- Use Cases: Production security, preventing prompt manipulation, input validation
- Strategy: Caching strategies to reduce costs and latency
- Techniques: Cache management, invalidation, TTL, cost savings
- Use Cases: Cost optimization, performance improvement, repeated queries
- Strategy: Token counting and prompt optimization
- Techniques: Token estimation, prompt optimization, budget management, context compression
- Use Cases: Cost control, prompt efficiency, context window management
- Strategy: Evaluate and test AI responses for quality
- Techniques: Quality evaluation, consistency testing, A/B testing, automated test suites
- Use Cases: Quality assurance, prompt optimization, regression testing
Note on Redundancy: Examples have been optimized to remove redundancy:
- Chain-of-Thought Reasoning: Covered comprehensively in
strategies/prompt-techniques-example.js(one of 10+ techniques) - Function Calling:
strategies/agent-example.jsdemonstrates basics,strategies/workflow-example.jsshows advanced orchestration - Embeddings:
strategies/rag-example.jsshows RAG usage,sdk-usage/embeddings-example.jsshows standalone use cases - Cost Tracking vs Token Optimization:
strategies/cost-tracking-example.jstracks costs,strategies/token-optimization-example.jsoptimizes prompts - All examples add unique value and demonstrate different aspects of AI application development
| Example | Strategy | Key Techniques | Complexity |
|---|---|---|---|
sdk-usage/interactive-chat.js |
Interactive Chat | Conversation history, command handling | β Beginner |
sdk-usage/simple-chat.js |
Basic Chat | System prompts, message formatting | β Beginner |
sdk-usage/streaming-example.js |
Streaming | Real-time tokens, chunk processing | β Beginner |
sdk-usage/multi-model-example.js |
Model Comparison | Parallel queries, response comparison | β Beginner |
sdk-usage/structured-output-example.js |
Structured Outputs | JSON mode, data extraction | ββ Intermediate |
sdk-usage/assistants-api-example.js |
Assistants API | Persistent assistants, thread management | βββ Advanced |
sdk-usage/embeddings-example.js |
Standalone Embeddings | Similarity, clustering, classification | ββ Intermediate |
sdk-usage/vision-example.js |
Multimodal AI | Image analysis, OCR, visual Q&A | ββ Intermediate |
| Example | Strategy | Key Techniques | Complexity |
|---|---|---|---|
strategies/agent-example.js |
Function Calling | Tool registration, schema definition | ββ Intermediate |
strategies/rag-example.js |
RAG | Embeddings, vector search, context injection | ββ Intermediate |
strategies/multi-agent/multi-agent-example.js |
Multi-Agent | Agent orchestration, task delegation | βββ Advanced |
strategies/a2a-agent/a2a-agent-example.js |
Agent-to-Agent | Direct messaging, negotiation | βββ Advanced |
strategies/react-agent/react-agent-example.js |
ReAct Pattern | Reasoning + Acting loop | βββ Advanced |
strategies/agent-orchestration/agent-orchestration-example.js |
Agent Orchestration | Intelligent tool routing | βββ Advanced |
strategies/error-handling/error-handling-example.js |
Error Handling | Retries, circuit breakers, fallbacks | βββ Advanced |
strategies/cost-tracking/cost-tracking-example.js |
Cost Optimization | Usage tracking, cost calculation | ββ Intermediate |
strategies/batch/batch-example.js |
Batch Processing | Concurrency, rate limiting, dependencies | βββ Advanced |
strategies/memory/memory-example.js |
Memory Management | Context summarization, window management | βββ Advanced |
strategies/prompt-techniques-example.js |
Prompt Engineering | 10+ techniques (few-shot, CoT, role-playing, etc.) | ββ Intermediate |
strategies/workflow/workflow-example.js |
Agentic Workflows | Multi-step orchestration, decision-making | βββ Advanced |
strategies/security/security-example.js |
Security | Input sanitization, injection prevention | ββ Intermediate |
strategies/caching/caching-example.js |
Response Caching | Cache management, cost optimization | ββ Intermediate |
strategies/token-optimization/token-optimization-example.js |
Token Optimization | Token counting, prompt optimization | ββ Intermediate |
strategies/evaluation/evaluation-example.js |
Evaluation & Testing | Quality evaluation, A/B testing | βββ Advanced |
strategies/context-extraction/context-extraction-example.js |
Context Extraction | Extract relevant context from history | ββ Intermediate |
strategies/state-persistence/state-persistence-example.js |
State Persistence | Checkpointing and state management | βββ Advanced |
This project prioritizes Azure OpenAI. To use Azure OpenAI:
- Set the following environment variables in your
.envfile:
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
AZURE_OPENAI_API_KEY=your_api_key
AZURE_OPENAI_DEPLOYMENT=your_deployment_name
AZURE_OPENAI_API_VERSION=2024-02-15-preview
AZURE_OPENAI_EMBEDDING_DEPLOYMENT=text-embedding-ada-002- The client will automatically detect Azure configuration and use the Azure endpoint.
Note:
- When using Azure OpenAI, the deployment name is used as the model identifier. Make sure your deployment name matches the model you want to use (e.g.,
gpt-4-turbo-preview). - For RAG functionality, you need a separate embedding deployment (e.g.,
text-embedding-ada-002ortext-embedding-3-small). SetAZURE_OPENAI_EMBEDDING_DEPLOYMENTto your embedding deployment name.
chat(messages, options)- Basic chat completionchatStream(messages, onChunk, options)- Streaming chatchatWithFunctions(messages, functions, options)- Function callingcreateAssistant(instructions, tools)- Create an assistantgetEmbeddings(input)- Get embeddings for RAG
chat(messages, options)- Basic chat completionchatStream(messages, onChunk, options)- Streaming chatchatWithTools(messages, tools, options)- Tool usegetTextContent(response)- Extract text from response
addDocuments(documents, metadatas, ids)- Add documents to vector storequery(question, topK, options)- Query with RAGqueryStream(question, onChunk, topK)- Streaming RAG querydeleteDocuments(ids)- Delete documentsgetStats()- Get collection stats
registerFunction(name, description, parameters, implementation)- Register a functionchat(userMessage, options)- Chat with function callingresetConversation()- Reset conversation history
- Never commit your
.envfile to version control - Keep your API keys secure
- Use environment variables for all sensitive data
- Consider using a secrets management service for production
- Simple Chat - Basic chat completion with OpenAI/Claude
- Interactive Chat - Full conversational interface with back-and-forth interaction
- Streaming - Real-time token streaming for better UX
- Multi-Model - Compare outputs from different AI models
- Structured Output - Get consistent JSON responses for data extraction
- Assistants API - Persistent AI assistants with thread management (OpenAI)
- Claude Assistants-like - Persistent conversations with tool use (Claude Messages API)
- Embeddings - Standalone embeddings for similarity, clustering, classification
- Vision - Image analysis, OCR, and visual question answering
- LangGraph - Stateful, multi-actor agent workflows
- Langfuse - LLM observability, tracing, and monitoring
- Function Calling Agent - Agents that can use tools and functions
- ReAct Agent - ReAct (Reasoning + Acting) pattern
- Agent Orchestration - Intelligent tool routing/dispatching
- RAG - Retrieval-Augmented Generation with vector search
- Multi-Agent - Multiple specialized agents collaborating on tasks
- Agent-to-Agent (A2A) - Direct agent-to-agent messaging and negotiation
- Agentic Workflows - Multi-step autonomous workflows
- Error Handling - Production-ready error handling with retries
- Cost Tracking - Monitor token usage and API costs
- Batch Processing - Efficient parallel and sequential processing
- Memory Management - Advanced conversation context handling
- Context Extraction - Extract relevant context from chat history
- State Persistence - Checkpointing and state management
- Prompt Engineering - 10+ advanced prompting techniques
- Security - Input sanitization and prompt injection prevention
- Caching - Response caching to reduce costs and improve latency
- Token Optimization - Token counting and prompt optimization strategies
- Evaluation - Quality evaluation, A/B testing, and automated test suites
Feel free to extend this project with:
- More agent types
- Additional vector database integrations
- UI components (React, Vue, etc.)
- More example use cases
- Error handling improvements
- Additional AI model integrations
MIT
- OpenAI for the GPT models and API
- Anthropic for Claude models and API
- Azure OpenAI for enterprise AI services
Built with β€οΈ to demonstrate the latest AI trends for tech startups