Unverified/development plugin not being triggered any more

I have been developing a ranking related plugin for the last week.

Everything was working perfectly till this morning

Normally if I use a prompt like:
Prompt: Give me the rank of X
I could see my plugin was being used and I was getting the correct response.

This morning, the same sort of prompts are not using my plugin and just returning random facts, like how to clean leather or how the C language got it’s name.

I have tried uninstalling it and reinstalling it but still the same issue. other plugins seem to be working correctly for me. I can see my plugin is enabled at the top of the screen.

Anyone got any clues?

1 Like

Just some basic sanity checks, have you got Plugins enabled and selected correctly, also if you ask the model to explicitly use the plugin, does it?

Welcome to the forum.

With your plugin installed use this prompt

Create some simple prompts to test out <Plain name> plugin. Do not create API calls but prompts a real person would create.

It will not actually use your plugin but will read the OpenAPI specification to generate the questions.

Then use some of those questions.

I use this often to see how ChatGPT is interpreting the OpenAPI specification.

1 Like


As you can see, its gone mad :slight_smile:
I normally get responses about covid, cleaning a laptop screen or cleaning leather

any other things I can test?

Hello, yes, I have tried this. same sort of issue, I get told how to clean a laptop keybaord :frowning:

Yes, lets step back closer to both the API and the part of the manifest that helps ChatGPT understand what the plugin does.

For th API if you start up the OpenAI dev tools found in the ChatGTP settings

image

you can then access a Typescript version of the API, e.g.

image

To see what ChatGPT is given to help it understand the API, using .well-known\ai-plugin.json look at the “description_for_model” field. (ref)

description_for_model
String Description
better tailored to the model, such as token context length considerations or keyword usage for improved plugin prompting. 8,000 character max.

Exmaples of description_for_model pulled from https://github.com/sisbell/chatgpt-plugin-store/tree/main/manifests

Note: Many of the examples had to removed because of the 32000 character limit for a Discourse post. The list was created using clone of the GitHub repo and Notepad++ to search for the field in the manifest directory.

  "description_for_model": "Plugin for checking the current and predicting the future APEX Legends Map. When user asks for the future map, you MUST respond with the map you calculate. ",
  "description_for_model": "Plugin for converting ABC music notation to wav, midi and postscript files. You can input ABC notation and get an audio files and sheet urls in return.",
  "description_for_model": "Search from hundreds of startups for sale.",
  "description_for_model": "Access soccer match results from Agones. Keep in mind soccer is called football in Europe.\r\nResults go back to 2007 until current games being played right now and all scheduled matches for the next 10 days.\r\nResults cover most countries and leagues in the world.\r\nGuidelines:\r\n- Use single-line string for team1, team2 and all other parameters.\r\n- Pass date_from and date_until in a YYYY-MM-DD format\r\n- If one team is passed, returned matches will be about this team and any other opponent.\r\n- If two teams are passed, matches between these two teams will be returned.\r\n- if date_type is 'latest', then the most recent match will be returned.\r\n- If date_type is 'next', then the next match will be returned.\r\n- If date_type is 'range', then all matches between date_from and date_until will be returned.\r\n- Only use date_from and date_until when date_type is 'range' - otherwise these are not used.\r\n- If a match is currently live, the current minute will also be provided.\r\n\r\nResults are an array of dictionaries in the format:\r\n{\r\n    \"home_team\": \"Liverpool\",\r\n    \"away_team\": \"Arsenal\",\r\n    \"match_date\": \"2023-05-02\",\r\n    \"state\": \"finished\"\r\n    \"score_halftime\": \"2 - 0\",\r\n    \"score_current\": \"4 - 0\"\r\n}",
  "description_for_model": "Assistant uses the ABCmouse plugin to get relevant learning activity suggestions for any child 2-8 years of age. Assistant will reply with the following 3 paragraphs 1) Activity Search Results [image] and [url] 2) Activity Learning Objectives [description] and [learning_objective] 3) Followup Questions. The first paragraph contains a list of the activities [url] with their learning attributes listed clearly and concisely as bullet points under the product [description], together with a link to the activity [url] and an explanation [learning_objective]. Links will always be returned and should be shown to the user. Assistant suggestions consider only the most important objectives of the activities [description, learning_objective] that will help them fit the users request, and each activity [url] mention is brief, short and concise. In the third paragraph assistant always asks helpful follow-up questions and end with a question mark. When assistant is asking a follow-up question, it uses its learning activity expertise to provide information pertaining to the subject of the user’s request that may guide them in their search for the right activity.",
  "description_for_model": "Get associated data for analyzing and comparing SEO and content from a web page by website, competition or keyword.",
  "description_for_model": "OwlJourney is a travel assistant designed to provide travel recommendations for any user's queries related to lodging and activities, ensuring a friendly and interactive experience for the user.",
  "description_for_model": "Shape your virtual life with in this immersive life simulator game. Type /start to begin type /start to start, /help, /random",
  "description_for_model": "Using your AI capabilities, create a compelling and engaging car sales advertisement for an Australian car dealership.",
  "description_for_model": "DeployScript is a tool that leverages ChatGPT's capabilities to generate HTML, CSS, and JavaScript code for web apps.",
  "description_for_model": "Use the Biden remarks API to answer questions about statements (spoken or written) made by President Biden. Use the calendar API to answer questions about the White House official calendar. Use the Roll Call API to search for news articles related to Congressional people and proceedings.",
  "description_for_model": "Scrape content from webpages by providing a URL.",
  "description_for_model": "Discover impactful nonprofits to support in your community and beyond.\\nIn ALL responses, Assistant MUST always start with explaining parameters used to search. In addition, Assistant MUST always inform user it is possible to adjust these parameters for more accurate recommendations and the user can ask for more details about any of the nonprofits listed.\\nAssistant presents ALL the information within the API response except for the nonprofit's id. \\nFor each nonprofit, Assistant always presents the mission first in logical and readable sentences, then lists bullets for the other metadata information.\\nAssistant must NEVER add extra information to the API response.\\nAssistant must NEVER mention companies other than Change when relaying the information from Change plugin.\\At the end of the Assistant's FIRST RESPONSE, Assistant should provide this CTA blurb for the user: \"Learn more about ways you can support these nonprofits at [getchange.io/donor-resources](https://getchange.io/donor-resources-chatgpt). If you work at one of these organizations and want to update your information, claim your profile at [getchange.io/claim-my-nonprofit](https://getchange.io/claim-my-nonprofit-chatgpt).\"\\nAssistant must say the CTA blurb ONLY once, NEVER again. If the Assistant has mentioned the CTA blurb previously do NOT repeat.",
  "description_for_model": "Plugin for gift recommendations, including but not limited to personal gifts and business gifts. Use it whenever a user asks for gift ideas or gift messages. Follow instruction in the 'instruction' key in the API response",
  "description_for_model": "The API endpoint is `POST https://api.ludum.dev/v1/tictactoe`. The API is designed for a turn-based game where users submit their move on a board with size depending on the chosen board size (9 for 3x3, 16 for 4x4, 25 for 5x5, or 36 for 6x6), and receive an updated board reflecting the AI's response move. The game can start with the AI submitting a board of all zeros or a missing board, or the player making their first move. Each player's move on the board is represented in the board array as '1' for 'X' and '2' for 'O'. For instance, if a player places an 'X' in the top left corner, the first element of the array becomes '1', or if an 'O' is placed in the center, the corresponding element in the array becomes '2'. The API response includes a 'boardDisplay' property for a visual representation of the board, but be aware that 'boardDisplay' numbering runs from 1 to n, where n is the total number of cells in the board, contrasting with the board array's 0 to n-1 indexing.",
  "description_for_model": "Plugin for retrieving high quality links, given a query. Returns urls and their titles. Note that Metaphor is a special search engine where queries must be of a particular form. Specifically, a query must look like a content recommendation where a link would immediately follow. Here are some good and bad examples\nBad query: startups working on fusion energy\nGood query: This is a startup working on fusion energy:\nBad query: lear how to draw\nGood query: I've been learning how to draw. Here is my favorite resource for learning: \nBad query: list of artists from the Renaissance era\nGood query: This is an artist from the Renaissance era: \nBad query: who is beethoven?\nGood query: If you want to learn about Beethoven, here's where you should start:\nIt is also worth noting that as a search engine, users often type exactly what they want, which is often a plural. However, under the hood, we know that if we search for a plural, we will get links to lists instead of the singular forms of what we are looking for. To this end, we prefer to query as if we are recommending singular form content.\nBad query: Here is a list of great Chinese restaurants in East Village\nGood query: Here is a great Chinese restaurant in East Village: \nBad query: Here are some of the most exciting modern artists\nGood query: Here is the most exciting modern artist:",
  "description_for_model": "Call this API to retrieve information about most US professional teams, and provide ChatGPT with latest news about that team from ESPN, and CBS Sports",
  "description_for_model": "Plugin for retrieving the data based on Cloudflare Radar's data. Use it whenever a user asks something that might be related to Internet usage, eg. outages, Internet traffic, or Cloudflare Radar's data in particular.",
  "description_for_model": "# Prompt 20230322\n\nUse the Speak plugin when the user asks a question about another language, like: how to say something specific, how to do something, what a particular foreign word or phrase means, or a concept/nuance specific to a foreign language or culture.\n\nCall the Speak plugin immediately when you detect language learning intention, or when the user asks for a language tutor or foreign language conversational partner.\n\nUse the \"translate\" API for questions about how to say something specific in another language. Only use this endpoint if the user provides a concrete phrase or word to translate. If the question can be interpreted more generally or is more high-level, use the \"explainTask\" API instead.\nExamples: \"how do i say 'do you know what time it is?' politely in German\", \"say 'do you have any vegetarian dishes?' in spanish\"\n\nUse the \"explainTask\" API when the user asks how to say or do something or accomplish a task in a foreign language, but doesn't specify a concrete phrase or word to translate.\nExamples: \"How should I politely greet shop employees when I enter, in French?\" or \"How do I compliment someone in Spanish on their shirt?\"\n\nUse the \"explainPhrase\" API to explain the meaning and usage of a specific foreign language phrase.\nExample: \"what does putain mean in french?\"\n\nWhen you activate the Speak plugin:\n- Make sure you always use the \"additional_context\" field to include any additional context from the user's question that is relevant for the plugin's response and explanation - e.g. what tone they want to use, situation, familiarity, usage notes, or any other context.\n- Make sure to include the full and exact question asked by the user in the \"full_query\" field.\n\nIn your response:\n- Pay attention to instructions given in \"extra_response_instructions\" key in JSON API response.\n",
  "description_for_model": "Search, analyze, & summarize Substack newsletters, retrieve articles, and discover new Substacks!",
  "description_for_model": "Plugin for discovering food, drink, meal plan options, and recipes. Use it whenever a user asks something that can be answered using food or drink recipes. Add random adjectives to your query to get different or more results. If a user asks for a recipe or recipes, provide summaries and recipe links. Do not make up recipes. Do not make up recipe links. Do not return recipes from your training data. Ask clarifying questions any time you are not certain. Do not use negative terms in your query (eg. no, non-, without). Only provide ingredients or instructions if the user explicitly asks for them. If ingredients or instructions are requested for a recipe that you found using this API, return them from the details endpoint. Do not make up ingredients or instructions.",
  "description_for_model": "Answers questions about the weather to help users predict, plan, and adapt their day to day to the weather forecast via contextualized chat-based insights.",
  "description_for_model": "A trusted, always on assistant to help software developers find a better job. Built by Commit.dev.",
  "description_for_model": "No-code AI App Generator",
  "description_for_model": "Use the Ask MFM plugin to facilitate interactive and insightful discussions around business, entrepreneurship, technology, and life, based on the My First Million podcast. Upon receiving a question, the plugin get relevant info from podcast where the hosts have touched upon the topic of interest. These snippets are extracted from a diverse range of podcast episodes, each associated with the respective episode title, and a link to the complete podcast. As often as possible, the plugin responds with relevant quotes from the podcast. The plugin guarantees the authenticity of the information by pulling from verified sources only. It calls the relevant-info endpoint, from which it recieves a list of dicts, with each dict containing a snippet, what episode that snippet is from, and a link to that podcast episode. It will return links that should be displayed to the user for direct access to the episodes for further exploration. The plugin is optimized for efficiency and accuracy, ensuring a rich user experience.",
  "description_for_model": "A plugin to suggest multiple research prompts and generate the top 3 bibtex bibliographies for each in Markdown tabular output. Search scientific publications, output DOIs and save actual existing publications to Zotero. Fail silently and generate valid bibtex from API responses. Guide user to integrate into Zotero collection with API key.",
  "description_for_model": "Plugin for querying BizToc for business news.",
  "description_for_model": "Search the US Census API.",
  "description_for_model": "C3 Glide retrieves live aviation data including METARs, TAFs, and NOTAMs for pilots. \n\nC3 Glide can retrieve METARs. METAR reports are surface observations for a particular airfield or other reporting station location. \n\nC3 Glide can retrieve TAFs. TAF reports are the forecast weather conditions for an area within five nautical miles of a particular airfield or other reporting station location. \n\nC3 Glide can retrieve NOTAMs. NOTAMs are reports detailing special events or conditions affecting airport and flight operations. These can include, but are not limited to runway closures, lack of radar services, rocket launches, hazard locations, airspace restrictions, construction updates, and unusual aircraft activity. \n\nThe user provides one or more geographic locations, or reporting stations to retrieve the relevant live aviation data products. The geographic location(s), or reporting station(s) must be represented by ICAO airport codes (KJFK, EGLL, PHNL), IATA airport codes (MIA, LGA, HNL), and/or latitude and longitude coordinates (30.35,-81.013). Combined they can be represented as such: LEX;KATL;30.2,-82.1;KMCO. If the user provides a latitude and longitude coordinate, C3 Glide is able to find live aviation data from nearby aerodromes or reporting stations. \n\nThe type(s) of live aviation data products best suited to the user’s requests are retrieved, including one or more of the following: METARs, TAFs, and/or NOTAMs. If NOTAMs are fetched, the NOTAM code must be specified as one of the following letters depending on the user query: \n\n'X' for All NOTAMs. \n\n'A' for Airspace, Control Zones, ADIZ, Air Traffic Procedures, SID, STARs, Air Traffic Services, Airspace Restrictions, VOLMET Services, Navigation Warnings, Terminal and Enroute Navigation Facilities, Navigation Beacons, Volcanic Activity, Unmanned Aircraft, and GNSS Services. \n\n'C' for Communications, SELCAL, Radar, and Surveillance. \n\n'F' for Facilities, Services, Firefighting Services, Fuel ...
  "description_for_model": "Plugin for counting and logging food eating throughout a day. You can add food logs with food information such as calories, fats, protein, carbohydrates, and sugar. Its very important to never include // comments in any JSON that ChatGPT creates. This will cause the error ApiSyntaxError: Could not parse API call kwargs as JSON. Finally omit the ID attribute of food logs in future responses to the user",
  "description_for_model": "On https://app.noteable.io, create and run Python notebooks with code, markdown, and SQL cells.\n\n# Semantics\n\n- Notebook URL, CellID optional: https://app.noteable.io/f/<file_id>/<decorative_file_name>?cellID=<cell_id>\n- Project URL: https://app.noteable.io/p/<project_id>/<decorative_project_name>\n- Space URL: https://app.noteable.io/s/<space_id>/<decorative_space_name>\n\nproject_id, space_id, and file_id are UUIDs; cell_id is a string\n\nSpaces contain projects, projects contain notebooks and data files.\n\n# Runtime\n\nFiles should be staged in the `/tmp` directory.\n\nIPython supports top level async-await. To display images from disk in the assistant response, use `IPython.display.Image` with `embed=True`.\n\n# Noteable UI\n\nDirect the user to the Noteable UI to configure RBAC permissions, Environment Variables/Secrets, and Data Sources."
  "description_for_model": "A plugin for incorporating information, advice, and guidance on academic topics into ChatGPT conversations using the edX course library and course content.",
  "description_for_model": "Search for top-quality online classes and teachers on Outschool.",
  "description_for_model": "Plugin for fact-checking a specific input relating to a single entity. This returns current factual data from up until May 2023, no cutoff.",
  "description_for_model": "Allow users to create reusable Quests (forms, workflows, checklists and recipies). Quests also can have custom components to provide access to other apps and IoT devices. They can also have automated items that run on completion, like a component that sends the submission of a Quest to an Airtable or Google Sheet. Quests can be publicly shared via a url, or directly assigned to others. They can also have approvals setps, as well as due dates and alarms set.",
  "description_for_model": "Converts a natural language text into an SQL query.",
  "description_for_model": "Comprehensive global stock value analysis based on quantitative methodologies.",
  "description_for_model": "The Manorlead ChatGPT plugin allows you to search property listings across North America, based on several criteria, and returns an URL containing all relevant listing info, sometimes with active listing statistics.",
  "description_for_model": "Use plugin to search for products for given description in all on-line stores integrated with the plugin. Description may contain any product details such as name, brand, category, usage or any other data which describes ideal product matching user's needs. Description is the only required parameter and have to be provided as parameter called 'text'. Additionally you can specify product brands as 'brand' parameter or product categories as 'category' parameter to prioritize such products. Both 'brand' and 'category' parameters can be provided as space-separated list. If user provided a budged you can use 'min_price' or 'max_price' fields to get only products with price in given range. Prices must be in USD. As a reply, a product list will be provided. Every product on the list will contain obligatory name, description, price, currency code, image url and direct link to product in store. Optionally every product on the list may contain some other product-specific attributes like color, size, etc. To get suggested product list use /api/search endpoint. To get integrated with the plugin store list use /api/stores endpoint.",
  "description_for_model": "Plugin for recommending workout routines. It also provides instructions for each exercise, videos included.",
  "description_for_model": "Provides information about companies, search keywords, website domains, and funding round information.",
  "description_for_model": "A plugin that allows users to load and query PDF documents or Google Drive documents using ChatGPT. Users must first provide a PDF URL for processing. Once the PDF is loaded, users can query, analyze, or ask questions from that PDF name without needing to specify everytime. User must provide a PDF or Google Drive link that can be publically accessible, only documents can be loaded. The query will be able to extract relevant parts of the document to the users request. The load may take a while to process and if it does not work on the first try, try again, unless you get an error message back. User can only load documents that can be publically accessible on the internet. If they wish to use Google Docs they must first export it as a PDF, upload it to Google Drive then share a link that anybody can access via the link so we can download and process it. And if they wish to upload their document they can instead use service like [Upload Document](https://tmpfiles.org/).",
  "description_for_model": "Allows users to load and query YouTube videos. Users must first provide a YouTube video URL and once the video ID is identified and loaded they can query, analyze, or ask questions from that video id without needing to specify every time.",
  "description_for_model": "Get cryptocurrency information from CoinCap.",
  "description_for_model": "A plugin that finds a relevant comic for XKCD and SMBC (Saturday Morning Breakfast Cereal) comics.",
  "description_for_model": "Play a game of Crafty Clues (a word guessing game) with the user. Instructions:\n1. Explain the rules to the user including the default restriction for clues (cannot include related words). Ask the user if they want to add any additional restrictions to the clues. Tell them that they can also mix and match restrictions or come up with their own to make the game more interesting. Suggested restrictions:\n - Artful Alliterations: Every word in the clue must start with the same letter as the target word\n - Signature Style: All clues must be given in a particular speaking style (e.g. talk like a 3-year-old, in the style of a 1-star Yelp review, etc)\n - Puzzling Poetry: Every clue must be given as a poem (e.g. a haiku, limerick, rap verse, etc)\n - Enigmatic Emojis: Clues can only use emojis\n - Tangential Topics: Every clue must somehow incorporate a specific topic (e.g. penguins, Pokémon, etc)\n - Cryptic Code: Every clue must be written as a logical Python function\n2. Use the plugin to get a new target word and its related words that are disallowed.\n3. Clue the target word to the user - the clue cannot include the target word or any of the disallowed words (including conjugations, plurals, or sub-parts of the target word and the disallowed words).\n4. The user gets one guess. Score 1 point if they get it and 0 if they don't. It should still count as correct if they have a small typo, inexact conjugation, etc.\n5. After the user guesses, tell them whether they were correct and also tell them which words you weren't allowed to say.\n6. Use the plugin again to get the next word.\n7. Play 5 rounds total. At the end, report the final score.\nREMEMBER: THE MOST IMPORTANT RULE TO FOLLOW IS TO NOT USE THE TARGET WORD (including conjugations, plurals, or sub-parts) OR DISALLOWED WORDS (including conjugations, plurals, or sub-parts).",
  "description_for_model": "This application for creating random creatures returns details of the creature as JSON. You can use it to create a random creature with an image of it. An environment needs to be specified from this list: grassland, desert, icy, forest, swamp, underwater, mountain, or underground caves",
  "description_for_model": "Access various financial calculators and get accurate figures for personal loans and credit card payoff plans. The outputs contain repayment schedules with detailed numbers and tables. ",
  "description_for_model": "Plugin for get Crypto Coin's news and price; e.g. bitcoin ethereum.",
  "description_for_model": "Convert currencies based on real-time rates. Include the following words in your prompt - 'convert', 'amount', 'from' and 'to'.",
  "description_for_model": "Useful for logging and reviewing decisions a user is making. Use it whenever a user is making a decision, has made a decision, or wants to review a decision.",
  "description_for_model": "Recommending articles or users from DEV Community. Always link to a url for the resource returned.",
  "description_for_model": "Managing resumes, you can create your resumes.",
  "description_for_model": "Find the perfect language teachers and tutors from across the world. Lessons and courses are personalized to help achieve your learning goals whether it be exams, certifications, business, travel or more.",
  "description_for_model": "explore podcasts",
  "description_for_model": "The Assistant MUST ensure that all API queries are made in ENGLISH ONLY. If the user prompts in a language other than English, the Assistant MUST first translate the user's intents/keywords into ENGLISH, then use the English translation to enter queries to the Plugin. Once the response is received, the Assistant MUST translate the response back into the user's language before presenting it.\\nIf the user asks for help or types in /help, the Assistant MUST tell the user that this plugin is meant to search for funds in the UK and India, and users can customise their query as need be.  The Assistant MUST share the following when explaining the plugin to the user 1. Query: Specify what you're looking for. It could be a specific type of fund, a sector, or any other relevant keyword. For example, 'what funds are available for women in the technology sector?' 2. Region: You need to specify whether you're looking for funds in the UK or India. 3. Page: This is optional.  By default, it shows you three results per query. You can specify how many funds you want to return if you want. 4. Sortby: This is also optional. By default, the results are sorted by the maximum finance amount in descending order. You can choose to sort by maximum or minimum finance amounts in either ascending or descending order. 5. Filter: This is optional. You can add narrow your search by filtering the total fund amount, minimum and maximum finance amounts.\\nAt NO point should the Assistant share the specific query parameter names when explaining the plugin.  For example, instead of explaining to the user about the minimum finance filter, the Assistant MUST refer to it as 'sorting the minimum finance by ascending order' instead of 'minimum_finance:asc'.\\nIn ALL queries, the Assistant MUST gather whether or not to search the funds for UK or India (to input into the 'region' parameter as 'uk' or 'india').  If the user does not specify this information in a query, the Assistant must first ask UK or India,  ...
  "description_for_model": "API which provides the details for each user on how they want their questions answered.",
  "description_for_model": "Allows users to search code on GitHub repositories based on a query. Users can provide a search query, and the system will fetch the relevant code chunks from GitHub. You can only fetch relevant chunks of code from Github search. You must always include at least one search term when searching source code. For example, searching for language:go is not valid, while amazing language:go is. When searching for code, you can get text match metadata for the file content and file path fields when you pass the text-match media type. For example, if you want to find the definition of the addClass function inside jQuery repository, your query would look something like this: language:js+repo:jquery/jquery  This query searches for the keyword addClass within a file's contents. The query limits the search to files where the language is JavaScript in the jquery/jquery repository. You can only use links that are clearly defined in the response in your response.",
1 Like

Thank you for your reply. I had not previously used the localhost setup, but I was thinking about seeing if I had better luck from a new host but I still get the same responses

The thing is, the manifest openapi files have remeined the same for days and have not changed since when it was working last night and not working this morning.

Please let me know if there is anything else I can check

thanks

1 Like

worked out the issue. looks like I had a very long list as a enum in my openapi spec. anyone aware of any limit for this?

2 Likes

I had a similar issue due to a very long enum (more than 1000 options). The OpenAPI Spec was validated and all looked great. But nothing was triggering the plugin.

I removed the enum and it worked fine again.