
Dify x Gemini x Pythonã§ãªãªãžãã«AIãäœã ïœGemini1.0ã§æç« æ¯ãåãïœ API䜿çš
ããã«ã¡ã¯ãRcatã§ãã
ååã¯Difyã®ãã¢ã ããã£ãŠçµäºã«ãªããŸããããä»åããæ¬æ Œçã«åšèŸºãµãŒãã¹ãäœæãã€ã€çµã¿åãããŠãããŸãã
æ¬èšäºã¯99%ç¡æã§ã
DIfyç³»ç®æ¬¡èšäº
æ¬ã·ãªãŒãºã¯ãã¡ã
次åã¯ãã¡ã
ä»åããããš
ããããš
ä»åã®å
容ãšããŠã¯ãååã®ãã¢æ©ã®å
¬éãè¡ããå€éšããAIPã§ã¢ã¯ã»ã¹ããããšã§ãã
ã¢ã¯ã»ã¹ã«ã¯Pythonã䜿ããŸãã
ãšããããæçµçµæèŒãã
ä»åã¯äžèšã®ãããªåäœãããããã«PythonåŽãšDifyåŽãäœããŸãã
>>> import DifyTest as gf
>>> ai = gf.DifyClient("192.168.0.4","app-AIPããŒã¯ãã")
>>> txt = """2024/05/10 20:51
... ä¿¡çšè²·ãå€ããªã
...
... 2024/05/10 21:12
... 仿¥ã®æ¥æ¿ãªäžãäœã ã£ãã?
...
... 2024/05/10 21:16
... æ¬æ¥ã倧æããŸãã
...
... 2024/05/10 21:19
... ãããããª
...
... 2024/05/10 21:27
... é¢é£äŒç€Ÿã®æ±ºç®è¯ãã£ãã®ã§è²·ããŸãã"""
>>> print(ai.Post_AI(txt))
**æŽçãããæç« **
2024/05/1020:51
ä¿¡çšè²·ãå€ããªã
2024/05/1021:12
仿¥ã®æ¥æ¿ãªäžãäœã ã£ãã?
2024/05/1021:27
é¢é£äŒç€Ÿã®æ±ºç®è¯ãã£ãã®ã§è²·ããŸããåäœãšç®çã¯äžèšã®ããã«ãªã£ãŠããŸãã
èªäœã¢ãžã¥ãŒã«ãimport
Difyã¯ã©ã€ã¢ã³ããã€ã³ã¹ã¿ã³ã¹
æè³ã«é¢ããæ²ç€ºæ¿ã®æ å ±ãããã¹ã
ããã¹ããDify(Gemini)ã«ãã¹ã
äœèšãªéè«ãçãããç¹å®ã®åœ¢åŒã®ããã¹ããåŸã
æçš¿ã®äžèº«ã¯é©åœã«ã§ã£ã¡äžãããã®ã§ãããäžèŠãªéè«ãšããŠ"èªå倧æããŸãã"ã"ããããã"ã®ãããªæçš¿ãæ¶ãããŠããŸãããäžã
ã§ãã
ã¡ãããšæ
å ±ãšããŠäœ¿ããããªå
å®¹ã¯æ®ãããŠããŸãã
DifyåŽ
ã¢ããªã®çš®é¡
ä»åã®èšäºã§ã¯ãã¢ããªã®çš®é¡ãããã¹ããžã§ãã¬ãŒã¿ãŒãšããŸãã
äœæããå
¬éãŸã§ã®æé ã¯ååã®ãã£ããããããšå€ãããªãã®ã§å
¬éãŸã§ããŠãã ããã

ãããã®äœæ
ä»åã¯ããã¹ããžã§ãã¬ãŒã¿ãŒã§ãã®ã§ãååãšå°ãéããŸãã
軜ãäœ¿ãæ¹ã説æããŠãããŸãã
ãŸãäœã£ãã°ããã§ã¯äžèšã®ããã«ãªã£ãŠããŸãã
å·ŠåŽã«ã©ããªåŠçãããŠã»ããã®ãæžããŠããããšã§ããŠãŒã¶ãŒã¯"æ
å ±ã®å
¥å"ã ãã§æžãããã«ãªããŸãã
ç§ã®äŸã ãšæ²ç€ºæ¿ã®ããã¹ãã ãéã£ãŠããŸããããããã¯ããã«ããããšãå
šéšæžããŠããããã§ãã

å ·äœçã«ã¯ä»¥äžã®ããã«ãªããŸãã
æ¥é èŸã«ã¯ã§ããã ãå ·äœçãªæç€ºãå ¥ãã
ããã®å ¥å次第ã§åºåå質ãã¬ã©ããšå€ãã
äžèšäŸã§ã¯ãŸããŸãé©åœã¬ãã«å€æ°ã®QueryãONã«ãã
æ¥é èŸã®äžã«ããã©ã«ãã§å ¥ã£ãŠãã"{{query}}"ããŠãŒã¶ãŒã®å ¥åã«çœ®æããããã«å¿ èŠã§ãã
ãªã®ã§ãAIã«éãããæç« ã¯"æ¥é èŸ + ãŠãŒã¶ãŒã®å ¥å"ãšãªããŸããå³åŽã§ãããã°ãå¯èœ
ãã£ããã®æãšåããå³äžã§å ¥åããŠãããã°ã§ããŸãã
åºåã¯äžåŽã«åºãŸã

ãšããããæåãšåãæç« ãå
¥ããŠã¿ãŸããããæã£ãããããåºåã§ãã?
ã¡ãªã¿ã«ãã©ã¡ãŒã¿ãŒãšåºåæç€ºããŠããªãã®ã§ãäœåãç¹°ãè¿ããšä»¥äžã®ããã«åºåãå€ãããŸãã
## æŽçæžã¿æçš¿
- 2024/05/10 20:51
ä¿¡çšè²·ãå€ããªã
- 2024/05/10 21:12
仿¥ã®æ¥æ¿ãªäžãäœã ã£ãã?
- 2024/05/10 21:27
é¢é£äŒç€Ÿã®æ±ºç®è¯ãã£ãã®ã§è²·ããŸãã**å¿
èŠãªæçš¿:**
* 2024/05/10 20:51: ä¿¡çšè²·ãå€ããªã
* 2024/05/10 21:27: é¢é£äŒç€Ÿã®æ±ºç®è¯ãã£ãã®ã§è²·ããŸãã
**äžèŠãªæçš¿:**
* 2024/05/10 21:12: 仿¥ã®æ¥æ¿ãªäžãäœã ã£ãã?
* 2024/05/10 21:16: æ¬æ¥ã倧æããŸãã
* 2024/05/10 21:19: ãããããª# ä¿¡çšè²·ãå€ããªã
# 仿¥ã®æ¥æ¿ãªäžãäœã ã£ãã?
# é¢é£äŒç€Ÿã®æ±ºç®è¯ãã£ãã®ã§è²·ããŸãããã©ã¡ãŒã¿ã倿ŽããŠå®å®ããã
LLMã«ã¯ããã€ããã©ã¡ãŒã¿ããããŸãããä»åã¯æž©åºŠãšTOP Pã倿ŽããŸãã
ã¢ãã«ã®éšåãæŒããŠããã®äžã®ãã©ã¡ãŒã¿ããªã³ã«ããŠèšå®ããŸãã
ç§ã®å°éå®¶ã§ã¯ãªãã®ã§è©³ããã¯åãããŸããããããããåµé æ§ãã©ã³ãã æ§ãæããã©ã¡ãŒã¿ãŒã ããã§ãã
ã€ãŸãã¯åµé æ§ãäœãããŠåºåãå®å®ãããã©ã³ãã æ§ãäœãããããšã§ããåãåºåãããããããããšããããšã§ãã
ãããããã"èå¯ããŠãã ãã"ãšããæç€ºã§ããã°ããã®ãã©ã¡ãŒã¿ãŒã¯è¯ããªãã§ããããããã颚ã«èããŠèšå®ããŠãããŸãã
ä»åã¯ãããã0.2ãŸã§äžããŸãããç¹ã«äœãèããªãå Žåãåæ¹ãšã1ã«è¿ãæ°å€ã«ãªã£ãŠããããšãå€ãã¿ããã§ãã

ã¡ãªã¿ã«ãã©ã¡ãŒã¿ãŒã«ã€ããŠã¯æãrinnaãèªå皌åããããæã«ãè§Šã£ãŠããããŸãã
ãšããããã§3åå®è¡ããŠã¿ãŸããã
ãªããš3åãšãå
šãåãåºåã«ãªã£ãŠãŸãã(ã³ããããããã§ã¯ãªãã§ãã)
å¿
èŠãªåŠçã¯ãã¡ããšè¡ãããŠããã®ã§ããã©ã¡ãŒã¿ãŒã¯ãã®æ°å€ã§è¡ãããšæããŸãã
**å¿
èŠãªæçš¿:**
* 2024/05/10 20:51
ä¿¡çšè²·ãå€ããªã
* 2024/05/10 21:12
仿¥ã®æ¥æ¿ãªäžãäœã ã£ãã?
* 2024/05/10 21:27
é¢é£äŒç€Ÿã®æ±ºç®è¯ãã£ãã®ã§è²·ããŸãã
**äžèŠãªæçš¿:**
* 2024/05/10 21:16
æ¬æ¥ã倧æããŸãã
* 2024/05/10 21:19
ãããããª**å¿
èŠãªæçš¿:**
* 2024/05/10 20:51
ä¿¡çšè²·ãå€ããªã
* 2024/05/10 21:12
仿¥ã®æ¥æ¿ãªäžãäœã ã£ãã?
* 2024/05/10 21:27
é¢é£äŒç€Ÿã®æ±ºç®è¯ãã£ãã®ã§è²·ããŸãã
**äžèŠãªæçš¿:**
* 2024/05/10 21:16
æ¬æ¥ã倧æããŸãã
* 2024/05/10 21:19
ãããããª**å¿
èŠãªæçš¿:**
* 2024/05/10 20:51
ä¿¡çšè²·ãå€ããªã
* 2024/05/10 21:12
仿¥ã®æ¥æ¿ãªäžãäœã ã£ãã?
* 2024/05/10 21:27
é¢é£äŒç€Ÿã®æ±ºç®è¯ãã£ãã®ã§è²·ããŸãã
**äžèŠãªæçš¿:**
* 2024/05/10 21:16
æ¬æ¥ã倧æããŸãã
* 2024/05/10 21:19
ãããããªAPIããŒã®çºè¡
æºåãã§ããã®ã§ãä»åºŠã¯å€éšããã¢ã¯ã»ã¹ããŠã¿ãŸãããã
å€éšããã¢ã¯ã»ã¹ããã«ã¯APIããŒãå¿
èŠã§ãã
BOTãä¿åããããã«"å
¬é"ãæŒããã®ã§ãã®æç¹ã§ä¿åãããŠAPIããŒãååŸå¯èœã«ãªã£ãŠããŸãã
ç»é¢å·Šã®APIã¢ã¯ã»ã¹ãæŒããšç»é¢ãæšç§»ããã®ã§ãäžèšç»åã®æé ã§æ°èŠããŒãäœæããŸãã
以äžã§çµäºããšãŠãç°¡åã§ããã

DifyåŽã¯ããã§æºåå®äºã§ãã
次ã¯ã¢ã¯ã»ã¹ããã¯ã©ã€ã¢ã³ãåŽãäœã£ãŠãããŸãã
PythonåŽ
ã¢ã¯ã»ã¹æ¹æ³ã®ç¢ºèª
ãŸããæåã«ã©ãããã°APIã䜿ããã®ã確èªããŠãããŸãã
Difyã®APIã¢ã¯ã»ã¹ã®ããŒãžãã確èªãããšã以äžã®ãããªèšè¿°ããããŸãã
ãããèŠããšãªã¯ãšã¹ãããããŒã«APIããŒãå
¥ãããšæžããŠãããŸããã
ãªã¯ãšã¹ãããããŒã«ã€ããŠã¯ãã¡ããã©ååã®èªäœã¢ããªã§è§Šã£ãã°ã£ããã§ãããã¿ã€ã ãªãŒãªè©±é¡ã§å©ãããŸããã

requestsã©ã€ãã©ãªã§ã¢ã¯ã»ã¹
æ¹æ³ã®ç¢ºèªãã§ããã®ã§ãããªãã¿ã®requestsã©ã€ãã©ãªã䜿ã£ãŠã¢ã¯ã»ã¹ããŠã¿ãããšæããŸãã
APIã§ã¢ã¯ã»ã¹ããå šæ
æåã«å
šæã®æ¹ãå
¬éããŸãã
以äžã®ãããªããã°ã©ã ã§APIã«ã¢ã¯ã»ã¹ããããšãã§ããŸãã

ãªã¯ãšã¹ãã®å 容ã«ã€ããŠ
äžããé ã«ãšããããã¯ããªã¯ãšã¹ããæããè¡ã«ã€ããŠã話ãåºããæ¹ã話ããããã®ã§ããã®è¡ãåºæºã«è§£èª¬ããŠãããŸãã
resp = requests.post(f"http://{Server}/v1/completion-messages",headers=Headers,json=BodyData)ãŸããã¡ãã¯ããªãã¿requestsã©ã€ãã©ãªã§ãã¹ããã颿°ã§ããã
ã¢ã¯ã»ã¹å
ã¯âcompletion-messageâã«ãªããŸãã
ãã¡ãã«é¢ããŠã¯APIã¢ã¯ã»ã¹ã®è§£èª¬ããŒãžã§ç޹ä»ãããŠããŸãã
ãããŠãURLã ãã§ã¯ãªãããããŒãšããã£ãæå®ããŠãªã¯ãšã¹ããæããŠããŸãã

ããããŒã«ã€ããŠ
ããããŒã«ã€ããŠã¯ã以äžã®è¡ã§äœæããŠããŸãã
ãã¡ããAPIã¢ã¯ã»ã¹ã®ããŒãžããããæ¹ã玹ä»ãããŠããŸãã
ããã§å¿
èŠãªã®ã2ã€ã§1ã€ç®ãAPIããŒã®éšåã§ãã
"Authorization"ãšããããŒã«å¯ŸããŠ"Bearer "+APIããŒãšããå€ãå
¥ããŸãããããæå®ããããšã§ãŠãŒã¶ãŒèªèšŒãšãã©ã®ãã£ãããããã䜿ãããèå¥ãããããã§ããã
ãããŠãã1ã€ãã³ã³ãã³ãã¿ã€ãã§ãããã¡ãã«é¢ããŠã¯jsonãæå®ããŠãããŸãã
Headers = {"Authorization":f"Bearer {API_Key}","Content-Type": "application/json"}ããã£ã«ã€ããŠ
ãªã¯ãšã¹ãããã£ã¯ä»¥äžã®ãããªJSON圢åŒã§ãã
æåã«inputsã§ãããã«AIã«éãããã¹ããå
¥ããŸãã
次ã«response_modeã§ããæšä»ã§ã¯ãã£ããã®å¿çãéäžéãããŠããŠãã¡ãã»ãŒãžãå®äºããããšãå€ãã§ãããä»åã®ãªã¯ãšã¹ãã©ã€ãã©ãªã§ã¯ãã®æ¹æ³ã¯å°ããŸããå
šãŠã®åºåããŸãšããŠéã£ãŠãããããã«"blocking"ãæå®ããå¿
èŠããããŸãã
æåŸã«userã§ããããã¯ç¹ã«èšå®ããªãã®ã§é©åœã§å€§äžå€«ã§ãã
BodyData = {"inputs":{"query":msg},"response_mode":"blocking","user":"test"}ãªã¯ãšã¹ããšå¿çã«ã€ããŠ
å¿
èŠãªããããŒãšããã£ãäœã£ããããããå«ããŠãã¹ãããŸãã
æåã«ç޹ä»ãããã®è¡ã§ããã
resp = requests.post(f"http://{Server}/v1/completion-messages",headers=Headers,json=BodyData)çµæã¯JSON圢åŒã§è¿ã£ãŠããŸãã
äŸãã°ãæåã®ã¹ã¯ãªãããå®è¡ãããšã以äžã®ãããªçµæãåŸãããšãã§ããŸãã
{'event': 'message', 'task_id': '3ace2c3b-9d0e-4892-b0b0-d05670562822', 'id': 'ff05eb42-32e7-454f-97ff-531047bb8305', 'message_id': 'ff05eb42-32e7-454f-97ff-531047bb8305', 'mode': 'completion', 'answer': '**æŽçãããæç« **\n\n2024/05/1020:51\nä¿¡çšè²·ãå€ããªã\n\n2024/05/1021:12\n仿¥ã®æ¥æ¿ãªäžãäœã ã£ãã?\n\n2024/05/1021:27\né¢é£äŒç€Ÿã®æ±ºç®è¯ãã£ãã®ã§è²·ã ãŸãã', 'metadata': {'usage': {'prompt_tokens': 267, 'prompt_unit_price': '0.00', 'prompt_price_unit': '0.000001', 'prompt_price': '0.0000000', 'completion_tokens': 118, 'completion_unit_price': '0.00', 'completion_price_unit': '0.000001', 'completion_price': '0.0000000', 'total_tokens': 385, 'total_price': '0.0000000', 'currency': 'USD', 'latency': 2.1500106612220407}}, 'created_at': 1715495246}
#================#
**æŽçãããæç« **
2024/05/1020:51
ä¿¡çšè²·ãå€ããªã
2024/05/1021:12
仿¥ã®æ¥æ¿ãªäžãäœã ã£ãã?
2024/05/1021:27
é¢é£äŒç€Ÿã®æ±ºç®è¯ãã£ãã®ã§è²·ããŸãããŸããäžçªæ¬²ããAIããã®å¿çã«é¢ããŠã¯"answer"ã®äžèº«ã«å
¥ã£ãŠããŸãã®ã§ããããååŸããã ãã§OKã§ãã
ä»ã«ãå¿çãèŠãŠã¿ããšã䜿çšãããããŒã¯ã³ã«é¢ããæ
å ±ãªã©ãå«ãŸããŠããããã§ããããŸããä»åã¯åŸé課éå¶ã§ããªãã®ã§ãã®èŸºã¯ç¡èŠããŸãã
js = resp.json()
txt = js["answer"]æçµçãªã¯ã©ã¹
ä»åè¡ã£ãåŠçãã¯ã©ã¹ãšããŠäœæããã¡ãã»ãŒãžã ãå
¥åããã°è¯ãããŠã¿ãŸããã
ãµãŒããŒã®ã¢ãã¬ã¹ãšAPIããŒãå
¥ããŠã€ã³ã¹ã¿ã³ã¹ããŸãã
äžèšã³ãŒãã¯ææéšã«ãŠã³ãããå¯èœã§ãã

äœæããã¯ã©ã¹ã䜿ããšã以äžã®ããã«ãŸãšããããšãã§ããŸãã

Dify>py DifyTest.py
**æŽçãããæç« **
2024/05/1020:51
ä¿¡çšè²·ãå€ããªã
2024/05/1021:12
仿¥ã®æ¥æ¿ãªäžãäœã ã£ãã?
2024/05/1021:27
é¢é£äŒç€Ÿã®æ±ºç®è¯ãã£ãã®ã§è²·ããŸãããŸãšã
ä»åã¯APIã䜿çšããŠPythonãšé£æºããæ¹æ³ãèŠãŠãããŸããã
DifyåŽã«é¢ããŠã¯ãå
¥åã®æç€ºããã©ã¡ãŒã¿ãé©åã«èšå®ããããšã§ãç®çã®åºåãåŸãããšãã§ããŸãããä»åã¯ãŸã é©åœã¬ãã«ã§ãã®ã§ãæ¬åœã«æ¬²ããåºåã«ãŸã§ã¯è³ã£ãŠããŸããã
Pythonã«é¢ããŠã¯APIãªãã¡ã¬ã³ã¹ããã©ã®ããã«ã¢ã¯ã»ã¹ããã°APIã䜿çšã§ããã®ã確èªããŸãããéåžžã«ç°¡åã«äœ¿çšã§ããã®ããããããã§ããã
次åã¯ãæ²ç€ºæ¿ã®ã¹ã¯ã¬ã€ãã³ã°ãšåºå圢åŒã®å³æ Œååã³Discordã®botåã«ã€ããŠè§ŠããŠè¡ãããšæããŸãã
ããã§ã¯ãŸããäŒãããŸãããã
ã¯ã©ã¹
æçµçãªã¯ã©ã¹ã®éšåã§ç޹ä»ããã¯ã©ã¹ã®ããã¹ãããã³å®è¡åã®ããã¹ãã¯äžèšææéšã§ã³ãããå¯èœã§ãã
æã£åãæ©ãã³ããããããšããæ¹ã¯ãè²·ãäžããã ããã