base on FreeAskInternet is a completely free, PRIVATE and LOCALLY running search aggregator & answer generate using MULTI LLMs, without GPU needed. The user can ask a question and the system will make a multi engine search and combine the search result to LLM and generate the answer based on search results. It's all FREE to use. # FreeAskInternet ## ๐ŸŽ‰๐ŸŽ‰๐ŸŽ‰ Yeah we have a logo now! ๐ŸŽ‰๐ŸŽ‰๐ŸŽ‰ ![lgoo](./doc/logo-20240412.png) > Running www.perplexity.ai like app complete FREE, LOCAL, PRIVATE and NO GPU NEED on any computer > [!IMPORTANT] > **If you are unable to use this project normally, it is most likely due to issues with your internet connection or your IP, you need free internet connection to use this project normally. ๅฆ‚ๆžœๆ‚จๆ— ๆณ•ๆญฃๅธธไฝฟ็”จๆญค้กน็›ฎ๏ผŒๅพˆๅฏ่ƒฝๆ˜ฏ็”ฑไบŽๆ‚จ็š„ IP ๅญ˜ๅœจ้—ฎ้ข˜๏ผŒๆˆ–่€…ไฝ ไธ่ƒฝ่‡ช็”ฑ่ฎฟ้—ฎไบ’่”็ฝ‘ใ€‚** ## What is FreeAskInternet FreeAskInternet is a completely free, private and locally running search aggregator & answer generate using LLM, Without GPU needed. The user can ask a question and the system will use searxng to make a multi engine search and combine the search result to the ChatGPT3.5 LLM and generate the answer based on search results. All process running locally and No GPU or OpenAI or Google API keys are needed. ## Features - ๐Ÿˆš๏ธ Completely FREE (no need for any API keys) - ๐Ÿ’ป Completely LOCAL (no GPU need, any computer can run ) - ๐Ÿ” Completely PRIVATE (all thing running locally, using custom llm) - ๐Ÿ‘ป Runs WITHOUT LLM Hardware (NO GPU NEED!) - ๐Ÿคฉ Using Free ChatGPT3.5 / Qwen / Kimi / ZhipuAI(GLM) API (NO API keys need! Thx OpenAI) - ๐Ÿต Custom LLM(ollama,llama.cpp) support, Yes we love ollama! - ๐Ÿš€ Fast and easy to deploy with Docker Compose - ๐ŸŒ Web and Mobile friendly interface, designed for Web Search enhanced AI Chat, allowing for easy access from any device. ## Screenshots 1. index: ![index](./doc/index.png) 2. Search based AI Chat: ![index](./doc/Screenshot-4.png) 3. Multi LLM models and custom LLM like ollama support: ![index](./doc/Screenshot-5.png) ## How It Works? 1. System get user input question in FreeAskInternet UI interface( running locally), and call searxng (running locally) to make search on multi search engine. 2. crawl search result links content and pass to ChatGPT3.5 / Kimi / Qwen / ZhipuAI / ollama (by using custom llm), ask LLM to answer user question based on this contents as references. 3. Stream the answer to Chat UI. 4. We support custom LLM setting, so theoretically infinite llm support. ## Status This project is still in its very early days. Expect some bugs. ### Run the latest release ```bash git clone https://github.com/nashsu/FreeAskInternet.git cd ./FreeAskInternet docker-compose up -d ``` ๐ŸŽ‰ You should now be able to open the web interface on http://localhost:3000. Nothing else is exposed by default.( For old web interface, accessing http://localhost:3030) ## How to get and set Kimi / Qwen / ZhipuAI Token? How to get Token? We are using [https://github.com/LLM-Red-Team](https://github.com/LLM-Red-Team) projects to provide those service, you can reference to their readme. Reference : [https://github.com/LLM-Red-Team/kimi-free-api](https://github.com/LLM-Red-Team/kimi-free-api) ![setting token](./doc/Screenshot-3.png) ## How to using custom LLM like ollama? (Yes we love ollama) 1. start ollama serve ```bash export OLLAMA_HOST=0.0.0.0 ollama serve ``` 2. set ollama url in setting: You MUST using your computer's ip address, not localhost/127.0.0.1, because in docker you can't access this address. The model name is the model you want to serve by ollama. ![setting custom llm url](./doc/Screenshot-2.png) ollama model Reference : [https://ollama.com/library](https://ollama.com/library) ### How to update to latest ```bash cd ./FreeAskInternet git pull docker compose down docker compose rm backend docker compose rm free_ask_internet_ui docker image rm nashsu/free_ask_internet docker image rm nashsu/free_ask_internet_ui docker-compose up -d ``` ## Credits - ChatGPT-Next-Web : [https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web](https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web) - FreeGPT35: [https://github.com/missuo/FreeGPT35](https://github.com/missuo/FreeGPT35) - Kimi\Qwen\ZhipuAI [https://github.com/LLM-Red-Team](https://github.com/LLM-Red-Team) - searxng: [https://github.com/searxng/searxng](https://github.com/searxng/searxng) ## Special thanks to our logo designer [AdlerMurcus](https://github.com/AdlerMurcus) <a href="https://github.com/AdlerMurcus"> <img src="https://avatars.githubusercontent.com/u/40649955?v=4" width="100" height="100" class="avatar avatar-user width-full border color-bg-default"/> </a> ## License Apache-2.0 license ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=nashsu/FreeAskInternet&type=Date)](https://star-history.com/#nashsu/FreeAskInternet&Date) ", Assign "at most 3 tags" to the expected json: {"id":"9164","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"