You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
swarms/playground/demos/swarm_hackathon/OpenMind.bot.py

115 lines
3.1 KiB

# OpenMind.bot streamlines social interactions between personalized bots, representing users, media, and influencers, ensuring meaningful exchanges. It eliminates misunderstandings by using context-aware conversations, followed by summaries or audio recaps of these interactions for efficient communication.
import datetime
10 months ago
import json
10 months ago
import pytz
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/api/v1/conversations", methods=["POST"])
def create_conversation():
# Create a new conversation
conversation = {
"user_id": request.json["user_id"],
"bot_id": request.json["bot_id"],
"messages": [],
}
# Save the conversation to the database
with open("conversations.json", "w") as f:
json.dump(conversation, f)
return jsonify(conversation)
@app.route("/api/v1/conversations/<conversation_id>", methods=["GET"])
def get_conversation(conversation_id):
# Get the conversation from the database
10 months ago
with open("conversations.json") as f:
conversation = json.load(f)
# Return the conversation
return jsonify(conversation)
@app.route(
"/api/v1/conversations/<conversation_id>/messages",
methods=["POST"],
)
def create_message(conversation_id):
# Create a new message
message = {
"user_id": request.json["user_id"],
"bot_id": request.json["bot_id"],
"text": request.json["text"],
"timestamp": datetime.datetime.now(pytz.utc).isoformat(),
}
# Get the conversation from the database
10 months ago
with open("conversations.json") as f:
conversation = json.load(f)
# Add the message to the conversation
conversation["messages"].append(message)
# Save the conversation to the database
with open("conversations.json", "w") as f:
json.dump(conversation, f)
return jsonify(message)
@app.route(
"/api/v1/conversations/<conversation_id>/messages",
methods=["GET"],
)
def get_messages(conversation_id):
# Get the conversation from the database
10 months ago
with open("conversations.json") as f:
conversation = json.load(f)
# Return the messages
return jsonify(conversation["messages"])
@app.route(
"/api/v1/conversations/<conversation_id>/summary", methods=["GET"]
)
def get_summary(conversation_id):
# Get the conversation from the database
10 months ago
with open("conversations.json") as f:
conversation = json.load(f)
# Create a summary of the conversation
summary = ""
for message in conversation["messages"]:
summary += message["text"] + "\n"
# Return the summary
return jsonify(summary)
@app.route(
"/api/v1/conversations/<conversation_id>/audio_recap",
methods=["GET"],
)
def get_audio_recap(conversation_id):
# Get the conversation from the database
10 months ago
with open("conversations.json") as f:
conversation = json.load(f)
# Create an audio recap of the conversation
audio_recap = ""
for message in conversation["messages"]:
audio_recap += message["text"] + "\n"
# Return the audio recap
return jsonify(audio_recap)
if __name__ == "__main__":
app.run()