165 lines
5.2 KiB
Python
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() |