Welcome to Portal

?Unknown\pull-down

Welcome to Zoho Cares

Bienvenido a Soporte de Zoho

Search our knowledge base, ask the community or submit a request.

Hi Everyone!
We have great news for all AI enthusiasts and ChatGPT users! The much anticipated Zobot integration with ChatGPT Assistant is now available with Plugs. 

Notes
Note:
  • SalesIQ offers native integration with OpenAI, supporting several ChatGPT models, including Assistant, under the ChatGPT card.
  • In this post, we’ll explore how to integrate ChatGPT Assistant with SalesIQ’s Zobot (Codeless Bot Builder) using Plugs
     for advanced customizations.

OpenAI has introduced 'ChatGPT Assistants' to customize GPT models as per your requirement. These Assistants work based on your data, instruction, files, functions and more, making it more susceptible to your needs. With Assistant, your SalesIQ bot can be more powereful than ever,  providing contextual assistance to your audience with data specifically exclusive for your business. 

Alert
Please ensure to have a ChatGPT Assistant in your OpenAI Platform to use this Plug.

Here's what the SalesIQ chatbot-Assistant brings to the table:
  • Targeted Responses: Your bot will be entirely specific to your business, ensuring a tailored experience for your audience, rather than relying on global data.
  • Omnichannel Availability: Bot works across all channels, including your mobile app, Website, Facebook, Instagram, WhatsApp, Telegram, and LINE.
  • Human-like conversations:  Engage your audience with natural, engaging interactions that feel human.
  • Always-on availability:  Provide 24/7 customer support with your bot, ready to engage with users anytime.


In this post, we will learn how to create a plug and connect your trained ChatGPT Assistant with your bot. 
Info
Are you new to SalesIQ? Click here to know about SalesIQ's chatbots and plugs

Plug Overview

The ChatGPT Assistant functions based on threads. Initially, you create a thread, add a message to it, and run the message to receive the Assistant's response. So, to integrate ChatGPT Assistant with the Codeless bot builder, we need two plugs.
  • Plug 1 - To create a thread (thread ID) using OpenAI API keys.
  • Plug 2 - To add a message to the thread using the thread ID, create a run and get the ChatGPT assistance's response. 


Info
Help guide to know more about how ChatGPT assistant works

How to build this Plug?

Step 1 - [Plug 1] Creating a thread for the visitor/user 
  • On your SalesIQ dashboard, navigate to Settings > Developers > Plugs > click on Add.
  • Provide your plug a name, and description, and select the Platform as SalesIQ Scripts. Here, we call this plug as ChatGPTAssistantsCreateThread
  • The first step in building the plug is defining the parameters. This plug aims to create a thread and get the thread ID as output. So, only the output parameter (threadID) is needed here. 


Copy the code below and paste it into your plug builder. Then, make the following changes. 
  • In line #2, replace your api_key (Navigate to the OpenAI developer section and click on API keys to create a new one)
  1. //ChatGPT api key
  2. api_key = "paste-your-api_key";
  3. //Header parameters
  4. headers = Map();
  5. headers.put("Authorization","Bearer " + api_key);
  6. headers.put("Content-Type","application/json");
  7. headers.put("OpenAI-Beta","assistants=v2");
  8. //This param is needed to use the V2 assistant apis
  9. // The following webhook will create a thread and return the thread id
  10. response = invokeurl
  11. [
  12. url :"https://api.openai.com/v1/threads"
  13. type :POST
  14. headers:headers
  15. ];
  16. response_json = response.toMap();
  17. thread_id = response_json.get("id");
  18. response.put("threadID",thread_id);
  19. return response;
  • Then, click Save, preview the plug and Publish it. 
Info
Reference:  OpenAI's Create a thread API

Step 2 - [Plug 2] Add a message to thread and get response 
  • From the previous plug, we will get the thread ID as output. 
  • Create a new plug, here we call this plug as ChatGPTAssistantsCreateRuns.
  • Pass the thread ID and the user/visitor input as input parameters. 
  • Once the plug is executed, we will get the ChatGPT Assistance's response, which is the output parameter. 
Input Parameters
  • Name: threadID | Type: String
  • Name: userInput | Type: String
Output Parameters
  • Name: assistantReply | Type: String


Copy the code below and paste it into your plug builder. Then, make the following changes. 
  • In line #2, replace your api_key (Navigate to the OpenAI developer section and click on API keys to create a new one.)
  • In line #3, replace your chatGPT_assistant_id (Navigate to the OpenAI developer scetion > Assistants > choose your Assistant and copy the Assistance ID.


  1. //ChatGPT api key
  2. api_key = "paste-your-api_key";
  3. chatGPT_assistant_id = "asst_4DuWZxC0RNagq0b8pnml4ZPf";
  4. //Header parameters
  5. headers = Map();
  6. headers.put("Authorization","Bearer " + api_key);
  7. headers.put("Content-Type","application/json");
  8. headers.put("OpenAI-Beta","assistants=v2");
  9. //Get the thread ID from the plug input parameters
  10. thread_id = session.get("threadID").get("value");
  11. user_input = session.get("userInput").get("value");
  12. info thread_id;
  13. info user_input;
  14. // Messages API call
  15. requestBody = Map();
  16. requestBody.put("role","user");
  17. requestBody.put("content",user_input);
  18. jsonRequestBody = requestBody.toString();
  19. // The following webhook posts a message to the conversation thread
  20. response = invokeurl
  21. [
  22. url :"https://api.openai.com/v1/threads/" + thread_id + "/messages"
  23. type :POST
  24. parameters:jsonRequestBody
  25. headers:headers
  26. ];
  27. info response;
  28. // Runs API call
  29. requestBody = Map();
  30. requestBody.put("assistant_id",chatGPT_assistant_id);
  31. jsonRequestBody = requestBody.toString();
  32. // The following runs the thread which inturn generates a response once the thread is completed
  33. response = invokeurl
  34. [
  35. url :"https://api.openai.com/v1/threads/" + thread_id + "/runs"
  36. type :POST
  37. parameters:jsonRequestBody
  38. headers:headers
  39. ];
  40. response_json = response.toMap();
  41. run_id = response_json.get("id");
  42. run_status = "queued";
  43. retry_count = {1,2,3,4,5};
  44. for each  retry in retry_count
  45. {
  46. if(run_status != "completed")
  47. {
  48. // The above executed run takes few seconds to complete. Hence a considerable time has to be left before the run is completed and the messages are fetched from the thread can be fetched. Here we wait for 3 seconds assuming the run gets complete within 3 seconds
  49. getUrl("https://httpstat.us/200?sleep=3000");
  50. response = invokeurl
  51. [
  52. url :"https://api.openai.com/v1/threads/" + thread_id + "/runs/" + run_id
  53. type :GET
  54. headers:headers
  55. ];
  56. response_json = response.toMap();
  57. run_status = response_json.get("status");
  58. }
  59. }
  60. // The following webhook fetches the messages from the thread
  61. getmsg_url = "https://api.openai.com/v1/threads/" + thread_id + "/messages";
  62. response = invokeurl
  63. [
  64. url :getmsg_url
  65. type :GET
  66. headers:headers
  67. ];
  68. info response;
  69. response_json = response.toMap();
  70. // Getting the last message from the thread messages list which is the assistant response for the user input.
  71. assistant_response = response_json.get("data").get("0").get("content").get("0").get("text").get("value");
  72. info assistant_response;
  73. response = Map();
  74. response.put("assistantReply",assistant_response);
  75. return response;
  • Then, click Save, preview the plug and Publish it. 

Step 3 - Adding plugs to the Codeless bot builder
  • Navigate to Settings > Bot > Add, provide the necessary information, and select Codeless Bot as the bot platform. You can also open an existing bot.
  • Next, click on Plugs under Action cards, select the first plug (ChatGPTAssistantsCreateThread), and provide a name to save the output (thread_id).

  • Use the visitor fields card, click save in bot context, and provide a name to store the visit
  • Then, select Plug 2 (ChatGPTAssistantsCreateRuns) and pass the value for the parameters
    • thread_id (Input) - The output of the previous Plug
    • user_input (Input) - The visitor's question/input from visitor fields card. 
    • assistant_reply (Output) - The final response from the ChatGPT assistance. 

  • Finally, use any response/input card to display the response to the visitor by typing the % to get the context variable (%assistant_reply%) in the message text box. Here, the button card is used along with the follow-up actions. 
Alert
Note: 
  • The ChatGPT Assistant APIs are still in beta, so it's better to have a fallback flow in the bot until they are stable. 
  • Manage the plug failure instances within the plug failure leg by directing your users to operators using the "Forward to Operator" card or use the "Busy response" card to get the user's question, put them on the missed chats. Additionally, you can also "Send Email" card to notify yourself about the user's inquiry. 

  • The buttons, "I've another question", is used to get next question from the visitor. Use a Go To card and route it to visitor fields card to ask next question. 

I hope this was helpful. Please feel free to comment if you have any questions. I'll be happy to help you. 

Best regards
Sasidar Thandapani

7 users like this announcement.
39 Replies
Reply
27 more

Some idea, haven't done it personnally :
Transfert the PDF in text file using one of the many services available, I bet it can be done in batch.
Use gtp to remove unwanted information from the text files.
Since there is a lot of files, many use makes.com with gtp like to upload https://www.youtube.com/watch?v=ac3A__l20GA&t=420s

I had considered that but I didn't want to spend much time on it until I could get the chats out of Zoho that I wanted to use (based on date, agent, rating).  

Attached is what an export looks like.  

I'm not even sure how practical it is to train the bot on chats.  With KB's, you have a Question and an Answer but with chats, you often times have a lot of questions and clarification and even some confusion before the agent understands the issue and provides an appropriate response.

Thoughts?

chat.png
chat.png67 KB

True, if you have a good KB's with a lot of info, I would think it's more valuable to train the IA than chats that are probably badly written.

so far we've been using KB as well. We use the chats to identify what articles to create, then load the articles in the vector store. 

chatgpt will also give you some ideas for how to do this effectively. 

  • 7 months ago

Thank you for this. It's very helpful. I have a question. The bot fails when a file is submitted by the visitor. Is there a way to avoid this and push the file to ChatGPT?

Hi Sasidar, 

Thanks for this post. I followed your steps and the bot is working perfectly. I would like to build another version where it is more of a virtual assistant. So the chats become more conversational and some visitor replies will ask the visitor questions to find the right solution. Once the visitor answers it needs to add it into the thread. 

How can I go about this? 


When in test mode, I cannot pass through the Create Run to a correct path...it always goes to Error.

How can I solve this? where is my error?

error.png
error.png402 KB

I was able to pass the create run error. But, when I test the bot, I ask a first question for help. It answers correctly, but then, it offers me for more help, but it doesn´t matter what I ask, it still answers the same first answer to my first question. What is wrong?

  • 6 months ago

I've done everything here, but what I get back is the question I ask. After adding multiple infos into plug code, I am able to determine the source of the problem: 

ChatGPTAssistantsCreateRuns plug has a request to run the thread with the given assistant_id. That request returns this error: {"error":{"message":"No assistant found with id 'asst_xxxxxxx'.","type":"invalid_request_error","param":null,"code":null}}. 

We definitely have an assistant with that id. After searching online a little bit, I've stumbled upon this thread: https://community.openai.com/t/no-assistant-found-with-id-asst/563027. One possible reason here is case sensitivity with the assistant id. Not an issue with the plug.

Another possibility is organization id is missing from the header. I've added that one. Still not a solution.

Some say the assistant created in the playground is not visible with API calls, so you need to create the assistant with API as well. Haven't tried this one yet.


Accepted solution also recommends creating the Assistant with API, then using its ID. Guess will try this one. 

But if anyone has seen this issue and solved it, please post it here, so we can all learn about it.

  • Creator Certified Developer - Associate
  • 5 months ago

Dear Sasidar,

While testing the conversation with the ChatGPT assistant, we encountered the expressions (【4:0†......ChatGPT.docx】, 【4:8†source】, etc.) shown within the red boxes in the attached images.

We are aware that Zoho SalesIQ does not cause this situation, but that there are such expressions in the response returned by OpenAI and that this is reflected to the SalesIQ ChatBot.

However, when we wanted to remove these expressions in the Deluge function, we applied the following methods but were not successful.

info response.replaceAll("\\【[A-Z a-z 0-9]+\\:[A-Z a-z 0-9]+\\†+[A-Z a-z 0-9]+\\.[a-z]+\\】","").replaceAll("\\【[A-Z a-z 0-9]+\\:[A-Z a-z 0-9]+\\†+[A-Z a-z 0-9]+\\】+","");

These expressions vary for bots and bot-related resources. Therefore, we cannot select and replace a specific value.

You or another client may have encountered this situation and found a solution. Could you please help us remove these expressions from the returned reply?

Thank you in advance for your support.

OpenAIResponse.png
OpenAIResponse.png208 KB
ChatBot.png
ChatBot.png1 MB
  • 3 months ago

Hello, I would like to know if the 'Assistant' feature can also be incorporated into a Zoho CLIQ Bot?

  • 3 months ago

You can check this link for that: 

This one is for chatting with the bot directly. If you want it to participate in channels, then you need to do additional setup. I've commented there about that setup as well. Can check it there.

Hope it helps.

Reply to Sasidar ThandapaniA
/* */
  • 12
  • Insert
  • Plain text
Add Comment
(Up to 20 MB )
    Stats
    35 followers
    39 replies
    9818 views
    Follow

    Subscribe to receive notifications from this topic.