agent-recipes 0.0.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agent_recipes/__init__.py +27 -0
- agent_recipes/recipe_runtime/__init__.py +28 -0
- agent_recipes/recipe_runtime/core.py +385 -0
- agent_recipes/templates/ai-ab-hook-tester/recipe.yaml +45 -0
- agent_recipes/templates/ai-ab-hook-tester/tools.py +169 -0
- agent_recipes/templates/ai-angle-generator/recipe.yaml +49 -0
- agent_recipes/templates/ai-angle-generator/tools.py +182 -0
- agent_recipes/templates/ai-api-doc-generator/README.md +59 -0
- agent_recipes/templates/ai-api-doc-generator/TEMPLATE.yaml +29 -0
- agent_recipes/templates/ai-api-tester/README.md +60 -0
- agent_recipes/templates/ai-api-tester/TEMPLATE.yaml +29 -0
- agent_recipes/templates/ai-audio-enhancer/README.md +59 -0
- agent_recipes/templates/ai-audio-enhancer/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-audio-normalizer/README.md +13 -0
- agent_recipes/templates/ai-audio-normalizer/TEMPLATE.yaml +44 -0
- agent_recipes/templates/ai-audio-splitter/README.md +14 -0
- agent_recipes/templates/ai-audio-splitter/TEMPLATE.yaml +47 -0
- agent_recipes/templates/ai-background-music-generator/README.md +59 -0
- agent_recipes/templates/ai-background-music-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-background-remover/README.md +60 -0
- agent_recipes/templates/ai-background-remover/TEMPLATE.yaml +27 -0
- agent_recipes/templates/ai-barcode-scanner/README.md +60 -0
- agent_recipes/templates/ai-barcode-scanner/TEMPLATE.yaml +26 -0
- agent_recipes/templates/ai-blog-generator/README.md +59 -0
- agent_recipes/templates/ai-blog-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-brief-generator/recipe.yaml +52 -0
- agent_recipes/templates/ai-brief-generator/tools.py +231 -0
- agent_recipes/templates/ai-broll-builder/recipe.yaml +47 -0
- agent_recipes/templates/ai-broll-builder/tools.py +204 -0
- agent_recipes/templates/ai-calendar-scheduler/README.md +60 -0
- agent_recipes/templates/ai-calendar-scheduler/TEMPLATE.yaml +29 -0
- agent_recipes/templates/ai-changelog-generator/README.md +14 -0
- agent_recipes/templates/ai-changelog-generator/TEMPLATE.yaml +46 -0
- agent_recipes/templates/ai-chart-generator/README.md +61 -0
- agent_recipes/templates/ai-chart-generator/TEMPLATE.yaml +32 -0
- agent_recipes/templates/ai-code-documenter/README.md +12 -0
- agent_recipes/templates/ai-code-documenter/TEMPLATE.yaml +37 -0
- agent_recipes/templates/ai-code-refactorer/README.md +59 -0
- agent_recipes/templates/ai-code-refactorer/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-code-reviewer/README.md +59 -0
- agent_recipes/templates/ai-code-reviewer/TEMPLATE.yaml +31 -0
- agent_recipes/templates/ai-color-palette-extractor/README.md +60 -0
- agent_recipes/templates/ai-color-palette-extractor/TEMPLATE.yaml +27 -0
- agent_recipes/templates/ai-comment-miner/recipe.yaml +40 -0
- agent_recipes/templates/ai-comment-miner/tools.py +141 -0
- agent_recipes/templates/ai-commit-message-generator/README.md +59 -0
- agent_recipes/templates/ai-commit-message-generator/TEMPLATE.yaml +31 -0
- agent_recipes/templates/ai-content-calendar/recipe.yaml +43 -0
- agent_recipes/templates/ai-content-calendar/tools.py +170 -0
- agent_recipes/templates/ai-context-enricher/recipe.yaml +48 -0
- agent_recipes/templates/ai-context-enricher/tools.py +258 -0
- agent_recipes/templates/ai-contract-analyzer/README.md +60 -0
- agent_recipes/templates/ai-contract-analyzer/TEMPLATE.yaml +34 -0
- agent_recipes/templates/ai-csv-cleaner/README.md +13 -0
- agent_recipes/templates/ai-csv-cleaner/TEMPLATE.yaml +45 -0
- agent_recipes/templates/ai-cta-generator/recipe.yaml +54 -0
- agent_recipes/templates/ai-cta-generator/tools.py +174 -0
- agent_recipes/templates/ai-daily-news-show/recipe.yaml +103 -0
- agent_recipes/templates/ai-daily-news-show/tools.py +308 -0
- agent_recipes/templates/ai-data-anonymizer/README.md +60 -0
- agent_recipes/templates/ai-data-anonymizer/TEMPLATE.yaml +31 -0
- agent_recipes/templates/ai-data-profiler/README.md +14 -0
- agent_recipes/templates/ai-data-profiler/TEMPLATE.yaml +42 -0
- agent_recipes/templates/ai-dependency-auditor/README.md +12 -0
- agent_recipes/templates/ai-dependency-auditor/TEMPLATE.yaml +37 -0
- agent_recipes/templates/ai-doc-translator/README.md +12 -0
- agent_recipes/templates/ai-doc-translator/TEMPLATE.yaml +41 -0
- agent_recipes/templates/ai-duplicate-finder/README.md +59 -0
- agent_recipes/templates/ai-duplicate-finder/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-ebook-converter/README.md +60 -0
- agent_recipes/templates/ai-ebook-converter/TEMPLATE.yaml +27 -0
- agent_recipes/templates/ai-email-parser/README.md +59 -0
- agent_recipes/templates/ai-email-parser/TEMPLATE.yaml +29 -0
- agent_recipes/templates/ai-etl-pipeline/README.md +60 -0
- agent_recipes/templates/ai-etl-pipeline/TEMPLATE.yaml +30 -0
- agent_recipes/templates/ai-excel-formula-generator/README.md +59 -0
- agent_recipes/templates/ai-excel-formula-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-face-blur/README.md +60 -0
- agent_recipes/templates/ai-face-blur/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-fact-checker/recipe.yaml +52 -0
- agent_recipes/templates/ai-fact-checker/tools.py +279 -0
- agent_recipes/templates/ai-faq-generator/README.md +59 -0
- agent_recipes/templates/ai-faq-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-file-organizer/README.md +59 -0
- agent_recipes/templates/ai-file-organizer/TEMPLATE.yaml +29 -0
- agent_recipes/templates/ai-folder-packager/README.md +15 -0
- agent_recipes/templates/ai-folder-packager/TEMPLATE.yaml +48 -0
- agent_recipes/templates/ai-form-filler/README.md +60 -0
- agent_recipes/templates/ai-form-filler/TEMPLATE.yaml +30 -0
- agent_recipes/templates/ai-hashtag-optimizer/recipe.yaml +45 -0
- agent_recipes/templates/ai-hashtag-optimizer/tools.py +134 -0
- agent_recipes/templates/ai-hook-generator/recipe.yaml +50 -0
- agent_recipes/templates/ai-hook-generator/tools.py +177 -0
- agent_recipes/templates/ai-image-captioner/README.md +59 -0
- agent_recipes/templates/ai-image-captioner/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-image-cataloger/README.md +13 -0
- agent_recipes/templates/ai-image-cataloger/TEMPLATE.yaml +39 -0
- agent_recipes/templates/ai-image-optimizer/README.md +13 -0
- agent_recipes/templates/ai-image-optimizer/TEMPLATE.yaml +43 -0
- agent_recipes/templates/ai-image-resizer/README.md +12 -0
- agent_recipes/templates/ai-image-resizer/TEMPLATE.yaml +39 -0
- agent_recipes/templates/ai-image-tagger/README.md +59 -0
- agent_recipes/templates/ai-image-tagger/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-image-upscaler/README.md +60 -0
- agent_recipes/templates/ai-image-upscaler/TEMPLATE.yaml +27 -0
- agent_recipes/templates/ai-invoice-processor/README.md +60 -0
- agent_recipes/templates/ai-invoice-processor/TEMPLATE.yaml +34 -0
- agent_recipes/templates/ai-json-to-csv/README.md +12 -0
- agent_recipes/templates/ai-json-to-csv/TEMPLATE.yaml +36 -0
- agent_recipes/templates/ai-log-analyzer/README.md +59 -0
- agent_recipes/templates/ai-log-analyzer/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-markdown-to-pdf/README.md +12 -0
- agent_recipes/templates/ai-markdown-to-pdf/TEMPLATE.yaml +40 -0
- agent_recipes/templates/ai-meeting-summarizer/README.md +59 -0
- agent_recipes/templates/ai-meeting-summarizer/TEMPLATE.yaml +32 -0
- agent_recipes/templates/ai-meta-tag-generator/README.md +59 -0
- agent_recipes/templates/ai-meta-tag-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-news-capture-pack/recipe.yaml +42 -0
- agent_recipes/templates/ai-news-capture-pack/tools.py +150 -0
- agent_recipes/templates/ai-news-crawler/recipe.yaml +99 -0
- agent_recipes/templates/ai-news-crawler/tools.py +417 -0
- agent_recipes/templates/ai-news-deduper/recipe.yaml +47 -0
- agent_recipes/templates/ai-news-deduper/tools.py +235 -0
- agent_recipes/templates/ai-newsletter-generator/README.md +59 -0
- agent_recipes/templates/ai-newsletter-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-note-summarizer/README.md +59 -0
- agent_recipes/templates/ai-note-summarizer/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-pdf-summarizer/README.md +12 -0
- agent_recipes/templates/ai-pdf-summarizer/TEMPLATE.yaml +40 -0
- agent_recipes/templates/ai-pdf-to-markdown/README.md +19 -0
- agent_recipes/templates/ai-pdf-to-markdown/TEMPLATE.yaml +63 -0
- agent_recipes/templates/ai-performance-analyzer/recipe.yaml +45 -0
- agent_recipes/templates/ai-performance-analyzer/tools.py +159 -0
- agent_recipes/templates/ai-podcast-cleaner/README.md +117 -0
- agent_recipes/templates/ai-podcast-cleaner/TEMPLATE.yaml +117 -0
- agent_recipes/templates/ai-podcast-cleaner/agents.yaml +59 -0
- agent_recipes/templates/ai-podcast-cleaner/workflow.yaml +77 -0
- agent_recipes/templates/ai-podcast-transcriber/README.md +59 -0
- agent_recipes/templates/ai-podcast-transcriber/TEMPLATE.yaml +32 -0
- agent_recipes/templates/ai-post-copy-generator/recipe.yaml +41 -0
- agent_recipes/templates/ai-post-copy-generator/tools.py +105 -0
- agent_recipes/templates/ai-product-description-generator/README.md +59 -0
- agent_recipes/templates/ai-product-description-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-publisher-pack/recipe.yaml +44 -0
- agent_recipes/templates/ai-publisher-pack/tools.py +252 -0
- agent_recipes/templates/ai-qr-code-generator/README.md +60 -0
- agent_recipes/templates/ai-qr-code-generator/TEMPLATE.yaml +26 -0
- agent_recipes/templates/ai-regex-generator/README.md +59 -0
- agent_recipes/templates/ai-regex-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-repo-readme/README.md +13 -0
- agent_recipes/templates/ai-repo-readme/TEMPLATE.yaml +42 -0
- agent_recipes/templates/ai-report-generator/README.md +61 -0
- agent_recipes/templates/ai-report-generator/TEMPLATE.yaml +32 -0
- agent_recipes/templates/ai-resume-parser/README.md +60 -0
- agent_recipes/templates/ai-resume-parser/TEMPLATE.yaml +33 -0
- agent_recipes/templates/ai-rss-aggregator/README.md +60 -0
- agent_recipes/templates/ai-rss-aggregator/TEMPLATE.yaml +30 -0
- agent_recipes/templates/ai-schema-generator/README.md +12 -0
- agent_recipes/templates/ai-schema-generator/TEMPLATE.yaml +34 -0
- agent_recipes/templates/ai-screen-recorder/recipe.yaml +43 -0
- agent_recipes/templates/ai-screen-recorder/tools.py +184 -0
- agent_recipes/templates/ai-screenshot-capture/recipe.yaml +45 -0
- agent_recipes/templates/ai-screenshot-capture/tools.py +231 -0
- agent_recipes/templates/ai-screenshot-ocr/README.md +12 -0
- agent_recipes/templates/ai-screenshot-ocr/TEMPLATE.yaml +37 -0
- agent_recipes/templates/ai-script-writer/recipe.yaml +58 -0
- agent_recipes/templates/ai-script-writer/tools.py +297 -0
- agent_recipes/templates/ai-sentiment-analyzer/README.md +59 -0
- agent_recipes/templates/ai-sentiment-analyzer/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-seo-optimizer/README.md +59 -0
- agent_recipes/templates/ai-seo-optimizer/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-signal-ranker/recipe.yaml +54 -0
- agent_recipes/templates/ai-signal-ranker/tools.py +256 -0
- agent_recipes/templates/ai-sitemap-generator/README.md +59 -0
- agent_recipes/templates/ai-sitemap-generator/TEMPLATE.yaml +26 -0
- agent_recipes/templates/ai-sitemap-scraper/README.md +13 -0
- agent_recipes/templates/ai-sitemap-scraper/TEMPLATE.yaml +41 -0
- agent_recipes/templates/ai-slide-generator/README.md +60 -0
- agent_recipes/templates/ai-slide-generator/TEMPLATE.yaml +29 -0
- agent_recipes/templates/ai-slide-to-notes/README.md +12 -0
- agent_recipes/templates/ai-slide-to-notes/TEMPLATE.yaml +37 -0
- agent_recipes/templates/ai-social-media-generator/README.md +59 -0
- agent_recipes/templates/ai-social-media-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-sql-generator/README.md +59 -0
- agent_recipes/templates/ai-sql-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-subtitle-generator/README.md +59 -0
- agent_recipes/templates/ai-subtitle-generator/TEMPLATE.yaml +31 -0
- agent_recipes/templates/ai-test-generator/README.md +59 -0
- agent_recipes/templates/ai-test-generator/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-translation-batch/README.md +59 -0
- agent_recipes/templates/ai-translation-batch/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-url-to-markdown/README.md +14 -0
- agent_recipes/templates/ai-url-to-markdown/TEMPLATE.yaml +44 -0
- agent_recipes/templates/ai-video-chapter-generator/README.md +59 -0
- agent_recipes/templates/ai-video-chapter-generator/TEMPLATE.yaml +32 -0
- agent_recipes/templates/ai-video-compressor/README.md +59 -0
- agent_recipes/templates/ai-video-compressor/TEMPLATE.yaml +28 -0
- agent_recipes/templates/ai-video-editor/README.md +254 -0
- agent_recipes/templates/ai-video-editor/TEMPLATE.yaml +139 -0
- agent_recipes/templates/ai-video-editor/agents.yaml +36 -0
- agent_recipes/templates/ai-video-editor/requirements.txt +8 -0
- agent_recipes/templates/ai-video-editor/scripts/run.sh +10 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__init__.py +45 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__main__.py +8 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/__init__.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/cli.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/config.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/ffmpeg_probe.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/heuristics.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/llm_plan.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/models.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/pipeline.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/render.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/timeline.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/transcribe.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/__pycache__/utils.cpython-312.pyc +0 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/cli.py +343 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/config.py +102 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/ffmpeg_probe.py +92 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/heuristics.py +119 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/llm_plan.py +277 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/models.py +343 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/pipeline.py +287 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/render.py +274 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/timeline.py +278 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/transcribe.py +233 -0
- agent_recipes/templates/ai-video-editor/src/ai_video_editor/utils.py +222 -0
- agent_recipes/templates/ai-video-editor/src/input.mov +0 -0
- agent_recipes/templates/ai-video-editor/src/out.mp4 +0 -0
- agent_recipes/templates/ai-video-editor/tests/test_heuristics.py +130 -0
- agent_recipes/templates/ai-video-editor/tests/test_models.py +152 -0
- agent_recipes/templates/ai-video-editor/tests/test_timeline.py +105 -0
- agent_recipes/templates/ai-video-editor/workflow.yaml +51 -0
- agent_recipes/templates/ai-video-highlight-extractor/README.md +60 -0
- agent_recipes/templates/ai-video-highlight-extractor/TEMPLATE.yaml +33 -0
- agent_recipes/templates/ai-video-merger/recipe.yaml +40 -0
- agent_recipes/templates/ai-video-merger/tools.py +172 -0
- agent_recipes/templates/ai-video-thumbnails/README.md +16 -0
- agent_recipes/templates/ai-video-thumbnails/TEMPLATE.yaml +53 -0
- agent_recipes/templates/ai-video-to-gif/README.md +14 -0
- agent_recipes/templates/ai-video-to-gif/TEMPLATE.yaml +64 -0
- agent_recipes/templates/ai-voice-cloner/README.md +59 -0
- agent_recipes/templates/ai-voice-cloner/TEMPLATE.yaml +31 -0
- agent_recipes/templates/ai-voiceover-generator/recipe.yaml +41 -0
- agent_recipes/templates/ai-voiceover-generator/tools.py +194 -0
- agent_recipes/templates/ai-watermark-adder/README.md +59 -0
- agent_recipes/templates/ai-watermark-adder/TEMPLATE.yaml +26 -0
- agent_recipes/templates/ai-watermark-remover/README.md +60 -0
- agent_recipes/templates/ai-watermark-remover/TEMPLATE.yaml +32 -0
- agent_recipes/templates/data-transformer/README.md +75 -0
- agent_recipes/templates/data-transformer/TEMPLATE.yaml +63 -0
- agent_recipes/templates/data-transformer/agents.yaml +70 -0
- agent_recipes/templates/data-transformer/workflow.yaml +92 -0
- agent_recipes/templates/shorts-generator/README.md +61 -0
- agent_recipes/templates/shorts-generator/TEMPLATE.yaml +65 -0
- agent_recipes/templates/shorts-generator/agents.yaml +66 -0
- agent_recipes/templates/shorts-generator/workflow.yaml +86 -0
- agent_recipes/templates/transcript-generator/README.md +103 -0
- agent_recipes/templates/transcript-generator/TEMPLATE.yaml +57 -0
- agent_recipes/templates/transcript-generator/agents.yaml +62 -0
- agent_recipes/templates/transcript-generator/workflow.yaml +82 -0
- agent_recipes/templates/video-editor/README.md +70 -0
- agent_recipes/templates/video-editor/TEMPLATE.yaml +55 -0
- agent_recipes/templates/video-editor/agents.yaml +68 -0
- agent_recipes/templates/video-editor/workflow.yaml +92 -0
- agent_recipes-0.0.5.dist-info/METADATA +145 -0
- agent_recipes-0.0.5.dist-info/RECORD +269 -0
- agent_recipes-0.0.5.dist-info/WHEEL +5 -0
- agent_recipes-0.0.5.dist-info/top_level.txt +1 -0
- /236/326/177nE/243/231/214/232/265/322m/201/253/353/022C/372/321/266/b/225^=/272/017t/262/3337/310@/315wb/341pB/277z/216/330/314/004/265B/213/375/236/203/026/373/307/354z41/347#/374q/262/22589/032/276 /277/244Vh/322/017/004/224/215/004/367/377/375/335/n +0 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
"""
|
|
2
|
+
AI Fact Checker Tools
|
|
3
|
+
|
|
4
|
+
Verify content accuracy with:
|
|
5
|
+
- Claim extraction
|
|
6
|
+
- Source verification
|
|
7
|
+
- Citation linking
|
|
8
|
+
- Confidence scoring
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import logging
|
|
12
|
+
import os
|
|
13
|
+
from typing import Any, Dict, List, Optional
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger(__name__)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def call_llm(prompt: str, max_tokens: int = 1000) -> str:
|
|
19
|
+
"""Call OpenAI API for text generation."""
|
|
20
|
+
import requests
|
|
21
|
+
|
|
22
|
+
api_key = os.environ.get("OPENAI_API_KEY")
|
|
23
|
+
if not api_key:
|
|
24
|
+
raise ValueError("OPENAI_API_KEY not set")
|
|
25
|
+
|
|
26
|
+
response = requests.post(
|
|
27
|
+
"https://api.openai.com/v1/chat/completions",
|
|
28
|
+
headers={
|
|
29
|
+
"Authorization": f"Bearer {api_key}",
|
|
30
|
+
"Content-Type": "application/json",
|
|
31
|
+
},
|
|
32
|
+
json={
|
|
33
|
+
"model": "gpt-4o-mini",
|
|
34
|
+
"messages": [{"role": "user", "content": prompt}],
|
|
35
|
+
"max_tokens": max_tokens,
|
|
36
|
+
"temperature": 0.3,
|
|
37
|
+
},
|
|
38
|
+
timeout=60,
|
|
39
|
+
)
|
|
40
|
+
response.raise_for_status()
|
|
41
|
+
return response.json()["choices"][0]["message"]["content"]
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def extract_claims(
|
|
45
|
+
content: str,
|
|
46
|
+
claim_types: Optional[List[str]] = None,
|
|
47
|
+
) -> Dict[str, Any]:
|
|
48
|
+
"""
|
|
49
|
+
Extract verifiable claims from content.
|
|
50
|
+
|
|
51
|
+
Args:
|
|
52
|
+
content: Text content to analyze
|
|
53
|
+
claim_types: Types of claims to extract
|
|
54
|
+
|
|
55
|
+
Returns:
|
|
56
|
+
Dictionary with extracted claims
|
|
57
|
+
"""
|
|
58
|
+
claim_types = claim_types or ["factual", "statistical", "quote", "date"]
|
|
59
|
+
|
|
60
|
+
prompt = f"""Extract all verifiable claims from this content:
|
|
61
|
+
|
|
62
|
+
{content[:3000]}
|
|
63
|
+
|
|
64
|
+
For each claim, identify:
|
|
65
|
+
1. The claim text
|
|
66
|
+
2. Claim type (factual, statistical, quote, date, attribution)
|
|
67
|
+
3. Confidence that this is a verifiable claim (HIGH/MEDIUM/LOW)
|
|
68
|
+
|
|
69
|
+
Format as:
|
|
70
|
+
CLAIM: [claim text]
|
|
71
|
+
TYPE: [type]
|
|
72
|
+
CONFIDENCE: [level]
|
|
73
|
+
---"""
|
|
74
|
+
|
|
75
|
+
result = call_llm(prompt, max_tokens=1500)
|
|
76
|
+
|
|
77
|
+
claims = []
|
|
78
|
+
current_claim = {}
|
|
79
|
+
|
|
80
|
+
for line in result.split("\n"):
|
|
81
|
+
line = line.strip()
|
|
82
|
+
if line.startswith("CLAIM:"):
|
|
83
|
+
if current_claim:
|
|
84
|
+
claims.append(current_claim)
|
|
85
|
+
current_claim = {"claim": line[6:].strip()}
|
|
86
|
+
elif line.startswith("TYPE:"):
|
|
87
|
+
current_claim["type"] = line[5:].strip().lower()
|
|
88
|
+
elif line.startswith("CONFIDENCE:"):
|
|
89
|
+
current_claim["confidence"] = line[11:].strip().upper()
|
|
90
|
+
elif line == "---" and current_claim:
|
|
91
|
+
claims.append(current_claim)
|
|
92
|
+
current_claim = {}
|
|
93
|
+
|
|
94
|
+
if current_claim and "claim" in current_claim:
|
|
95
|
+
claims.append(current_claim)
|
|
96
|
+
|
|
97
|
+
return {
|
|
98
|
+
"claims": claims,
|
|
99
|
+
"total_claims": len(claims),
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def verify_claims(
|
|
104
|
+
claims: List[Dict[str, Any]],
|
|
105
|
+
) -> Dict[str, Any]:
|
|
106
|
+
"""
|
|
107
|
+
Verify extracted claims.
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
claims: List of claim dictionaries
|
|
111
|
+
|
|
112
|
+
Returns:
|
|
113
|
+
Dictionary with verification results
|
|
114
|
+
"""
|
|
115
|
+
verified = []
|
|
116
|
+
|
|
117
|
+
for claim in claims:
|
|
118
|
+
claim_text = claim.get("claim", "")
|
|
119
|
+
|
|
120
|
+
prompt = f"""Verify this claim and assess its accuracy:
|
|
121
|
+
|
|
122
|
+
Claim: {claim_text}
|
|
123
|
+
|
|
124
|
+
Provide:
|
|
125
|
+
1. VERDICT: TRUE / FALSE / PARTIALLY TRUE / UNVERIFIABLE
|
|
126
|
+
2. EXPLANATION: Brief explanation (1-2 sentences)
|
|
127
|
+
3. SUGGESTED_SOURCE: Type of source that could verify this
|
|
128
|
+
|
|
129
|
+
Format:
|
|
130
|
+
VERDICT: [verdict]
|
|
131
|
+
EXPLANATION: [explanation]
|
|
132
|
+
SUGGESTED_SOURCE: [source type]"""
|
|
133
|
+
|
|
134
|
+
try:
|
|
135
|
+
result = call_llm(prompt, max_tokens=300)
|
|
136
|
+
|
|
137
|
+
verification = {
|
|
138
|
+
**claim,
|
|
139
|
+
"verdict": "UNVERIFIABLE",
|
|
140
|
+
"explanation": "",
|
|
141
|
+
"suggested_source": "",
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
for line in result.split("\n"):
|
|
145
|
+
line = line.strip()
|
|
146
|
+
if line.startswith("VERDICT:"):
|
|
147
|
+
verification["verdict"] = line[8:].strip().upper()
|
|
148
|
+
elif line.startswith("EXPLANATION:"):
|
|
149
|
+
verification["explanation"] = line[12:].strip()
|
|
150
|
+
elif line.startswith("SUGGESTED_SOURCE:"):
|
|
151
|
+
verification["suggested_source"] = line[17:].strip()
|
|
152
|
+
|
|
153
|
+
verified.append(verification)
|
|
154
|
+
|
|
155
|
+
except Exception as e:
|
|
156
|
+
logger.warning(f"Error verifying claim: {e}")
|
|
157
|
+
verified.append({
|
|
158
|
+
**claim,
|
|
159
|
+
"verdict": "ERROR",
|
|
160
|
+
"explanation": str(e),
|
|
161
|
+
})
|
|
162
|
+
|
|
163
|
+
# Generate flags for problematic claims
|
|
164
|
+
flags = []
|
|
165
|
+
for v in verified:
|
|
166
|
+
if v.get("verdict") in ["FALSE", "PARTIALLY TRUE"]:
|
|
167
|
+
flags.append({
|
|
168
|
+
"claim": v.get("claim", ""),
|
|
169
|
+
"issue": v.get("verdict"),
|
|
170
|
+
"explanation": v.get("explanation", ""),
|
|
171
|
+
})
|
|
172
|
+
|
|
173
|
+
return {
|
|
174
|
+
"verified_claims": verified,
|
|
175
|
+
"flags": flags,
|
|
176
|
+
"stats": {
|
|
177
|
+
"total": len(verified),
|
|
178
|
+
"true": sum(1 for v in verified if v.get("verdict") == "TRUE"),
|
|
179
|
+
"false": sum(1 for v in verified if v.get("verdict") == "FALSE"),
|
|
180
|
+
"partial": sum(1 for v in verified if v.get("verdict") == "PARTIALLY TRUE"),
|
|
181
|
+
"unverifiable": sum(1 for v in verified if v.get("verdict") == "UNVERIFIABLE"),
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def find_citations(
|
|
187
|
+
claims: List[Dict[str, Any]],
|
|
188
|
+
use_web_search: bool = True,
|
|
189
|
+
) -> Dict[str, Any]:
|
|
190
|
+
"""
|
|
191
|
+
Find citation sources for claims.
|
|
192
|
+
|
|
193
|
+
Args:
|
|
194
|
+
claims: List of claim dictionaries
|
|
195
|
+
use_web_search: Use web search for citations
|
|
196
|
+
|
|
197
|
+
Returns:
|
|
198
|
+
Dictionary with citations
|
|
199
|
+
"""
|
|
200
|
+
citations = []
|
|
201
|
+
|
|
202
|
+
# Check for Tavily API
|
|
203
|
+
tavily_key = os.environ.get("TAVILY_API_KEY")
|
|
204
|
+
|
|
205
|
+
for claim in claims:
|
|
206
|
+
claim_text = claim.get("claim", "")
|
|
207
|
+
|
|
208
|
+
citation = {
|
|
209
|
+
"claim": claim_text,
|
|
210
|
+
"sources": [],
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if use_web_search and tavily_key:
|
|
214
|
+
try:
|
|
215
|
+
import requests
|
|
216
|
+
|
|
217
|
+
response = requests.post(
|
|
218
|
+
"https://api.tavily.com/search",
|
|
219
|
+
json={
|
|
220
|
+
"api_key": tavily_key,
|
|
221
|
+
"query": f"verify: {claim_text}",
|
|
222
|
+
"search_depth": "basic",
|
|
223
|
+
"max_results": 3,
|
|
224
|
+
},
|
|
225
|
+
timeout=30,
|
|
226
|
+
)
|
|
227
|
+
response.raise_for_status()
|
|
228
|
+
data = response.json()
|
|
229
|
+
|
|
230
|
+
for result in data.get("results", []):
|
|
231
|
+
citation["sources"].append({
|
|
232
|
+
"title": result.get("title", ""),
|
|
233
|
+
"url": result.get("url", ""),
|
|
234
|
+
"snippet": result.get("content", "")[:200],
|
|
235
|
+
})
|
|
236
|
+
|
|
237
|
+
except Exception as e:
|
|
238
|
+
logger.warning(f"Error searching for citation: {e}")
|
|
239
|
+
|
|
240
|
+
citations.append(citation)
|
|
241
|
+
|
|
242
|
+
return {
|
|
243
|
+
"citations": citations,
|
|
244
|
+
"total_sources": sum(len(c["sources"]) for c in citations),
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
def fact_check_content(
|
|
249
|
+
content: str,
|
|
250
|
+
include_citations: bool = True,
|
|
251
|
+
) -> Dict[str, Any]:
|
|
252
|
+
"""
|
|
253
|
+
Full fact-checking pipeline.
|
|
254
|
+
|
|
255
|
+
Args:
|
|
256
|
+
content: Content to fact-check
|
|
257
|
+
include_citations: Include source citations
|
|
258
|
+
|
|
259
|
+
Returns:
|
|
260
|
+
Complete fact-check report
|
|
261
|
+
"""
|
|
262
|
+
# Extract claims
|
|
263
|
+
extraction = extract_claims(content)
|
|
264
|
+
claims = extraction.get("claims", [])
|
|
265
|
+
|
|
266
|
+
# Verify claims
|
|
267
|
+
verification = verify_claims(claims)
|
|
268
|
+
|
|
269
|
+
# Find citations if requested
|
|
270
|
+
citations = {}
|
|
271
|
+
if include_citations:
|
|
272
|
+
citations = find_citations(claims)
|
|
273
|
+
|
|
274
|
+
return {
|
|
275
|
+
"claims": verification.get("verified_claims", []),
|
|
276
|
+
"flags": verification.get("flags", []),
|
|
277
|
+
"citations": citations.get("citations", []),
|
|
278
|
+
"stats": verification.get("stats", {}),
|
|
279
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Faq Generator
|
|
2
|
+
|
|
3
|
+
Generate FAQ from documentation/knowledge base
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install agent-recipes
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## CLI Usage
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Basic usage
|
|
15
|
+
praison recipes run ai-faq-generator <input>
|
|
16
|
+
|
|
17
|
+
# With output directory
|
|
18
|
+
praison recipes run ai-faq-generator <input> --output ./output/
|
|
19
|
+
|
|
20
|
+
# Dry run (check dependencies only)
|
|
21
|
+
praison recipes run ai-faq-generator <input> --dry-run
|
|
22
|
+
|
|
23
|
+
# Show recipe info
|
|
24
|
+
praison recipes info ai-faq-generator
|
|
25
|
+
|
|
26
|
+
# Check dependencies
|
|
27
|
+
praison recipes doctor ai-faq-generator
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Python Usage
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
from praisonaiagents import Agent
|
|
34
|
+
from agent_recipes import load_recipe
|
|
35
|
+
|
|
36
|
+
# Load and run recipe
|
|
37
|
+
recipe = load_recipe("ai-faq-generator")
|
|
38
|
+
result = recipe.run(input="<your-input>")
|
|
39
|
+
print(result)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Requirements
|
|
43
|
+
|
|
44
|
+
### Packages
|
|
45
|
+
- openai
|
|
46
|
+
|
|
47
|
+
### Environment Variables
|
|
48
|
+
- OPENAI_API_KEY
|
|
49
|
+
|
|
50
|
+
### External Tools
|
|
51
|
+
- None
|
|
52
|
+
|
|
53
|
+
## Tags
|
|
54
|
+
|
|
55
|
+
`document`, `faq`, `generation`
|
|
56
|
+
|
|
57
|
+
## License
|
|
58
|
+
|
|
59
|
+
Apache-2.0
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: ai-faq-generator
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: Generate FAQ from documentation/knowledge base
|
|
4
|
+
author: praison
|
|
5
|
+
license: Apache-2.0
|
|
6
|
+
tags:
|
|
7
|
+
- document
|
|
8
|
+
- faq
|
|
9
|
+
- generation
|
|
10
|
+
|
|
11
|
+
requires:
|
|
12
|
+
tools:
|
|
13
|
+
- llm_tool
|
|
14
|
+
packages:
|
|
15
|
+
- openai
|
|
16
|
+
env:
|
|
17
|
+
- OPENAI_API_KEY
|
|
18
|
+
|
|
19
|
+
cli:
|
|
20
|
+
command: praison recipes run ai-faq-generator
|
|
21
|
+
examples:
|
|
22
|
+
- praison recipes run ai-faq-generator <input>
|
|
23
|
+
- praison recipes run ai-faq-generator <input> --output ./output/
|
|
24
|
+
- praison recipes run ai-faq-generator <input> --dry-run
|
|
25
|
+
|
|
26
|
+
safety:
|
|
27
|
+
dry_run_default: false
|
|
28
|
+
overwrites_files: true
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# File Organizer
|
|
2
|
+
|
|
3
|
+
Auto-organize files into folders by content
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install agent-recipes
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## CLI Usage
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Basic usage
|
|
15
|
+
praison recipes run ai-file-organizer <input>
|
|
16
|
+
|
|
17
|
+
# With output directory
|
|
18
|
+
praison recipes run ai-file-organizer <input> --output ./output/
|
|
19
|
+
|
|
20
|
+
# Dry run (check dependencies only)
|
|
21
|
+
praison recipes run ai-file-organizer <input> --dry-run
|
|
22
|
+
|
|
23
|
+
# Show recipe info
|
|
24
|
+
praison recipes info ai-file-organizer
|
|
25
|
+
|
|
26
|
+
# Check dependencies
|
|
27
|
+
praison recipes doctor ai-file-organizer
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Python Usage
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
from praisonaiagents import Agent
|
|
34
|
+
from agent_recipes import load_recipe
|
|
35
|
+
|
|
36
|
+
# Load and run recipe
|
|
37
|
+
recipe = load_recipe("ai-file-organizer")
|
|
38
|
+
result = recipe.run(input="<your-input>")
|
|
39
|
+
print(result)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Requirements
|
|
43
|
+
|
|
44
|
+
### Packages
|
|
45
|
+
- openai
|
|
46
|
+
|
|
47
|
+
### Environment Variables
|
|
48
|
+
- OPENAI_API_KEY
|
|
49
|
+
|
|
50
|
+
### External Tools
|
|
51
|
+
- None
|
|
52
|
+
|
|
53
|
+
## Tags
|
|
54
|
+
|
|
55
|
+
`productivity`, `files`, `organization`
|
|
56
|
+
|
|
57
|
+
## License
|
|
58
|
+
|
|
59
|
+
Apache-2.0
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: ai-file-organizer
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: Auto-organize files into folders by content
|
|
4
|
+
author: praison
|
|
5
|
+
license: Apache-2.0
|
|
6
|
+
tags:
|
|
7
|
+
- productivity
|
|
8
|
+
- files
|
|
9
|
+
- organization
|
|
10
|
+
|
|
11
|
+
requires:
|
|
12
|
+
tools:
|
|
13
|
+
- llm_tool
|
|
14
|
+
- vision_tool
|
|
15
|
+
packages:
|
|
16
|
+
- openai
|
|
17
|
+
env:
|
|
18
|
+
- OPENAI_API_KEY
|
|
19
|
+
|
|
20
|
+
cli:
|
|
21
|
+
command: praison recipes run ai-file-organizer
|
|
22
|
+
examples:
|
|
23
|
+
- praison recipes run ai-file-organizer <input>
|
|
24
|
+
- praison recipes run ai-file-organizer <input> --output ./output/
|
|
25
|
+
- praison recipes run ai-file-organizer <input> --dry-run
|
|
26
|
+
|
|
27
|
+
safety:
|
|
28
|
+
dry_run_default: true
|
|
29
|
+
overwrites_files: true
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# AI Folder Packager
|
|
2
|
+
|
|
3
|
+
Package folder into distributable archive with manifest and checksums.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
```bash
|
|
7
|
+
praison run ai-folder-packager ./my-project
|
|
8
|
+
praison run ai-folder-packager ./my-project --format tar.gz
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Output
|
|
12
|
+
- `package.zip` - Archive file
|
|
13
|
+
- `manifest.json` - File list with hashes
|
|
14
|
+
- `checksums.txt` - SHA256 checksums
|
|
15
|
+
- `README.txt` - Auto-generated description
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: ai-folder-packager
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: Package folder into distributable archive with manifest and checksums.
|
|
4
|
+
author: praisonai
|
|
5
|
+
license: Apache-2.0
|
|
6
|
+
tags: [archive, packaging, distribution, checksums]
|
|
7
|
+
|
|
8
|
+
requires:
|
|
9
|
+
tools: [shell_tool]
|
|
10
|
+
packages: [praisonai-tools]
|
|
11
|
+
env: [OPENAI_API_KEY]
|
|
12
|
+
|
|
13
|
+
config:
|
|
14
|
+
input:
|
|
15
|
+
type: string
|
|
16
|
+
required: true
|
|
17
|
+
output:
|
|
18
|
+
type: string
|
|
19
|
+
format:
|
|
20
|
+
type: string
|
|
21
|
+
default: "zip"
|
|
22
|
+
enum: [zip, tar.gz, tar.bz2]
|
|
23
|
+
|
|
24
|
+
cli:
|
|
25
|
+
command: ai-folder-packager
|
|
26
|
+
args:
|
|
27
|
+
- name: input
|
|
28
|
+
positional: true
|
|
29
|
+
required: true
|
|
30
|
+
- name: --output
|
|
31
|
+
short: -o
|
|
32
|
+
- name: --format
|
|
33
|
+
default: "zip"
|
|
34
|
+
examples:
|
|
35
|
+
- "praison run ai-folder-packager ./my-project"
|
|
36
|
+
- "praison run ai-folder-packager ./my-project --format tar.gz"
|
|
37
|
+
|
|
38
|
+
outputs:
|
|
39
|
+
- name: package.zip
|
|
40
|
+
type: file
|
|
41
|
+
- name: manifest.json
|
|
42
|
+
type: file
|
|
43
|
+
- name: checksums.txt
|
|
44
|
+
type: file
|
|
45
|
+
- name: README.txt
|
|
46
|
+
type: file
|
|
47
|
+
- name: run.json
|
|
48
|
+
type: file
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Form Filler
|
|
2
|
+
|
|
3
|
+
Auto-fill PDF forms from data sources
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install agent-recipes
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## CLI Usage
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Basic usage
|
|
15
|
+
praison recipes run ai-form-filler <input>
|
|
16
|
+
|
|
17
|
+
# With output directory
|
|
18
|
+
praison recipes run ai-form-filler <input> --output ./output/
|
|
19
|
+
|
|
20
|
+
# Dry run (check dependencies only)
|
|
21
|
+
praison recipes run ai-form-filler <input> --dry-run
|
|
22
|
+
|
|
23
|
+
# Show recipe info
|
|
24
|
+
praison recipes info ai-form-filler
|
|
25
|
+
|
|
26
|
+
# Check dependencies
|
|
27
|
+
praison recipes doctor ai-form-filler
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Python Usage
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
from praisonaiagents import Agent
|
|
34
|
+
from agent_recipes import load_recipe
|
|
35
|
+
|
|
36
|
+
# Load and run recipe
|
|
37
|
+
recipe = load_recipe("ai-form-filler")
|
|
38
|
+
result = recipe.run(input="<your-input>")
|
|
39
|
+
print(result)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Requirements
|
|
43
|
+
|
|
44
|
+
### Packages
|
|
45
|
+
- pypdf
|
|
46
|
+
- openai
|
|
47
|
+
|
|
48
|
+
### Environment Variables
|
|
49
|
+
- OPENAI_API_KEY
|
|
50
|
+
|
|
51
|
+
### External Tools
|
|
52
|
+
- None
|
|
53
|
+
|
|
54
|
+
## Tags
|
|
55
|
+
|
|
56
|
+
`document`, `pdf`, `forms`
|
|
57
|
+
|
|
58
|
+
## License
|
|
59
|
+
|
|
60
|
+
Apache-2.0
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: ai-form-filler
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: Auto-fill PDF forms from data sources
|
|
4
|
+
author: praison
|
|
5
|
+
license: Apache-2.0
|
|
6
|
+
tags:
|
|
7
|
+
- document
|
|
8
|
+
- pdf
|
|
9
|
+
- forms
|
|
10
|
+
|
|
11
|
+
requires:
|
|
12
|
+
tools:
|
|
13
|
+
- doc_tool
|
|
14
|
+
- llm_tool
|
|
15
|
+
packages:
|
|
16
|
+
- pypdf
|
|
17
|
+
- openai
|
|
18
|
+
env:
|
|
19
|
+
- OPENAI_API_KEY
|
|
20
|
+
|
|
21
|
+
cli:
|
|
22
|
+
command: praison recipes run ai-form-filler
|
|
23
|
+
examples:
|
|
24
|
+
- praison recipes run ai-form-filler <input>
|
|
25
|
+
- praison recipes run ai-form-filler <input> --output ./output/
|
|
26
|
+
- praison recipes run ai-form-filler <input> --dry-run
|
|
27
|
+
|
|
28
|
+
safety:
|
|
29
|
+
dry_run_default: true
|
|
30
|
+
overwrites_files: true
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: ai-hashtag-optimizer
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
description: Optimize hashtags and keywords for maximum reach
|
|
4
|
+
author: PraisonAI
|
|
5
|
+
tags:
|
|
6
|
+
- hashtags
|
|
7
|
+
- keywords
|
|
8
|
+
- seo
|
|
9
|
+
- optimization
|
|
10
|
+
|
|
11
|
+
config:
|
|
12
|
+
max_hashtags: 30
|
|
13
|
+
platforms:
|
|
14
|
+
- instagram
|
|
15
|
+
- x
|
|
16
|
+
- linkedin
|
|
17
|
+
- tiktok
|
|
18
|
+
|
|
19
|
+
input:
|
|
20
|
+
type: object
|
|
21
|
+
properties:
|
|
22
|
+
topic:
|
|
23
|
+
type: string
|
|
24
|
+
platform:
|
|
25
|
+
type: string
|
|
26
|
+
|
|
27
|
+
output:
|
|
28
|
+
type: object
|
|
29
|
+
properties:
|
|
30
|
+
hashtags:
|
|
31
|
+
type: array
|
|
32
|
+
keywords:
|
|
33
|
+
type: array
|
|
34
|
+
|
|
35
|
+
requires:
|
|
36
|
+
env:
|
|
37
|
+
- OPENAI_API_KEY
|
|
38
|
+
|
|
39
|
+
workflow:
|
|
40
|
+
agents:
|
|
41
|
+
- name: optimizer
|
|
42
|
+
role: Hashtag Optimizer
|
|
43
|
+
tools:
|
|
44
|
+
- generate_hashtags
|
|
45
|
+
- optimize_keywords
|