以下のコードをcloud functionsで実行し、slack上で実行するものの、botからの回答内容を再度Chatgptに渡して返信を返すループとなってしまいます。
Chatgptなどを使い、ユーザーからメンションされたものを絞るように指示するものの、うまくいかず、もしslack apiの知見があり、この課題について解決方法がわかる方がいましたら、教えていただきたいです。
よろしくお願いします。
python
1import os 2import json 3import openai 4from flask import jsonify, request 5from slack_sdk import WebClient 6from slack_sdk.errors import SlackApiError 7 8openai_api_key = "apitoken" 9SLACK_BOT_TOKEN = "token" 10 11def mention_handler(request): 12 if request.method != "POST": 13 return "Only POST requests are accepted", 405 14 15 data = request.get_json() 16 17 if not data or "event" not in data: 18 return "Invalid request", 400 19 20 event = data["event"] 21 22 if "bot_id" in event: 23 return "Ignoring bot events", 200 24 25 if event.get("type") == "app_mention" and "text" in event: 26 try: 27 openai.api_key = openai_api_key 28 assist1 = "" 29 30 # メンション部分を削除 31 user_input = event["text"].split(" ", 1)[1] 32 33 response = openai.ChatCompletion.create( 34 model="gpt-4", 35 messages=[ 36 {"role": "system", "content": "あなたは先生です。テキストを渡すので子供でもわかるような文章に修正してください。"}, 37 {"role": "assistant", "content": assist1}, 38 {"role": "user", "content": user_input}, 39 ], 40 n=1 41 ) 42 43 corrected_text = response["choices"][0]["message"]["content"] 44 45 client = WebClient(token=SLACK_BOT_TOKEN) 46 response = client.chat_postMessage(channel=event["channel"], text=corrected_text, thread_ts=event["ts"]) 47 except SlackApiError as e: 48 print(f"Error: {e}") 49 return "Error sending message", 500 50 51 return "Mention handled", 200 52 53
