AGENTS.md 初学者开发者指南:贡献于EdgeAI 本文档为开发者、AI代理和贡献者提供了关于本仓库的全面信息。内容涵盖了设置、开发工作流、测试以及最佳实践。 最后更新日期:2025年10月30日 | 文档版本:3.0 目录 项目概述 仓库结构 先决条件 设置命令 开发工作流 测试说明 代码风格指南 拉取请求指南 翻译系统 Foundry Local集成 构建与部署 常见问题与故障排除 附加资源 项目特定说明 获取帮助 项目概述 EdgeAI for Beginners 是一个全面的教育性仓库,旨在教授使用小型语言模型(SLMs)进行边缘AI开发。课程内容包括EdgeAI基础知识、模型部署、优化技术以及使用Microsoft Foundry Local和各种AI框架的生产级实现。
初学者开发者指南:贡献于EdgeAI
本文档为开发者、AI代理和贡献者提供了关于本仓库的全面信息。内容涵盖了设置、开发工作流、测试以及最佳实践。
最后更新日期:2025年10月30日 | 文档版本:3.0
EdgeAI for Beginners 是一个全面的教育性仓库,旨在教授使用小型语言模型(SLMs)进行边缘AI开发。课程内容包括EdgeAI基础知识、模型部署、优化技术以及使用Microsoft Foundry Local和各种AI框架的生产级实现。
关键技术:
仓库类型: 包含8个模块和10个综合示例应用的教育内容仓库
架构: 多模块学习路径,提供展示边缘AI部署模式的实践示例
edgeai-for-beginners/ ├── introduction.md # Course introduction and overview ├── Module01-07/ # Core educational modules (Markdown) ├── Module08/ # Foundry Local toolkit with 10 samples │ ├── samples/01-06/ # Foundation samples (Python) │ ├── samples/07/ # API client (Python) │ ├── samples/08/ # Windows 11 chat app (Electron) │ └── samples/09-10/ # Advanced multi-agent systems (Python) ├── Workshop/ # Hands-on workshop materials │ ├── samples/ # Workshop Python samples with utilities │ │ ├── session01/ # Chat bootstrap samples │ │ ├── session02-06/ # Progressive workshop sessions │ │ └── util/ # Workshop utility modules │ ├── notebooks/ # Jupyter notebook tutorials │ └── scripts/ # Validation and testing tools ├── translations/ # Multi-language translations (50+ languages) ├── translated_images/ # Localized images └── imgs/ # Course images and assets
# Clone the repository git clone https://github.com/microsoft/edgeai-for-beginners.git cd edgeai-for-beginners # No build step required - this is primarily an educational content repository
# Create and activate virtual environment python -m venv .venv # On Windows .venv\Scripts\activate # On macOS/Linux source .venv/bin/activate # Install Foundry Local SDK and dependencies pip install foundry-local-sdk openai # Install additional dependencies for Module08 samples cd Module08 pip install -r requirements.txt # Install Workshop dependencies cd ../Workshop pip install -r requirements.txt
cd Module08/samples/08 npm install # Start in development mode npm run dev # Build for production npm run build # Create installer npm run dist
Foundry Local是运行示例所需的工具。请从官方仓库下载并安装:
安装:
winget install Microsoft.FoundryLocalbrew tap microsoft/foundrylocal && brew install foundrylocal快速开始:
# Run your first model (auto-downloads if needed) foundry model run phi-4-mini # List available models foundry model ls # Check service status foundry service status
注意:Foundry Local会自动为您的硬件选择最佳模型版本(CUDA GPU、Qualcomm NPU或CPU)。
本仓库主要包含Markdown教育内容。进行更改时:
.md文件对于模块08的Python示例(示例01-07、09-10):
cd Module08 python samples/01/chat_quickstart.py "Test message"
对于Workshop Python示例:
cd Workshop/samples/session01 python chat_bootstrap.py "Test message"
对于Electron示例(示例08):
cd Module08/samples/08 npm run dev # Development with hot reload
Python示例没有自动化测试,但可以通过运行进行验证:
# Test basic chat functionality python samples/01/chat_quickstart.py "Hello" # Test with specific model set MODEL=phi-4-mini python samples/02/openai_sdk_client.py
Electron示例具有测试基础设施:
cd Module08/samples/08 npm test # Run unit tests npm run test:e2e # Run end-to-end tests npm run lint # Check code style
仓库使用自动化翻译工作流。翻译无需手动测试。
内容更改的手动验证:
.md文件检查Markdown渲染模块08/示例/08(Electron应用)具有全面测试:
cd Module08/samples/08 # Run all tests npm test # Run unit tests only npm test -- --testPathPattern=unit # Run integration tests npm run test:integration # Run E2E tests npm run test:e2e # Check test coverage npm test -- --coverage
Python示例需手动测试:
# Module08 samples python samples/01/chat_quickstart.py "Test prompt" python samples/04/chainlit_rag.py python samples/09/multi_agent_system.py # Workshop samples cd Workshop/samples/session01 python chat_bootstrap.py "Test prompt" # Use Workshop validation tools cd Workshop/scripts python validate_samples.py # Validate syntax and imports python test_samples.py # Run smoke tests
python, bash, ```javascript# Electron sample follows ESLint configuration cd Module08/samples/08 npm run lint # Check for style issues npm run lint:fix # Auto-fix style issues npm run format # Format with Prettier
关键约定:
main创建新分支feature/<module>-<description> - 用于新功能或内容fix/<module>-<description> - 用于错误修复docs/<description> - 用于文档改进refactor/<description> - 用于代码重构遵循规范化提交:
<type>(<scope>): <description> [optional body] [optional footer]
示例:
feat(Module08): add intent-based routing notebook docs(AGENTS): update Foundry Local setup instructions fix(samples/08): resolve Electron build issue
[ModuleXX] Brief description of change
或
[Module08/samples/XX] Description for sample changes
所有贡献者必须遵守Microsoft开源行为准则。请在贡献之前查看CODE_OF_CONDUCT.md。
对于内容更改:
对于示例代码更改(模块08/示例/08):
npm run lint npm test
对于Python示例更改:
重要: 本仓库使用GitHub Actions进行自动翻译。
/translations/目录(支持50多种语言)co-op-translator.yml工作流自动化处理main分支时会自动生成翻译大多数模块08示例需要运行Microsoft Foundry Local。
安装Foundry Local:
# Windows winget install Microsoft.FoundryLocal # macOS brew tap microsoft/foundrylocal brew install foundrylocal
安装Python SDK:
pip install foundry-local-sdk openai
# Start service and run a model (auto-downloads if needed) foundry model run phi-3.5-mini # Or use model aliases for automatic hardware optimization foundry model run phi-4-mini foundry model run qwen2.5-0.5b foundry model run qwen2.5-coder-0.5b # Check service status foundry service status # List available models foundry model ls
from foundry_local import FoundryLocalManager import openai # Use model alias for automatic hardware optimization alias = "phi-4-mini" # Create manager (auto-starts service and loads model) manager = FoundryLocalManager(alias) # Configure OpenAI client for local Foundry service client = openai.OpenAI( base_url=manager.endpoint, api_key=manager.api_key ) # Use the model response = client.chat.completions.create( model=manager.get_model_info(alias).id, messages=[{"role": "user", "content": "Hello!"}] )
# Service status and endpoint foundry service status # List loaded models (REST API) curl http://localhost:<port>/v1/models # Note: Port is displayed when running 'foundry service status'
大多数示例使用以下环境变量:
# Foundry Local configuration # Note: The SDK (FoundryLocalManager) automatically detects endpoint set MODEL=phi-4-mini # or phi-3.5-mini, qwen2.5-0.5b, qwen2.5-coder-0.5b set API_KEY= # Not required for local usage # Manual endpoint (if not using SDK) # Port is shown via 'foundry service status' set BASE_URL=http://localhost:<port> # For Azure OpenAI fallback (optional) set AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com set AZURE_OPENAI_API_KEY=your-api-key set AZURE_OPENAI_API_VERSION=2024-08-01-preview
注意:使用FoundryLocalManager时,SDK会自动处理服务发现和模型加载。模型别名(如phi-3.5-mini)确保为您的硬件选择最佳版本。
本仓库主要是文档内容 - 无需构建过程。
Electron应用(模块08/示例/08):
cd Module08/samples/08 # Development build npm run dev # Production build npm run build # Create Windows installer npm run dist # Create portable executable npm run pack
Python示例:
无需构建过程 - 示例直接使用Python解释器运行。
提示:查看GitHub问题以获取已知问题和解决方案。
问题: 示例因连接错误而失败
解决方案:
# Check if service is running foundry service status # Start service with a model foundry model run phi-4-mini # Or explicitly start service foundry service start # List loaded models foundry model ls # Verify via REST API (port shown in 'foundry service status') curl http://localhost:<port>/v1/models
问题: 模块导入错误
解决方案:
# Ensure virtual environment is activated # Windows .venv\Scripts\activate # macOS/Linux source .venv/bin/activate # Reinstall dependencies pip install -r requirements.txt
问题: npm安装或构建失败
解决方案:
cd Module08/samples/08 # Clean install npm run clean rm -rf node_modules package-lock.json npm install
问题: 翻译PR与您的更改冲突
解决方案:
main合并到您的分支问题: Foundry Local无法下载模型
解决方案:
# Check internet connectivity # Clear model cache and retry foundry model remove <model-alias> foundry model run <model-alias> # Check available disk space (models can be 2-16GB) # Verify firewall settings allow downloads
仓库包含10个综合示例应用:
工作坊包括6个循序渐进的实践课程:
每个示例展示了使用 Foundry Local 进行边缘 AI 开发的不同方面。
这是一个专注于教授边缘 AI 开发的教育性仓库。主要的贡献模式是改进教育内容以及添加/增强示例应用,以展示边缘 AI 概念。
免责声明:
本文档使用AI翻译服务Co-op Translator进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。原始语言的文档应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。