- id: get_user_interests
name: get_user_interests
tool: INPUT_TEXT
input:
- name: description
value: "興味のあるトピックやコンテンツを説明してください"
- id: find_related_content
name: find_related_content
tool: JINBA_VECTOR_SEARCH
config:
- name: token
value: "{{secrets.JINBA_API_TOKEN}}"
input:
- name: query
value: "{{steps.get_user_interests.result}}"
- name: knowledgeBaseId
value: "{{secrets.CONTENT_KB_ID}}"
- name: topK
value: 8
- name: threshold
value: 0.25
- id: format_recommendations
name: format_recommendations
tool: PYTHON_SANDBOX_RUN
input:
- name: code
value: |
results = {{steps.find_related_content.results}}
print("🔍 **コンテンツ推薦**")
print(f"基準: *{results['query']}*\n")
recommendations = []
for i, result in enumerate(results['results'][:5], 1):
chunk = result['chunk']
file_info = result['file']
score = result['score']
# 最初の文または100文字を抽出
content_preview = chunk['content'][:100].split('.')[0] + "..."
recommendations.append({
'rank': i,
'title': file_info['filename'],
'preview': content_preview,
'relevance': f"{score:.1%}",
'content_type': file_info['contentType']
})
for rec in recommendations:
print(f"**{rec['rank']}. {rec['title']}**")
print(f" 📋 {rec['preview']}")
print(f" 🎯 関連度: {rec['relevance']}")
print(f" 📄 タイプ: {rec['content_type']}")
print()
if len(results['results']) == 0:
print("関連するコンテンツが見つかりませんでした。検索語を調整するか、閾値を下げてみてください。")