Files
Ubuntu 32b43f85bd a
2026-07-03 16:58:28 +08:00

165 lines
5.2 KiB
Python

#!/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()