WittyHub API接口详解:如何集成AI技能平台到您的应用 WittyHub API接口详解如何集成AI技能平台到您的应用【免费下载链接】wittyhubSkills Agents Hub — searchable, high‑availability, intelligent, and community‑driven.项目地址: https://gitcode.com/openeuler/wittyhub前往项目官网免费下载https://ar.openeuler.org/ar/WittyHub是一个开源的AI技能与智能体发现平台提供了丰富的RESTful API接口让开发者能够轻松地将AI技能搜索、管理和集成功能嵌入到自己的应用中。本文将详细介绍WittyHub的核心API接口并提供实用的集成指南。为什么选择WittyHub APIWittyHub作为AI技能平台提供了以下核心优势 智能搜索支持关键词搜索、语义搜索和混合搜索模式 安全评估自动进行代码安全扫描和风险评估 版本管理完善的技能版本控制和历史追踪⚡ 高性能基于FastAPI构建支持异步处理和高并发 易于集成简洁的RESTful API设计支持多种编程语言API基础配置在开始集成之前您需要了解WittyHub API的基础配置。API服务默认运行在http://localhost:8081端口所有API端点都位于/api/v1/路径下。主要的配置文件位于config.yaml包含了数据库、存储、安全和AI相关的配置项。核心API接口详解1. 技能搜索APIWittyHub提供了强大的搜索功能支持三种搜索模式# 文本搜索 GET /api/v1/index/search?qpythonlimit10categorydevelopment # 语义搜索 GET /api/v1/index/search?q数据处理modesemantic # 混合搜索 GET /api/v1/index/search?q机器学习modehybrid搜索参数说明q搜索关键词必需skip跳过记录数分页limit返回记录数1-100category按分类筛选platform按平台筛选tags按标签筛选逗号分隔mode搜索模式text/semantic/hybrid2. 技能管理API技能管理相关的API位于/api/v1/skills/路径下获取技能列表GET /api/v1/skills/?skip0limit20categorydevelopment获取技能详情GET /api/v1/skills/{skill_id}创建新技能POST /api/v1/skills/ Content-Type: application/json { skill_id: my-python-skill, name: Python数据处理工具, description: 高效的数据处理和分析工具, version: 1.0.0, author: your-name, source: github, source_url: https://github.com/your/repo, category: development, tags: [python, data, analysis], content: 技能详细内容... }获取技能版本历史GET /api/v1/skills/versions/{skill_id}下载技能GET /api/v1/skills/{skill_id}/download3. 智能体管理API智能体管理API位于/api/v1/agents/路径下# 获取智能体列表 GET /api/v1/agents/?skip0limit20categoryassistant # 获取智能体详情 GET /api/v1/agents/{agent_id}4. 系统管理API获取系统统计信息GET /api/v1/index/stats获取分类列表GET /api/v1/index/categories重新索引技能管理员功能POST /api/v1/index/reindex POST /api/v1/index/reindex/{skill_id}安全检测APIWittyHub内置了强大的安全检测功能您可以通过以下API获取技能的安全评估报告GET /api/v1/skills/{skill_id}/audit安全检测API会返回 安全评分0-100⚠️ 风险等级low/medium/high 风险信号列表 详细的安全评估报告实战集成示例Python集成示例import requests import json class WittyHubClient: def __init__(self, base_urlhttp://localhost:8081): self.base_url base_url self.session requests.Session() def search_skills(self, query, limit20, modehybrid): 搜索技能 url f{self.base_url}/api/v1/index/search params { q: query, limit: limit, mode: mode } response self.session.get(url, paramsparams) return response.json() def get_skill_details(self, skill_id): 获取技能详情 url f{self.base_url}/api/v1/skills/{skill_id} response self.session.get(url) return response.json() def download_skill(self, skill_id): 下载技能 url f{self.base_url}/api/v1/skills/{skill_id}/download response self.session.get(url) return response.json() def get_security_audit(self, skill_id): 获取安全评估报告 url f{self.base_url}/api/v1/skills/{skill_id}/audit response self.session.get(url) return response.json() # 使用示例 client WittyHubClient() # 搜索Python相关的技能 results client.search_skills(python数据处理, limit10) print(f找到 {len(results.get(skills, []))} 个技能) # 获取技能详情和安全评估 for skill in results.get(skills, []): skill_id skill[skill_id] details client.get_skill_details(skill_id) audit client.get_security_audit(skill_id) print(f技能: {details[name]}) print(f安全评分: {audit.get(security_score, N/A)}) print(f风险等级: {audit.get(risk_level, N/A)})JavaScript/TypeScript集成示例// 前端API客户端位于 [web/src/api/client.ts](https://link.gitcode.com/i/2f4fd7e62815aee8bd4a8ba661a09bdd) interface Skill { id: string; skill_id: string; name: string; description: string; version: string; security_score: number; download_count: number; } class WittyHubAPI { private baseUrl: string; constructor(baseUrl: string http://localhost:8081) { this.baseUrl baseUrl; } async searchSkills(query: string, options?: { limit?: number; category?: string; mode?: text | semantic | hybrid; }): Promise{ skills: Skill[]; total: number } { const params new URLSearchParams({ q: query, limit: options?.limit?.toString() || 20, mode: options?.mode || hybrid }); if (options?.category) { params.append(category, options.category); } const response await fetch( ${this.baseUrl}/api/v1/index/search?${params} ); return await response.json(); } async getSkill(skillId: string): PromiseSkill { const response await fetch( ${this.baseUrl}/api/v1/skills/${skillId} ); return await response.json(); } async getCategories(): Promisestring[] { const response await fetch( ${this.baseUrl}/api/v1/index/categories ); const data await response.json(); return data.categories || []; } } // 使用示例 const api new WittyHubAPI(); // 搜索技能 const results await api.searchSkills(机器学习, { limit: 10, category: ai, mode: semantic }); // 获取分类 const categories await api.getCategories(); console.log(可用分类:, categories);高级功能集成1. 语义搜索集成WittyHub支持基于向量的语义搜索您可以利用src/ai/embedding.py中的功能来实现更智能的搜索from src.ai.embedding import generate_embeddings, prepare_skill_text # 为文本生成向量 texts [这是一个Python数据处理技能] embeddings await generate_embeddings(texts) # 使用语义搜索 search_results await search_skills_with_embedding( query_embeddingembeddings[0], modesemantic )2. 安全扫描集成您可以将WittyHub的安全扫描功能集成到您的CI/CD流程中from src.api.services.security import SecurityService async def check_skill_security(skill_data): 检查技能安全性 security_service SecurityService(db) audit_result await security_service.audit_skill( skill_idskill_data.skill_id, sourceskill_data.source, source_urlskill_data.source_url, skill_dictskill_data.model_dump() ) if audit_result.get(risk_level) high: raise SecurityError(高风险技能不允许发布) return audit_result3. 批量操作WittyHub支持批量技能操作适合大规模集成场景async def batch_import_skills(skills_data): 批量导入技能 imported [] failed [] for skill_data in skills_data: try: response await create_skill(skill_data) imported.append(response[skill_id]) except Exception as e: failed.append({ skill_id: skill_data.skill_id, error: str(e) }) return { imported: imported, failed: failed, total: len(skills_data) }最佳实践建议1. 错误处理try: response await client.search_skills(python) if response.status_code 200: data response.json() else: # 处理HTTP错误 logger.error(fAPI错误: {response.status_code}) except requests.exceptions.RequestException as e: # 处理网络错误 logger.error(f网络错误: {e})2. 缓存策略from functools import lru_cache import time class CachedWittyHubClient(WittyHubClient): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.cache {} self.cache_ttl 300 # 5分钟缓存 lru_cache(maxsize100) def get_skill_details(self, skill_id): 带缓存的技能详情获取 cache_key fskill_{skill_id} if cache_key in self.cache: cached_time, data self.cache[cache_key] if time.time() - cached_time self.cache_ttl: return data data super().get_skill_details(skill_id) self.cache[cache_key] (time.time(), data) return data3. 性能优化使用连接池减少连接开销实现请求重试机制批量获取减少API调用次数使用异步客户端提高并发性能部署和配置Docker部署WittyHub提供了完整的Docker部署方案配置文件位于deploy/docker/docker-compose.yaml# 快速启动所有服务 docker-compose -f deploy/docker/docker-compose.yaml up -d自定义配置您可以根据需要修改config.yaml文件database: host: your-db-host port: 5432 user: your-username password: your-password ai: embedding_model: bge-base-zh-v1.5 # 支持多种模型 enable_semantic_search: true # 启用语义搜索总结WittyHub API为开发者提供了完整、易用的AI技能平台集成方案。通过本文介绍的API接口和集成示例您可以快速将WittyHub的功能集成到自己的应用中实现 智能技能搜索- 支持文本、语义和混合搜索️ 安全评估- 自动安全扫描和风险评估 技能管理- 完整的CRUD操作和版本控制⚡ 高性能访问- 异步API设计支持高并发 灵活集成- 支持多种编程语言和框架无论您是构建AI开发工具、技能市场还是企业内部的AI技能管理平台WittyHub API都能为您提供强大的技术支撑。开始集成WittyHub让您的应用拥有专业的AI技能发现和管理能力提示在实际使用中建议参考src/api/routes/目录下的完整API实现以及web/src/api/client.ts中的前端集成示例以获得最佳的开发体验。【免费下载链接】wittyhubSkills Agents Hub — searchable, high‑availability, intelligent, and community‑driven.项目地址: https://gitcode.com/openeuler/wittyhub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考