ðDifyããã¥ãŒïŒåããŠã®æäœããçè§£ãŸã§äžç·ã«ãã£ãŠã¿ããïŒãåŸç·šã
ãã®èšäºã®å 容
- Difyã®ãã£ãããããã»ããã¹ãçæã»ã¯ãŒã¯ãããŒã®åã¢ããªã¿ã€ããå®éã«æäœããŠæ¯èŒ
- ããã¹ãçæã¢ããªã§å€æ°ã䜿ã£ãSEOèšäºçæãã³ãã¬ãŒãã®ä»çµã¿ã解説
- ã¯ãŒã¯ãããŒã®ãµã³ãã«ïŒWebã³ã³ãã³ãæ€çŽ¢ã»èŠçŽïŒãå®è¡ããåããŒãã®åœ¹å²ã詳ãã確èª
- Tavily SearchãJina Readerãªã©å€éšAPIãšã®é£æºæ¹æ³ã玹ä»
- Difyã®ã³ãã¥ããã£çïŒã»ã«ããã¹ãïŒãšã¯ã©ãŠãçã®éããšäœ¿ãåããæŽç
ãã£ããããããšãšãŒãžã§ã³ãã®éãã確èªãã
åç·šã«ç¶ããä»åã¯Difyã®ããŸããŸãªã¢ããªã¿ã€ããå®éã«è§Šããªããçè§£ãæ·±ããŠãããŸãã
ãŸãã¯ãã£ãããããç³»ãã³ãã¬ãŒããšããŠãAIã€ã³ã¿ãã¥ãŒãã詊ããŠã¿ãŸãããã®ãã³ãã¬ãŒãã¯ãšãŒãžã§ã³ãã§ã¯ãªãéåžžã®ãã£ããããããšããŠåäœããŠããããããããã·ã¹ãã ããã³ããã«æé ãæžããã圢åŒã§ããããŒã«ã®å®è¡ã¯ã§ãããäŒè©±ã®æµãã«åŸã£ãŠåãã·ã³ãã«ãªæ§æã«ãªã£ãŠããŸãã
å®éã«åãããŠã¿ããšãããã³ããšã³ãéçºã¹ãã«ã«é¢ãããªãŒãã³ãšã³ããªè³ªåãæ¥æ¬èªã§æç€ºããŠãããŸãããããã³ããã®æžãæ¹æ¬¡ç¬¬ã§åäœãå€ããç¹ã¯ãéåžžã®LLMãšæ¬è³ªçã«åãã§ãã
ãšãŒãžã§ã³ããšéåžžãã£ãããããã®éããæŽçãããšã以äžã®ããã«ãªããŸãã
| çš®å¥ | ããŒã«å®è¡ | åäœã®ç¹åŸŽ |
|---|---|---|
| ãšãŒãžã§ã³ã | å¯èœ | æé ãèªåŸçã«å®è¡ |
| ãã£ããããã | äžå¯ | ããã³ããã®æé ã«åŸã£ãŠäŒè©± |
ããã¹ãçæã¢ããªãšå€æ°ã®ä»çµã¿
次ã«ãããã¹ãçæãã¿ã€ãã®ã¢ããªã確èªããŸãããã£ããããããšã®å€§ããªéãã¯å€æ°ã䜿ããç¹ã§ãã
ãµã³ãã«ã®SEOèšäºçæãã³ãã¬ãŒãã§ã¯ã以äžã®ãããªå€æ°ãå®çŸ©ãããŠããŸããã
keywordâ SEOããŒã¯ãŒãcontextâ èšäºã®ã³ã³ããã¹ãtarget_languageâ åºåèšèªïŒéžæè¢ïŒ
倿°ã®éžæè¢ïŒäŸïŒå¯Ÿè±¡èšèªïŒã¯ããã³ããç·šéç»é¢ã§è¿œå ã»åé€ãå¯èœã§ããåæç¶æ ã§ã¯è±èªãªã©äžéšã®èšèªããéžã¹ãŸããã§ãããããªãã·ã§ã³ãšããŠãæ¥æ¬èªãã远å ããããšã§æ¥æ¬èªã§ã®èšäºçæãå¯èœã«ãªããŸããã
ããã³ããã®æ«å°Ÿã«ãå¿ ãæ¥æ¬èªã§åºåããŠãã ããããšããæç€ºã远å ããããšã§ããã確å®ã«æ¥æ¬èªåºåãåŸãããŸãã
ããã¹ãçæã¢ããªã®ãŠãŒã¹ã±ãŒã¹ãšããŠã¯ãYouTubeåç»ã®æŠèŠæ¬äœæãããã°èšäºã®äžæžãçæãªã©ãæããããŸããAPIããã¢ã¯ã»ã¹ããããšãã§ãããã°ç®¡çæ©èœã§åºåãç£èŠããããšãå¯èœã§ãã
ã¯ãŒã¯ãããŒãå®éã«åãããŠã¿ã
ããããDifyã®ç®çæ©èœã§ãããã¯ãŒã¯ãããŒãã詊ããŸãããã³ãã¬ãŒããããWeb Content SearchïŒWebã³ã³ãã³ãæ€çŽ¢ã»èŠçŽïŒããéžæããŸããã
å€éšAPIã®èšå®
ãã®ã¯ãŒã¯ãããŒãå®è¡ããã«ã¯ã2ã€ã®å€éšãµãŒãã¹ã®APIããŒãå¿ èŠã§ãã
Tavily Search LLMåãã«æé©åãããWebæ€çŽ¢APIã§ããç¡æãã©ã³ã§1,000ãªã¯ãšã¹ããŸã§å©çšã§ããŸãã
Jina Reader WebããŒãžã®HTMLãLLMãèªã¿ãããããã¹ã圢åŒã«å€æãããããã·ãµãŒãã¹ã§ããJavaScriptã§åçã«çæãããã³ã³ãã³ããªã©ããã®ãŸãŸã§ã¯LLMãæ±ãã«ããéšåãæŽåœ¢ããŠè¿ããŠãããŸãã
ã¯ãŒã¯ãããŒã®åããŒããèªã¿è§£ã
ã¯ãŒã¯ãããŒã¯èŠèŠçãªãããŒå³ã§è¡šçŸãããŠãããåããŒãã®åœ¹å²ãé ã«ç¢ºèªã§ããŸãã
1. ã¹ã¿ãŒãããŒãïŒè³ªåå ¥åïŒ
ãŠãŒã¶ãŒããã®è³ªåããã¹ããšãã¡ã€ã«ãåãåããŸããä»åã¯ãYouTubeã§åçæ°ã䌞ã°ãæ¹æ³ããå ¥åããŸããã
2. æ€çŽ¢ããŒãïŒTavily SearchïŒ
ã¹ã¿ãŒãããŒãã§åãåã£ã質åããã®ãŸãŸTavily Searchã«æž¡ããWebæ€çŽ¢ãå®è¡ããŸããæ€çŽ¢ã®æ·±ãïŒBasic / AdvancedïŒãä»¶æ°ãé€å€ãã¡ã€ã³ãªã©ã®ãã©ã¡ãŒã¿ãŒãããŒãäžã§èšå®ã§ããŸãã
3. ã³ãŒãããŒãïŒPythonïŒ
æ€çŽ¢çµæããURLã®ãªã¹ããæœåºããPythonã³ãŒããèšè¿°ãããŠããŸãã
def main(arg1):
# æ€çŽ¢çµæããURLãæœåºããŠè¿ã
urls = [item['url'] for item in arg1]
return {"result": urls}
ããŒã³ãŒãããŒã«ã§ãããªãããè€éãªåŠçã¯ã³ãŒãã§æžããã®ãDifyã®åŒ·ã¿ã§ãã察å¿èšèªã¯PythonãšJavaScriptã§ãã
4. ã€ãã¬ãŒã·ã§ã³ããŒã
ã³ãŒãããŒãã§ååŸããURLã®ãªã¹ãã1ä»¶ãã€åŠçããã«ãŒãæ§é ã§ãã以éã®ããŒãã¯ãã®ã€ãã¬ãŒã·ã§ã³å ã§ç¹°ãè¿ãå®è¡ãããŸãã
5. Jina ReaderããŒã
åURLãJina Readerçµç±ã§ååŸããLLMãã¬ã³ããªãŒãªããã¹ãã«å€æããŸããåºåã¯ããã¹ãã»ã¿ã€ãã«ã»ãœãŒã¹URLã®3çš®é¡ã§ãã
6. LLMããŒãïŒGPT-4ïŒ
Jina Readerãè¿ããããã¹ããLLMã«æž¡ããèŠçŽãçæããŸããã·ã¹ãã ããã³ããã«ã¯ã以äžã®ããã¹ããèŠçŽããŠãã ããããšããæç€ºãå«ãŸããŠããŸãã
7. ãã³ãã¬ãŒã倿ããŒãïŒJinja2ïŒ
URLãšèŠçŽããã¹ããåãåããåºåãæååãæãã§çµåããŸããããã§ã¯Jinja2ãã³ãã¬ãŒããšã³ãžã³ã䜿ãããŠããã倿°ã®åç §ãæååå å·¥ãå¯èœã§ãã
{{ url }}
{{ summary }}
---SP---
8. ã³ãŒãããŒãïŒåå²åŠçïŒ
ãã³ãã¬ãŒãã§çµåããæååãåºåãæåïŒ---SP---ïŒã§åå²ããURLã»èŠçŽã®ãã¢ãé
åãšããŠæŽåœ¢ããŸãã
9. ãã³ãã¬ãŒã倿ããŒãïŒè¡šåœ¢åŒåºåïŒ
æçµçãªåºåãMarkdownã®ããŒãã«åœ¢åŒã«æŽåœ¢ããŸãã
| URL | èŠçŽ |
|-----|------|
{% for item in data %}
| {{ item.url }} | {{ item.summary }} |
{% endfor %}
10. åºåããŒã
æŽåœ¢ããã衚ããŠãŒã¶ãŒãžã®æçµåºåãšããŠè¿ããŸãã
å®è¡çµæã®ç¢ºèª
å®è¡ãå®äºãããšãæ€çŽ¢ããURLãšãã®èŠçŽãMarkdownããŒãã«åœ¢åŒã§è¡šç€ºãããŸãããYouTubeã§åçæ°ã䌞ã°ãæ¹æ³ããšãã質åã«å¯ŸããŠãè€æ°ã®WebããŒãžãåç §ããäžã§ãã€ã³ãããŸãšããçµæãåŸãããŸããã
ãã¬ãŒã¹æ©èœã§ã¯åããŒãã®å®è¡ç¶æ³ãå ¥åºåã®å å®¹ãæ¶è²»ããŒã¯ã³æ°ãåŠçæéãªã©ã確èªã§ããŸãããããã°ãæé©åã«åœ¹ç«ã¡ãŸãã
ãã®ä»ã®æ©èœ
ãããå®è¡
ãã©ã³ããããæ©èœã䜿ããšãCSVãã¡ã€ã«ã«è€æ°ã®è³ªåãæžããŠãããäžæ¬ã§åŠçãããããšãã§ããŸããç¹°ãè¿ãäœæ¥ã®èªååã«äŸ¿å©ã§ãã
ãã¬ããžïŒRAGçšããŒã¿ããŒã¹ïŒ
Difyã«ã¯ãã¯ãã«ããŒã¿ããŒã¹ãšããŠæ©èœãããã¬ããžæ©èœããããRAGïŒæ€çŽ¢æ¡åŒµçæïŒçšã®ããŒã¿ãèç©ã§ããŸããå€éšããAPIã§ããŒã¿ã远å ããããšãå¯èœã§ãã
ããŒã«é£æºãšã¯ãŒã¯ãããŒã®ããŒã«å
ã«ã¹ã¿ã ããŒã«ãäœæããŠãšãŒãžã§ã³ããã¯ãŒã¯ãããŒããåŒã³åºããŸãããŸããäœæããã¯ãŒã¯ãããŒãããŒã«ãšããŠå ¬éããå¥ã®ãšãŒãžã§ã³ããã¯ãŒã¯ãããŒããå©çšããããšãå¯èœã§ããããã«ãããå°ããªã¯ãŒã¯ãããŒãçµã¿åãããè€éãªåŠçãæ§ç¯ã§ããŸãã
ã³ãã¥ããã£çïŒã»ã«ããã¹ãïŒã«ã€ããŠ
Difyã«ã¯ã¯ã©ãŠãã®ãã¹ãã£ã³ã°ãµãŒãã¹ã®ã»ãã«ããªãŒãã³ãœãŒã¹ã®ã³ãã¥ããã£çããããŸããDockerãŸãã¯Docker Composeã䜿ã£ãŠããŒã«ã«ç°å¢ããªã³ãã¬ãã¹ã«ãããã€ã§ããŸãã
# ãªããžããªã®ã¯ããŒã³
git clone https://github.com/langgenius/dify.git
# Docker Composeã§èµ·å
cd dify/docker
docker compose up -d
äŸåããããã«ãŠã§ã¢ãšããŠPostgreSQLãRedisãªã©ãå¿ èŠã§ãã
ã¯ã©ãŠãçãšã³ãã¥ããã£çã®äž»ãªéãã¯æ©èœãããã¹ã±ãŒã«ã®éšåã«ãããšèããããå°èŠæš¡ãªçšéãªãã³ãã¥ããã£çã§åå察å¿ã§ããŸãã
ãŸãšã
ä»åã®åç»ã§ã¯ãDifyã®ãã£ãããããã»ããã¹ãçæã»ã¯ãŒã¯ãããŒã®3çš®é¡ã®ã¢ããªã¿ã€ããå®éã«æäœããªããçè§£ãæ·±ããŸããã
ç¹ã«ã¯ãŒã¯ãããŒæ©èœã¯ãæ€çŽ¢âã³ãŒãåŠçâã€ãã¬ãŒã·ã§ã³âLLMèŠçŽâãã³ãã¬ãŒãæŽåœ¢ãšããäžé£ã®åŠçãèŠèŠçã«çµã¿ç«ãŠãããã®ã倧ããªé åã§ããè€éãªåŠçã¯Pythonã³ãŒãã§è£ãããããããŒã³ãŒããšã³ãŒãèšè¿°ããã©ã³ã¹ãã䜿ãåããããšãã§ããŸãã
Difyã®å°å ¥ãæ€èšããéã¯ããŸãã¯ã©ãŠãã®ç¡æãã©ã³ã§è©ŠããŠã¿ãŠãã¢ããªæ°ããã¬ããžã®å®¹éãäžè¶³ããŠãããã³ãã¥ããã£çãžç§»è¡ãããšããæµããã¹ã ãŒãºã§ããäœæããã¢ããªã¯ãšã¯ã¹ããŒãã§ãããããåŸããã®ç§»è¡ã容æã§ãã