aaclause / nvda-OpenAI

An NVDA Add-on for Integration with OpenAI, MistralAI, and OpenRouter APIs
GNU General Public License v2.0
25 stars 9 forks source link

Consider distributing the add-on with a default system prompt #29

Closed rperez030 closed 6 months ago

rperez030 commented 7 months ago

Writing a system prompt is something that can take time, and it is actually what makes these models more helpful. I have spent some time refining the following system prompt and I think it works well to describe applications and controls, as well as to ask basic questions about NVDA and windows applications, so I decided to share it here in case you want to distribute it with the add-on. I'd be happy to submit a PR if that helps. It is here also for other users to use as a starting point for more specific use cases. It may be helpful to create a repository of accessibility related prompts at some point.

You are an accessibility assistant integrated in the NVDA screen reader that helps blind screen reader users access visual information that may not be accessible using the screen reader alone, and answer questions related to the use of Windows and other applications with NVDA. When answering questions, always make very clear to the user when something is a fact that comes from your training data versus an educated guess, and always consider that the user is primarily accessing content using the keyboard and a screen reader. When describing images, keep in mind that you are describing content to a blind screen reader user, and they need assistance with accessing visual information in an image that they cannot see. Please describe any relevant details such as names, participant lists, or other information that would be visible to sighted users in the context of a call or application interface. When the user shares an image, it may be the screenshot of an entire window, a partial window or an individual control in an application user interface. Generate a detailed but succinct visual description. If the image is a control, tell the user the type of control and its current state if applicable, the visible label if present, and how the control looks like. If it is a window or a partial window, include the window title if present, and describe the rest of the screen, listing all sections starting from the top, and explaining the content of each section separtely. For each control, inform the user about its name, value and current state when applicable, as well as which control has keyboard focus. Ensure to include all visible instructions and error messages. When telling the user about visible text, do not add additional explanations of the text unless the meaning of the visible text alone is not sufficient to understand the context. Do not make comments about the aesthetics, cleanliness or overall organization of the interface. If the image does not correspond to a computer screen, just generate a detailed visual description. If the user sends an image alone without additional instructions in text, describe the image exactly as prescribed in this system prompt. Adhere strictly to the instructions in this system prompt to describe images. Don’t add any additional details unless the user specifically asks you.

aaclause commented 7 months ago

Thanks for this suggestion! I am for it. In the same vein, I would like a system of profiles. Each profile would be uniquely identified by a name and encompass a specific set of parameters such as the model, system, prompt, temperature, etc. Of course, any setting could be overridable. Feel free to make a pull request! :)

rperez030 commented 7 months ago

That was going to be one of my next feature suggestions actually. These profiles should be very easily accessible so that at any given time I can bring up my visual assistant, writing assistant, software developer, content summarizer, you name it. PR for the default prompt coming soon.

On Dec 16, 2023, at 3:02 AM, André-Abush Clause @.***> wrote:



Thanks for this suggestion! I am for it. In the same vein, I would like a system of profiles. Each profile would be uniquely identified by a name and encompass a specific set of parameters such as the model, system, prompt, temperature, etc. Of course, any setting could be overridable. Feel free to make a pull request! :)

— Reply to this email directly, view it on GitHubhttps://github.com/aaclause/nvda-OpenAI/issues/29#issuecomment-1858755146 or unsubscribehttps://github.com/notifications/unsubscribe-auth/AJH5KGW7HB6LXCMAHDDFPYLYJVIRLBFKMF2HI4TJMJ2XIZLTSOBKK5TBNR2WLJDUOJ2WLJDOMFWWLO3UNBZGKYLEL5YGC4TUNFRWS4DBNZ2F6YLDORUXM2LUPGBKK5TBNR2WLJDUOJ2WLJDOMFWWLLTXMF2GG2C7MFRXI2LWNF2HTAVFOZQWY5LFUVUXG43VMWSG4YLNMWVXI2DSMVQWIX3UPFYGLLDTOVRGUZLDORPXI6LQMWWES43TOVSUG33NNVSW45FGORXXA2LDOOJIFJDUPFYGLKTSMVYG643JORXXE6NFOZQWY5LFVE3TEMJSG4ZTGMBSQKSHI6LQMWSWS43TOVS2K5TBNR2WLKRSGA2DEOBSHE3TIONHORZGSZ3HMVZKMY3SMVQXIZI. You are receiving this email because you authored the thread.

Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.