lifan0127 / ai-research-assistant Goto Github PK
View Code? Open in Web Editor NEWAria is Your AI Research Assistant Powered by GPT Large Language Models
License: GNU Affero General Public License v3.0
Aria is Your AI Research Assistant Powered by GPT Large Language Models
License: GNU Affero General Public License v3.0
The dialog window disappears automatically behind the interface when I drag the paper, but that's not the case with your demo gif. How to keep the dialog window always at the top?
Attaching PDFs for 5 papers and if I submit a question I gent "getBestAttachment() can only be called on regular items" and no response.
what is the problem? all the pdfs open fine.
Using Aria V0.7.0
Zotero V 6.0.30
Macbook pro M1, V14.2.1
As Shift is also used in combination with letters for writing capital case, it might be worth changing the activation shortcut for a less used combination of keys, or let everyone choose the shortcut (s)he wants to work with.
The answer given is quite shallow which gives me a feeling that it only analyses the title but not the content of the paper.
When interacting with A.R.I.A. it appears it cannot find/access all papers in my Zotero library. For example, I have a collection of 50+ papers about cybersecurity and Generative AI in a collection. When asking questions about this collection it responded unable to find any of those papers. Also when doing a basic prompt such as "Summarize /" I am unable to have it summarize most of my papers.
Translation of ARIA into other languages, such as Portuguese. I could help translate into Portuguese, but I don't know anything about programming.
So we can review previous queries to ARIA
Hi,
I used ARIA so far to get an insight into my libraries' papers. Now I have a paper and its PDF in Zotero but by chance no abstract in the abstract property field and it throws this error/answer: "The paper with item ID 802 does not provide an abstract or additional information that would allow for a summary of its key arguments."
I thought ARIA sends the attached PDF to GPT4 for analysis, so not having the abstract shouldn't be a dealbreaker.
Would you please explain, what is happening under the hood? Are the pdfs taken into account, and if so, why this answer?
Thank you!
Marvin
I found that the font size is really small! Are there ways that I can increase the font size? Thanks!
I leave as a suggestion the possibility of adding opensource and free Illmas APIs, such as Gemini, as alternatives. Paying 20 dollars a month is unfeasible.
In the past few weeks I've run into a number of addons that are not compatible and set only to 6.999 or 7.* or similar. What's the deal? Am I on an old version of Zotero or something? I thought the latest was 6
Greetings.
Why might I get this error? The item in question does indeed have a Title.
<pre>{
"message": "Item data not loaded and field 'title' not set for item 7/AADJVMSN",
"dataType": "itemData",
"stack": "Zotero.Exception.UnloadedDataException@chrome://zotero/content/xpcom/error.js:159:16\nZotero.Item.prototype.getField@chrome://zotero/content/xpcom/data/item.js:279:11\nZotero.Item.prototype.getDisplayTitle@chrome://zotero/content/xpcom/data/item.js:872:31\ncompileItemInfo@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:/<local-profile-dir>/extensions/[email protected]!/bootstrap.js -> jar:file:/<local-profile-dir>/extensions/[email protected]!/chrome/content/scripts/index.js:52564:20\ngetItemAndBestAttachment@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:/<local-profile-dir>/extensions/[email protected]!/bootstrap.js -> jar:file:/<local-profile-dir>/extensions/[email protected]!/chrome/content/scripts/index.js:52598:20\n",
"name": "UnloadedDataException"
}</pre>
I receive the following error every time I try to ask ARIA a question. I have copied an API key from OpenAI, with which I have an account. What am I missing?
Aria v0.5.4
Zotero v6.0.30 in Win11
{ "message": "Request failed with status code 404 and body {\n \"error\": {\n \"message\": \"The model `gpt-4-0613` does not exist or you do not have access to it. Learn more: https://help.openai.com/en/articles/7102672-how-can-i-access-gpt-4.\",\n \"type\": \"invalid_request_error\",\n \"param\": null,\n \"code\": \"model_not_found\"\n }\n}\n", "name": "Error", "fileName": "resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///C:/Users/keega/AppData/Roaming/Zotero/Zotero/Profiles/6x0fdmrn.default/extensions/[email protected]!/bootstrap.js -> jar:file:///C:/Users/keega/AppData/Roaming/Zotero/Zotero/Profiles/6x0fdmrn.default/extensions/[email protected]!/chrome/content/scripts/index.js", "lineNumber": 47394, "columnNumber": 18, "stack": "createError@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:47394:18\nsettle@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:47160:12\nfetchAdapter/<@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:47271:121\nfetchAdapter@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:47267:10\n", "config": { "transitional": { "silentJSONParsing": true, "forcedJSONParsing": true, "clarifyTimeoutError": false }, "transformRequest": [], "transformResponse": [], "timeout": 0, "xsrfCookieName": "XSRF-TOKEN", "xsrfHeaderName": "X-XSRF-TOKEN", "maxContentLength": -1, "maxBodyLength": -1, "headers": { "Accept": "application/json, text/plain, */*", "Content-Type": "application/json", "User-Agent": "OpenAI/NodeJS/3.3.0", "Authorization": "Bearer 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" }, "method": "post", "data": "{\"model\":\"gpt-4-0613\",\"temperature\":0,\"top_p\":1,\"frequency_penalty\":0,\"presence_penalty\":0,\"n\":1,\"stream\":false,\"functions\":[{\"name\":\"routing\",\"description\":\"Define an action to route a user's request. Output the action name in the \\\"action\\\" field and the payload for the action in the \\\"payload\\\" field.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"action\":{\"type\":\"string\",\"description\":\"The action to take, either routing to a specific route or asking for clarification.\",\"enum\":[\"routing\",\"clarification\"]},\"payload\":{\"oneOf\":[{\"type\":\"object\",\"properties\":{\"route\":{\"type\":\"string\",\"description\":\"The name of the executor to handle the request. Must be one of the following:\\n- search: For searching user's Zotero library related to a specific topic. Use this route when a user expects to see a list of search results.\\n- qa: For Q&A and other related requests based on user's Zotero library. Use this route when a user expects to see a single answer or summary.\",\"enum\":[\"search\",\"qa\"]},\"input\":{\"type\":\"string\",\"description\":\"A potentially modified version of the original user message for the route.\"},\"states\":{\"type\":\"object\",\"description\":\"A subset of the application states relevant to the user message.\",\"properties\":{\"creators\":{\"type\":\"array\",\"description\":\"Creators (authors, editors) of the items in the Zotero library, useful for refining search scope.\",\"items\":{\"type\":\"string\"}},\"tags\":{\"type\":\"array\",\"description\":\"Tags of the items in the Zotero library, useful for refining search scope.\",\"items\":{\"type\":\"string\"}},\"items\":{\"type\":\"array\",\"description\":\"Zotero Item IDs, useful as sources for Q&A.\",\"items\":{\"type\":\"number\"}},\"collections\":{\"type\":\"array\",\"description\":\"Zotero Collection IDs, useful for refining search scope.\",\"items\":{\"type\":\"number\"}}}}},\"required\":[\"route\",\"input\"]},{\"type\":\"object\",\"properties\":{\"message\":{\"type\":\"string\",\"description\":\"The message to ask for user clarification or missing information.\"}},\"required\":[\"message\"]}]}},\"required\":[\"action\",\"payload\"]}}],\"function_call\":{\"name\":\"routing\"},\"messages\":[{\"role\":\"system\",\"content\":\"You are an AI assistant for Zotero, a reference management software.\\nYour job is to analyze a user's request, in the context of the application states, and choose the appropriate follow-up actions.\\n\\nRequirements:\\n- You should interpret the user request in the context of the application states, which include a set of authors, tags, items and collections selected by the user.\\n- When you cannot confidently determine the user's intention, the action should be \\\"clarification\\\" and the payload should contain a message to politely express your doubt. The goal is have the user provide more information through conversation.\\n- After you have gathered enough information to understood the user's intention, the action should be \\\"routing\\\" and the payload should contain the name of the route to handle the request, the input for the route, and optionally, the relevant application states. The name of the route must be one of the values provided to you. The input could be a potentially modified version of the original user message.\"},{\"role\":\"user\",\"content\":\"Application States:\\n\\n\\nUser Input: Hello?\"}]}", "url": "https://api.openai.com/v1/chat/completions" }, "status": 404 }
I keep getting the error that this addon may not be compatible with this version of zotero (6.0.30). I have tried restarting zotero to no effect.
Please disclose the principle of using agent in the Readme and provide the control of max iteration in.
It is still quite costly if run multiple iterations.
I am running into quite a few issues. I am debating whether I should write an extensive post about them or whether I should just wait for updates. I don't have much time but would be willing to help troubleshoot.
To sum things up, my current impression is that the assistant has limited ability to both find and generate useful information, and often fails unless provided with highly specific queries such as copy pasting those in the example, but not slightly modified versions.
As an aside, does this search through the full texts or just the metadata and abstract?
It doesn't seem to be able to summarize anything. Sometimes it tells me it doesn't have access to the zotero database yet other times it seems to pull information from it.
Great add-on.
Error I got:
Using a valid OpenAI API key:
{ "status": 404, "headers": {}, "error": { "message": "The model `gpt-4-1106-preview` does not exist or you do not have access to it. Learn more: https://help.openai.com/en/articles/7102672-how-can-i-access-gpt-4.", "type": "invalid_request_error", "param": null, "code": "model_not_found" }, "code": "model_not_found", "param": null, "type": "invalid_request_error", "attemptNumber": 1, "retriesLeft": 6, "name": "Error", "message": "404 The model `gpt-4-1106-preview` does not exist or you do not have access to it. Learn more: https://help.openai.com/en/articles/7102672-how-can-i-access-gpt-4.", "stack": "@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:830:19\n_APIError@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:38798:9\nnode_modules/openai/error.mjs/NotFoundError<@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:38891:15\ngenerate@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:38835:18\nmakeStatusError@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:39618:16\nmakeRequest@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:39658:24\n" }
{ "status": 404, "headers": {}, "error": { "message": "Invalid URL (POST /v1/chat/completions/chat/completions)", "type": "invalid_request_error", "param": null, "code": null }, "code": null, "param": null, "type": "invalid_request_error", "attemptNumber": 1, "retriesLeft": 6, "name": "Error", "message": "404 Invalid URL (POST /v1/chat/completions/chat/completions)", "stack": "@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:830:19\n_APIError@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:38798:9\nnode_modules/openai/error.mjs/NotFoundError<@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:38891:15\ngenerate@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:38835:18\nmakeStatusError@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:39618:16\nmakeRequest@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:39658:24\n" }
Any suggestion?
Zotero version: 6.0.30
ARIA release: 0.6.5
Best.
{ "status": 404, "headers": {}, "error": { "message": "The model `gpt-4-0613` does not exist or you do not have access to it.", "type": "invalid_request_error", "param": null, "code": "model_not_found" }, "code": "model_not_found", "param": null, "type": "invalid_request_error", "attemptNumber": 1, "retriesLeft": 6, "name": "Error", "message": "404 The model `gpt-4-0613` does not exist or you do not have access to it.", "stack": "@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:830:19\n_APIError@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:54432:5\nNotFoundError<@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:54525:11\ngenerate@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:54469:14\nmakeStatusError@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:55190:12\nmakeRequest@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:55230:20\n" }
As I already have my literature within collections and subcollections, would it be possible to choose the collection that is active to make the query? (I don't know if the plugin already does this, but from the first query I made, it looks like it tried to run on all my Zotero collections.). Thanks, @lifan0127.
I've just installed ARIA to my Zotero 6.0.37 on macOS, and any prompt ends up with the same error. How can I fix it?
<pre>{
"name": "TypeError",
"message": "Zotero.Styles.get(...).getCiteProc is not a function",
"stack": "createCitations@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:/<local-profile-dir>/extensions/[email protected]!/bootstrap.js -> jar:file:/<local-profile-dir>/extensions/[email protected]!/chrome/content/scripts/index.js:52687:15\n_call@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:/<local-profile-dir>/extensions/[email protected]!/bootstrap.js -> jar:file:/<local-profile-dir>/extensions/[email protected]!/chrome/content/scripts/index.js:67008:46\n"
}</pre>
What is the status of the plugin on Zotero 7?
The plugin seems to install and be compatible but no plugin pane in settings and Shift+R doesnt seems to do anything.
User encountered the following error with the search chain:
Zotero.Exception.UnloadedDataException@chrome://zotero/content/xpcom/error.js:159:16
Zotero.Item.prototype.getField@chrome://zotero/content/xpcom/data/item.js:279:11
Zotero_Item_prototype_getField@chrome://zotero-better-bibtex/content/better-bibtex.js:133487:12
trampoline@chrome://zotero-better-bibtex/content/better-bibtex.js:13894:66
Zotero.Item.prototype.getDisplayTitle@chrome://zotero/content/xpcom/data/item.js:872:31
compileItemInfo@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://.../extensions/[email protected]!/bootstrap.js -> jar:file://.../extensions/[email protected]!/chrome/content/scripts/index.js:61253:20
getItemAndBestAttachment@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://.../extensions/[email protected]!/bootstrap.js -> jar:file://.../extensions/[email protected]!/chrome/content/scripts/index.js:61287:20
Feedback: 2c7nObITEIq6z40N (2023-11-04T14:41:04.310Z)
The aria chat window is not re-sizeable on macOS. Can this be changed?
Sorry. An error occurred. Please try something else.
{"name":"TypeError","message":"can't redefine non-configurable property "__run"","stack":"call@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///C:/Users/zy/AppData/Roaming/Zotero/Zotero/Profiles/9t75n5jm.default/extensions/[email protected]!/bootstrap.js -> jar:file:///C:/Users/zy/AppData/Roaming/Zotero/Zotero/Profiles/9t75n5jm.default/extensions/[email protected]!/chrome/content/scripts/index.js:35987:9\n"}
If an URL is part of an answer and its clicked, zotero renders the page on the whole window without any way to go back or close the web, zotero has to be killed and started again
I think this will be down the list on features, but thought I'd throw it in.
It would be amazing to semi-automate data-extraction (i.e., extraction of key information/quotes from items) within Zotero, perhaps into child-notes of those items (tagged with a aria-id indicating the query).
I've been playing with semantra (local semantic search) and various of the 'genai research' tools like elicit, zeta, scispace, etc., and although they're pretty good the limitation of having a separate ref-manager and tool, and of it being closed-source is high. They also aren't as focused on data extraction (although, they're starting to offer this).
Hello Li Fan,
Thank you for making this Zotero plugin. Judging from the number of open issues, it looks like you don't have much spare time to further develop this plugin. I would very much have liked to helped you but the code seems too advanced for me!
I have a Zotero collection called "Quantum Computing" containing the following documents:
Here is a screenshot of the interaction with ARIA with the resulting error:
I don't understand what this error means!
<pre class='error'>{"name":"TypeError","message":"can't redefine non-configurable property \"__run\"","stack":"call@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///Users/odebroqueville/Library/Application%20Support/Zotero/Profiles/9g4fb8na.default/extensions/[email protected]!/bootstrap.js -> jar:file:///Users/odebroqueville/Library/Application%20Support/Zotero/Profiles/9g4fb8na.default/extensions/[email protected]!/chrome/content/scripts/index.js:35987:9\n"}</pre>
I'm also not quite sure how your plugin works! Does it scan the entire Library for PDF documents and submit them to LangChain to create a vector database?
Btw, I have a small suggestion: why not rename ARIA to ZAIRA which would stand for Zotero AI Research Assistant.
I was also wondering if it wouldn't be possible to use your plugin in Zotero side panel instead of in its own window. This way we could simultaneously have access to our documents and see what ARIA generates side by side.
UPDATE: Looks like this is the SAME ISSUE AS #23 !
Thus it is possible to use Azure models and API proxies.
It would be good, when the chat refers to a paper in the library, to be able to click on a link to get to the paper. At the moment when you ask it for papers on some topic, it replies with the title and details and the id of the paper, but then there is no easy way to go to each paper and look at it in Zotero. So perhaps whenever the chat produces an [ID:xxx] you could make that a link to the entry in the library?
German umlauts will be not properly encoded in the output. This is an example copied from the chat output window (but have a look at the reference below where umlauts are correct):
Die "Urheberrechtsfibel - nicht nur f\u00fcr Piraten" von Klaus Graf ist eine kritische Auseinandersetzung mit und Erl\u00e4uterung des deutschen Urheberrechtsgesetzes. Sie richtet sich nicht nur an Mitglieder der Piratenpartei, sondern an ein breites Publikum. Das Buch erl\u00e4utert den Gesetzestext und bietet Interpretationen sowie kritische Perspektiven zu den verschiedenen Paragraphen und Bestimmungen des Urheberrechtsgesetzes. Es behandelt die Komplexit\u00e4t und Feinheiten des Urheberrechts und macht es auch f\u00fcr Laien ohne juristischen Hintergrund verst\u00e4ndlich. Der Autor beleuchtet, wie das Gesetz die Sch\u00f6pfer und Nutzer urheberrechtlich gesch\u00fctzter Werke betrifft und diskutiert das Gleichgewicht zwischen dem Schutz der Rechte von Autoren und dem \u00f6ffentlichen Interesse am Zugang zu Informationen. Die Kommentierung greift auch Debatten und Kontroversen um das Urheberrecht auf, wie die Doktrin der angemessenen Verwendung (Fair Use), die Durchsetzung von Urheberrechten und die Auswirkungen der digitalen Technologie auf die Urheberrechtspraktiken. Insgesamt dient das Buch als Bildungsressource, die den juristischen Fachjargon entmystifiziert und ein besseres Verst\u00e4ndnis der Urheberrechtsprinzipien und ihrer Auswirkungen im digitalen Zeitalter f\u00f6rdert.
(1) Graf, K. Urheberrechtsfibel - Nicht Nur Für Piraten: Der Text Des Deutschen Urheberrechtsgesetzes, Erklärt Und Kritisch Kommentiert ; (PiratK-UrhG), 1. Aufl.; Reihe Netzbürger; Contumax-Verl.: Berlin, 2009.
I think this is a feature worth adding, please.
Hi, thanks a lot for this add-on! When I try to re-run some query, I wish I could copy/paste from previous prompts. Otherwise, I need to type it in again.
Hello @lifan0127. What a great evolution of the project that I'm following and you always diligently helping, again my thanks. It would be possible to put a field to choose the model that the plugin will access. This would be interesting for token economy and other jobs where it is not necessary to use GPT 3.5, or even update the model to choose GPT 4, for example.
Hi,
I've got this error after the previous question worked to get an answer. The second question showed the below message:
{ "name": "TypeError", "message": "payload is undefined", "stack": "call@resource://gre/modules/addons/XPIProvider.jsm -> jar:file://extensions/[email protected]!/bootstrap.js -> jar:file://extensions/[email protected]!/chrome/content/scripts/index.js:67278:13\n" }
The pop-up that appears when you type Shift-R blocks the zotero window and cannot be moved. This is inconvenient when you want to browse your zotero library for something that has been identified by the RA or if you want to edit a library item with a summary the RA has produced. If you click on the Zotero window to bring it forward, the RA content disappears. You should be able to move or resize the RA window.
The text produced by the RA cannot be selected and copied.
Im getting an error that pdfs do not contain extractable text when asking for any analysis " I'm sorry, but I cannot provide a summary as the document 'Exploring Portraiture in Teaching Practice' does not contain any extractable text."
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.