#!/usr/bin/env python3 """ Context Hub技能使用示例 展示如何在nanobot中使用chub技能 """ import sys import os # 添加技能目录到路径 sys.path.append(os.path.dirname(os.path.abspath(__file__))) from chub_wrapper import ChubWrapper def example_usage(): """使用示例""" print("=== Context Hub技能使用示例 ===\n") # 初始化包装器 wrapper = ChubWrapper() # 示例1:搜索OpenAI相关文档 print("1. 搜索OpenAI相关文档:") results = wrapper.search("openai") print(f" 找到 {len(results)} 个结果") for i, result in enumerate(results[:3], 1): print(f" {i}. {result.get('id')} - {result.get('name')}") print() # 示例2:获取FastAPI文档 print("2. 获取FastAPI文档:") try: content = wrapper.get_doc("fastapi/package", language="py") print(f" 获取成功,内容长度: {len(content)} 字符") print(f" 内容预览: {content[:200]}...") except Exception as e: print(f" 获取失败: {e}") print() # 示例3:搜索并获取 print("3. 搜索并获取Stripe文档:") result = wrapper.search_and_get("stripe", language="py") if 'error' in result: print(f" 错误: {result['error']}") else: print(f" 文档ID: {result.get('doc_id')}") if 'content' in result: print(f" 内容预览: {result['content'][:200]}...") print() # 示例4:添加注解 print("4. 添加注解:") try: # 先检查是否已有注解 annotations = wrapper.list_annotations() print(f" 当前注解: {annotations}") # 添加新注解 note = "测试注解:这是一个测试注解,用于验证chub注解功能" result = wrapper.annotate("fastapi/package", note) print(f" 添加注解结果: {result}") except Exception as e: print(f" 注解操作失败: {e}") print() # 示例5:模拟nanobot中的使用场景 print("5. 模拟nanobot使用场景:") print(" 场景:用户需要编写使用OpenAI API的代码") # 搜索OpenAI聊天API文档 print(" → 搜索OpenAI聊天API文档...") openai_results = wrapper.search("openai chat") if openai_results: # 获取第一个结果 first_result = openai_results[0] doc_id = first_result.get('id', 'openai/chat') print(f" → 找到文档: {doc_id}") print(f" → 描述: {first_result.get('description', '')[:100]}...") # 获取Python版本文档 print(" → 获取Python版本文档...") try: content = wrapper.get_doc(doc_id, language="py") print(f" → 获取成功!文档包含关键信息:") # 提取关键信息(简化示例) lines = content.split('\n') key_info = [] for line in lines[:20]: # 只看前20行 if any(keyword in line.lower() for keyword in ['install', 'import', 'api', 'key', 'client']): key_info.append(line.strip()) if key_info: for info in key_info[:5]: # 显示前5个关键信息 print(f" • {info}") else: print(f" • 文档内容: {content[:300]}...") except Exception as e: print(f" → 获取失败: {e}") else: print(" → 未找到相关文档") print("\n=== 示例完成 ===") def nanobot_integration_guide(): """nanobot集成指南""" print("\n=== nanobot集成指南 ===\n") print("1. 在nanobot技能中导入包装器:") print(""" from skills.context_hub.chub_wrapper import ChubWrapper # 初始化 wrapper = ChubWrapper() """) print("\n2. 检测用户需求:") print(""" # 当用户需要API文档时触发 trigger_keywords = ['api', 'sdk', '文档', 'library', 'package', 'install'] def should_use_chub(user_query): return any(keyword in user_query.lower() for keyword in trigger_keywords) """) print("\n3. 使用chub获取文档:") print(""" def get_api_docs(user_query): # 搜索相关文档 results = wrapper.search(user_query) if not results: return "未找到相关API文档" # 获取第一个结果的文档 first_result = results[0] doc_id = first_result.get('id') try: # 获取文档内容 content = wrapper.get_doc(doc_id, language="py") # 提取关键信息 key_points = extract_key_points(content) return f"找到{first_result.get('name')}的文档:\\n{key_points}" except Exception as e: return f"获取文档失败: {e}" """) print("\n4. 添加到nanobot技能系统:") print(""" # 在nanobot的skill-creator中注册此技能 # 技能名称: context-hub # 功能: 获取API文档 # 触发条件: 用户需要API/SDK文档时 """) if __name__ == '__main__': example_usage() nanobot_integration_guide()