GPTTeams: How I Used OpenAI to Empower Team Collaboration

Hello,

My team has been regular use ChatGPT, and over the past 2 years, we’ve eagerly awaited additional features to enhance our workflow.

In response to these needs, I developed GPTTeams.ai—a platform aimed at revolutionizing team collaboration using advanced AI models like those from OpenAI :fire:.

My primary challenge was ensuring our AI could accurately understand diverse team communications across various topics while facilitating real-time collaboration. This involves providing instant updates and seamless communication across chats, documents, tools etc, using WebSockets technology:

    const eventName = `XXXXX_${selectedChatId}`;
    const handleMessageUpdate = (data: string) => {
      const parsedData = JSON.parse(data);
    
      setChatMessages((prevMessages) => {
        let updatedMessages = [...prevMessages];
    
        if (!parsedData.isEditing) {
          parsedData.messagesData.forEach((newMessageData: any) => {
            const messageIndex = updatedMessages.findIndex((msg) => msg.message.id === newMessageData.message.id);
            if (messageIndex > -1) {
              updatedMessages[messageIndex] = newMessageData;
            } else {
              updatedMessages.push(newMessageData);
            }
          });
        } else {
          const messageIndex = updatedMessages.findIndex((msg) => msg.message.id === parsedData.messageId);
          if (messageIndex > -1) {
            updatedMessages = updatedMessages.map((msg) =>
              msg.message.id === parsedData.messageId ? { ...msg, message: { ...msg.message, content: parsedData.editedContent } } : msg
            );
          }
        }
    
        scrollToBottom()
        setIsAtBottom(true)
        return updatedMessages;
      });
      
    };

 //Rest code.....

  return chatMessages
    .sort((a, b) => a.message.sequence_number - b.message.sequence_number)
    .map((chatMessage, index, array) => {
      const messageFileItems = chatFileItems.filter(
        (chatFileItem, _, self) =>
          chatMessage.fileItems.includes(chatFileItem.id) &&
          self.findIndex(item => item.id === chatFileItem.id) === _
      )

      return (
        <Message
          key={chatMessage.message.sequence_number}
          message={chatMessage.message}
          fileItems={messageFileItems}
          isEditing={editingMessage?.id === chatMessage.message.id}
          isLast={index === array.length - 1}
          onStartEdit={setEditingMessage}
          onCancelEdit={() => setEditingMessage(undefined)}
          onSubmitEdit={handleSendEdit}
        />
      )
      
    })


I spent 3 months working with OpenAI models like GPT-3.5 and GPT-4. to improved how these AI models understands and personalizes responses based on team member preferences.

              <div className="space-y-1">
                <Label className="text-sm">
                  What would you like the AI to know about you to provide better
                  responses?
                </Label>

                <TextareaAutosize
                  value={profileInstructions}
                  onValueChange={setProfileInstructions}
                  placeholder="Profile context... (optional)"
                  minRows={6}
                  maxRows={10}
                />

                <LimitDisplay
                  used={profileInstructions.length}
                  limit={PROFILE_CONTEXT_MAX}
                />
              </div>

I used memory capabilities—both short-term and persistent—to keep costs low while maintaining high performance. Also using words like “Memorize, learn etc”, it helps to capture and remember key information better, delivering accurate and relevant responses efficiently.

Real Use Case:

Imagine a marketing professional responsible for ensuring the tone of cold emails aligns with specific criteria based on the company agenda. By entering all these preferences into a personalized profile context (you can also include a whole workspace profile context), you guide the AI to craft responses that meet these criteria and reduce costs over time as it keeps learning about the entire team.

PS: Of course, you can disable this feature in few chats that don’t need such an option.

Testimonial from Arjun Zane (AI Marketing Specialist) :star_struck:
As a marketer, I’m selective about my AI tools. I switched to GPTTeams from another platform, drawn by its chat feature’s potential to simplify complex ideas. GPTTeams exceeded my expectations in crafting concise content, providing a seamless experience.


Although delivering accurate responses is crucial, teams also require additional features, so we also implemented:

  • Efficiently manage chats, prompts, bots, tools, and presets with organized folders.
  • Define permissions across workspaces to control visibility and access rights.
  • Create personalized AI bots tailored to specific data and interaction needs.
      createState={
        {
          image: selectedImage,
          user_id: profile.user_id,
          name,
          description,
          include_profile_context: assistantChatSettings.includeProfileContext,
          include_workspace_instructions:
            assistantChatSettings.includeWorkspaceInstructions,
          context_length: assistantChatSettings.contextLength,
          model: assistantChatSettings.model,
          image_path: "",
          prompt: assistantChatSettings.prompt,
          temperature: assistantChatSettings.temperature,
          embeddings_provider: assistantChatSettings.embeddingsProvider,
          files: selectedAssistantRetrievalItems.filter(item =>
            item.hasOwnProperty("type")
          ) as Tables<"files">[],
          collections: selectedAssistantRetrievalItems.filter(
            item => !item.hasOwnProperty("type")
          ) as Tables<"collections">[],
          tools: selectedAssistantToolItems
        } as TablesInsert<"assistants">
      }
  • Quickly extract information from documents using OpenAI embedding features.
  • Compile and organize information for easy team access and reference through knowledge bases.
  • Create external data extraction tools through custom plugins for tailored solutions. For example integrate Dall-E 3:
{"Authorization":"Bearer API_KEY"}
SCHEMA
{
  "openapi": "3.1.0",
  "info": {
"title": "Dall-E 3",
    "description": "Generate Images",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://api.openai.com"
    }
  ],
  "paths": {
    "/v1/images/generations": {
      "post": {
        "description": "Generate Images",
        "operationId": "generateImage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string",
                    "description": "dall-3-e"
                  },
                  "prompt": {
                    "type": "string",
                    "description": ""
                  },
                  "size": {
                    "type": "string",
                    "description": "512x512"
                  },
                  "n": {
                    "type": "integer",
                    "description": "1"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {}
  }
}

Looking forward to hearing your thoughts and feedback!


As a gesture of appreciation to this community, I’m delighted to offer the first 20 users a free one month subscription with unlimited features. Feel free to send us a DM! :star_struck:

3 Likes

Awesome!! Thank you! So much!

1 Like

Heyaa !!! It seems that I don’t have the required permissions to generate images. Is there something else I can help you with, perhaps describing the scene in detail or another type of assistance?

@noumanjavaid Thanks for trying out GPTTeams.

After reviewing your tool, I noticed that you were missing ‘Bearer’ (I fixed it for you).

It should be something similar to this:
CustomHeader

Fixed it

How can I add tool code_interpreter to create files?

1 Like

@noumanjavaid I would love to have a call with you now if you are available so I can help you better. :innocent:

Sure Let’s start it at the 30 minute mark of the next hour as I am just going to have lunch now ?

Which timezone are you in Btw?

1 Like

@noumanjavaid Sure!

Few minor changes to check:

  • Change “Dall-E 3” to “dall-e-3” in the model description.
  • Keep the prompt empty so the tool will use the one that you entered in the text input.

RESULT: