diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6b4ce5b..bc7d188 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,12 +1,12 @@ -# How to Contribute to Perplexica +# How to Contribute to GooSeek -Thanks for your interest in contributing to Perplexica! Your help makes this project better. This guide explains how to contribute effectively. +Thanks for your interest in contributing to GooSeek! Your help makes this project better. This guide explains how to contribute effectively. -Perplexica is a modern AI chat application with advanced search capabilities. +GooSeek is a modern AI chat application with advanced search capabilities. ## Project Structure -Perplexica's codebase is organized as follows: +GooSeek's codebase is organized as follows: - **UI Components and Pages**: - **Components (`src/components`)**: Reusable UI components. @@ -53,7 +53,7 @@ If you are not sure where to start, use this section as a map. ## API Documentation -Perplexica includes API documentation for programmatic access. +GooSeek includes API documentation for programmatic access. - **Search API**: For detailed documentation, see `docs/API/SEARCH.md`. @@ -79,4 +79,4 @@ Before committing changes: 2. Always run `npm run format:write` to format your code according to the project's coding standards. This helps maintain consistency and code quality. 3. We currently do not have a code of conduct, but it is in the works. In the meantime, please be mindful of how you engage with the project and its community. -Following these steps will help maintain the integrity of Perplexica's codebase and facilitate a smoother integration of your valuable contributions. Thank you for your support and commitment to improving Perplexica. +Following these steps will help maintain the integrity of GooSeek's codebase and facilitate a smoother integration of your valuable contributions. Thank you for your support and commitment to improving GooSeek. diff --git a/Dockerfile b/Dockerfile index b94fc3d..5d857e7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM node:24.5.0-slim AS builder RUN apt-get update && apt-get install -y python3 python3-pip sqlite3 && rm -rf /var/lib/apt/lists/* -WORKDIR /home/perplexica +WORKDIR /home/gooseek COPY package.json yarn.lock ./ RUN yarn install --frozen-lockfile --network-timeout 600000 @@ -12,7 +12,7 @@ COPY src ./src COPY public ./public COPY drizzle ./drizzle -RUN mkdir -p /home/perplexica/data +RUN mkdir -p /home/gooseek/data RUN yarn build FROM node:24.5.0-slim @@ -24,15 +24,15 @@ RUN apt-get update && apt-get install -y \ curl sudo \ && rm -rf /var/lib/apt/lists/* -WORKDIR /home/perplexica +WORKDIR /home/gooseek -COPY --from=builder /home/perplexica/public ./public -COPY --from=builder /home/perplexica/.next/static ./public/_next/static -COPY --from=builder /home/perplexica/.next/standalone ./ -COPY --from=builder /home/perplexica/data ./data +COPY --from=builder /home/gooseek/public ./public +COPY --from=builder /home/gooseek/.next/static ./public/_next/static +COPY --from=builder /home/gooseek/.next/standalone ./ +COPY --from=builder /home/gooseek/data ./data COPY drizzle ./drizzle -RUN mkdir /home/perplexica/uploads +RUN mkdir /home/gooseek/uploads RUN useradd --shell /bin/bash --system \ --home-dir "/usr/local/searxng" \ @@ -60,7 +60,7 @@ RUN cd "/usr/local/searxng/searxng-src" && \ USER root -WORKDIR /home/perplexica +WORKDIR /home/gooseek COPY entrypoint.sh ./entrypoint.sh RUN chmod +x ./entrypoint.sh RUN sed -i 's/\r$//' ./entrypoint.sh || true @@ -71,4 +71,4 @@ EXPOSE 3000 8080 ENV SEARXNG_API_URL=http://localhost:8080 -CMD ["/home/perplexica/entrypoint.sh"] +CMD ["/home/gooseek/entrypoint.sh"] diff --git a/Dockerfile.slim b/Dockerfile.slim index d44dea4..f27cb24 100644 --- a/Dockerfile.slim +++ b/Dockerfile.slim @@ -2,7 +2,7 @@ FROM node:24.5.0-slim AS builder RUN apt-get update && apt-get install -y python3 python3-pip sqlite3 && rm -rf /var/lib/apt/lists/* -WORKDIR /home/perplexica +WORKDIR /home/gooseek COPY package.json yarn.lock ./ RUN yarn install --frozen-lockfile --network-timeout 600000 @@ -12,23 +12,23 @@ COPY src ./src COPY public ./public COPY drizzle ./drizzle -RUN mkdir -p /home/perplexica/data +RUN mkdir -p /home/gooseek/data RUN yarn build FROM node:24.5.0-slim RUN apt-get update && apt-get install -y python3 python3-pip sqlite3 && rm -rf /var/lib/apt/lists/* -WORKDIR /home/perplexica +WORKDIR /home/gooseek -COPY --from=builder /home/perplexica/public ./public -COPY --from=builder /home/perplexica/.next/static ./public/_next/static +COPY --from=builder /home/gooseek/public ./public +COPY --from=builder /home/gooseek/.next/static ./public/_next/static -COPY --from=builder /home/perplexica/.next/standalone ./ -COPY --from=builder /home/perplexica/data ./data +COPY --from=builder /home/gooseek/.next/standalone ./ +COPY --from=builder /home/gooseek/data ./data COPY drizzle ./drizzle -RUN mkdir /home/perplexica/uploads +RUN mkdir /home/gooseek/uploads EXPOSE 3000 diff --git a/README.md b/README.md index e093ee0..3514abf 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,18 @@ -# Perplexica 🔍 +# GooSeek 🔍 -[![GitHub Repo stars](https://img.shields.io/github/stars/ItzCrazyKns/Perplexica?style=social)](https://github.com/ItzCrazyKns/Perplexica/stargazers) -[![GitHub forks](https://img.shields.io/github/forks/ItzCrazyKns/Perplexica?style=social)](https://github.com/ItzCrazyKns/Perplexica/network/members) -[![GitHub watchers](https://img.shields.io/github/watchers/ItzCrazyKns/Perplexica?style=social)](https://github.com/ItzCrazyKns/Perplexica/watchers) -[![Docker Pulls](https://img.shields.io/docker/pulls/itzcrazykns1337/perplexica?color=blue)](https://hub.docker.com/r/itzcrazykns1337/perplexica) -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/ItzCrazyKns/Perplexica/blob/master/LICENSE) -[![GitHub last commit](https://img.shields.io/github/last-commit/ItzCrazyKns/Perplexica?color=green)](https://github.com/ItzCrazyKns/Perplexica/commits/master) +[![GitHub Repo stars](https://img.shields.io/github/stars/ItzCrazyKns/GooSeek?style=social)](https://github.com/ItzCrazyKns/GooSeek/stargazers) +[![GitHub forks](https://img.shields.io/github/forks/ItzCrazyKns/GooSeek?style=social)](https://github.com/ItzCrazyKns/GooSeek/network/members) +[![GitHub watchers](https://img.shields.io/github/watchers/ItzCrazyKns/GooSeek?style=social)](https://github.com/ItzCrazyKns/GooSeek/watchers) +[![Docker Pulls](https://img.shields.io/docker/pulls/itzcrazykns1337/gooseek?color=blue)](https://hub.docker.com/r/itzcrazykns1337/gooseek) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/ItzCrazyKns/GooSeek/blob/master/LICENSE) +[![GitHub last commit](https://img.shields.io/github/last-commit/ItzCrazyKns/GooSeek?color=green)](https://github.com/ItzCrazyKns/GooSeek/commits/master) [![Discord](https://dcbadge.limes.pink/api/server/26aArMy8tT?style=flat)](https://discord.gg/26aArMy8tT) -Perplexica is a **privacy-focused AI answering engine** that runs entirely on your own hardware. It combines knowledge from the vast internet with support for **local LLMs** (Ollama) and cloud providers (OpenAI, Claude, Groq), delivering accurate answers with **cited sources** while keeping your searches completely private. +GooSeek is a **privacy-focused AI answering engine** that runs entirely on your own hardware. It combines knowledge from the vast internet with support for **local LLMs** (Ollama) and cloud providers (OpenAI, Claude, Groq), delivering accurate answers with **cited sources** while keeping your searches completely private. -![preview](.assets/perplexica-screenshot.png) +![preview](.assets/gooseek-screenshot.png) -Want to know more about its architecture and how it works? You can read it [here](https://github.com/ItzCrazyKns/Perplexica/tree/master/docs/architecture/README.md). +Want to know more about its architecture and how it works? You can read it [here](https://github.com/ItzCrazyKns/GooSeek/tree/master/docs/architecture/README.md). ## ✨ Features @@ -28,7 +28,7 @@ Want to know more about its architecture and how it works? You can read it [here 📷 **Image and video search** - Find visual content alongside text results. Search isn't limited to just articles anymore. -📄 **File uploads** - Upload documents and ask questions about them. PDFs, text files, images - Perplexica understands them all. +📄 **File uploads** - Upload documents and ask questions about them. PDFs, text files, images - GooSeek understands them all. 🌐 **Search specific domains** - Limit your search to specific websites when you know where to look. Perfect for technical documentation or research papers. @@ -38,20 +38,20 @@ Want to know more about its architecture and how it works? You can read it [here 🕒 **Search history** - Every search is saved locally so you can revisit your discoveries anytime. Your research is never lost. -✨ **More coming soon** - We're actively developing new features based on community feedback. Join our Discord to help shape Perplexica's future! +✨ **More coming soon** - We're actively developing new features based on community feedback. Join our Discord to help shape GooSeek's future! ## Sponsors -Perplexica's development is powered by the generous support of our sponsors. Their contributions help keep this project free, open-source, and accessible to everyone. +GooSeek's development is powered by the generous support of our sponsors. Their contributions help keep this project free, open-source, and accessible to everyone.
- + Warp Terminal -### **✨ [Try Warp - The AI-Powered Terminal →](https://www.warp.dev/perplexica)** +### **✨ [Try Warp - The AI-Powered Terminal →](https://www.warp.dev/gooseek)** Warp is revolutionizing development workflows with AI-powered features, modern UX, and blazing-fast performance. Used by developers at top companies worldwide. @@ -76,26 +76,26 @@ We'd also like to thank the following partners for their generous support: ## Installation -There are mainly 2 ways of installing Perplexica - With Docker, Without Docker. Using Docker is highly recommended. +There are mainly 2 ways of installing GooSeek - With Docker, Without Docker. Using Docker is highly recommended. ### Getting Started with Docker (Recommended) -Perplexica can be easily run using Docker. Simply run the following command: +GooSeek can be easily run using Docker. Simply run the following command: ```bash -docker run -d -p 3000:3000 -v perplexica-data:/home/perplexica/data --name perplexica itzcrazykns1337/perplexica:latest +docker run -d -p 3000:3000 -v gooseek-data:/home/gooseek/data --name gooseek itzcrazykns1337/gooseek:latest ``` -This will pull and start the Perplexica container with the bundled SearxNG search engine. Once running, open your browser and navigate to http://localhost:3000. You can then configure your settings (API keys, models, etc.) directly in the setup screen. +This will pull and start the GooSeek container with the bundled SearxNG search engine. Once running, open your browser and navigate to http://localhost:3000. You can then configure your settings (API keys, models, etc.) directly in the setup screen. -**Note**: The image includes both Perplexica and SearxNG, so no additional setup is required. The `-v` flags create persistent volumes for your data and uploaded files. +**Note**: The image includes both GooSeek and SearxNG, so no additional setup is required. The `-v` flags create persistent volumes for your data and uploaded files. -#### Using Perplexica with Your Own SearxNG Instance +#### Using GooSeek with Your Own SearxNG Instance -If you already have SearxNG running, you can use the slim version of Perplexica: +If you already have SearxNG running, you can use the slim version of GooSeek: ```bash -docker run -d -p 3000:3000 -e SEARXNG_API_URL=http://your-searxng-url:8080 -v perplexica-data:/home/perplexica/data --name perplexica itzcrazykns1337/perplexica:slim-latest +docker run -d -p 3000:3000 -e SEARXNG_API_URL=http://your-searxng-url:8080 -v gooseek-data:/home/gooseek/data --name gooseek itzcrazykns1337/gooseek:slim-latest ``` **Important**: Make sure your SearxNG instance has: @@ -110,10 +110,10 @@ Replace `http://your-searxng-url:8080` with your actual SearxNG URL. Then config If you prefer to build from source or need more control: 1. Ensure Docker is installed and running on your system. -2. Clone the Perplexica repository: +2. Clone the GooSeek repository: ```bash - git clone https://github.com/ItzCrazyKns/Perplexica.git + git clone https://github.com/ItzCrazyKns/GooSeek.git ``` 3. After cloning, navigate to the directory containing the project files. @@ -121,13 +121,13 @@ If you prefer to build from source or need more control: 4. Build and run using Docker: ```bash - docker build -t perplexica . - docker run -d -p 3000:3000 -v perplexica-data:/home/perplexica/data --name perplexica perplexica + docker build -t gooseek . + docker run -d -p 3000:3000 -v gooseek-data:/home/gooseek/data --name gooseek gooseek ``` -5. Access Perplexica at http://localhost:3000 and configure your settings in the setup screen. +5. Access GooSeek at http://localhost:3000 and configure your settings in the setup screen. -**Note**: After the containers are built, you can start Perplexica directly from Docker without having to open a terminal. +**Note**: After the containers are built, you can start GooSeek directly from Docker without having to open a terminal. ### Non-Docker Installation @@ -135,8 +135,8 @@ If you prefer to build from source or need more control: 2. Clone the repository: ```bash - git clone https://github.com/ItzCrazyKns/Perplexica.git - cd Perplexica + git clone https://github.com/ItzCrazyKns/GooSeek.git + cd GooSeek ``` 3. Install dependencies: @@ -161,13 +161,13 @@ If you prefer to build from source or need more control: **Note**: Using Docker is recommended as it simplifies the setup process, especially for managing environment variables and dependencies. -See the [installation documentation](https://github.com/ItzCrazyKns/Perplexica/tree/master/docs/installation) for more information like updating, etc. +See the [installation documentation](https://github.com/ItzCrazyKns/GooSeek/tree/master/docs/installation) for more information like updating, etc. ### Troubleshooting #### Local OpenAI-API-Compliant Servers -If Perplexica tells you that you haven't configured any chat model providers, ensure that: +If GooSeek tells you that you haven't configured any chat model providers, ensure that: 1. Your server is running on `0.0.0.0` (not `127.0.0.1`) and on the same port you put in the API URL. 2. You have specified the correct model name loaded by your local LLM server. @@ -213,29 +213,29 @@ If you're encountering a Lemonade connection error, it is likely due to the back ## Using as a Search Engine -If you wish to use Perplexica as an alternative to traditional search engines like Google or Bing, or if you want to add a shortcut for quick access from your browser's search bar, follow these steps: +If you wish to use GooSeek as an alternative to traditional search engines like Google or Bing, or if you want to add a shortcut for quick access from your browser's search bar, follow these steps: 1. Open your browser's settings. 2. Navigate to the 'Search Engines' section. -3. Add a new site search with the following URL: `http://localhost:3000/?q=%s`. Replace `localhost` with your IP address or domain name, and `3000` with the port number if Perplexica is not hosted locally. -4. Click the add button. Now, you can use Perplexica directly from your browser's search bar. +3. Add a new site search with the following URL: `http://localhost:3000/?q=%s`. Replace `localhost` with your IP address or domain name, and `3000` with the port number if GooSeek is not hosted locally. +4. Click the add button. Now, you can use GooSeek directly from your browser's search bar. -## Using Perplexica's API +## Using GooSeek's API -Perplexica also provides an API for developers looking to integrate its powerful search engine into their own applications. You can run searches, use multiple models and get answers to your queries. +GooSeek also provides an API for developers looking to integrate its powerful search engine into their own applications. You can run searches, use multiple models and get answers to your queries. -For more details, check out the full documentation [here](https://github.com/ItzCrazyKns/Perplexica/tree/master/docs/API/SEARCH.md). +For more details, check out the full documentation [here](https://github.com/ItzCrazyKns/GooSeek/tree/master/docs/API/SEARCH.md). -## Expose Perplexica to network +## Expose GooSeek to network -Perplexica runs on Next.js and handles all API requests. It works right away on the same network and stays accessible even with port forwarding. +GooSeek runs on Next.js and handles all API requests. It works right away on the same network and stays accessible even with port forwarding. ## One-Click Deployment -[![Deploy to Sealos](https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg)](https://usw.sealos.io/?openapp=system-template%3FtemplateName%3Dperplexica) +[![Deploy to Sealos](https://raw.githubusercontent.com/labring-actions/templates/main/Deploy-on-Sealos.svg)](https://usw.sealos.io/?openapp=system-template%3FtemplateName%3Dgooseek) [![Deploy to RepoCloud](https://d16t0pc4846x52.cloudfront.net/deploylobe.svg)](https://repocloud.io/details/?app_id=267) -[![Run on ClawCloud](https://raw.githubusercontent.com/ClawCloud/Run-Template/refs/heads/main/Run-on-ClawCloud.svg)](https://template.run.claw.cloud/?referralCode=U11MRQ8U9RM4&openapp=system-fastdeploy%3FtemplateName%3Dperplexica) -[![Deploy on Hostinger](https://assets.hostinger.com/vps/deploy.svg)](https://www.hostinger.com/vps/docker-hosting?compose_url=https://raw.githubusercontent.com/ItzCrazyKns/Perplexica/refs/heads/master/docker-compose.yaml) +[![Run on ClawCloud](https://raw.githubusercontent.com/ClawCloud/Run-Template/refs/heads/main/Run-on-ClawCloud.svg)](https://template.run.claw.cloud/?referralCode=U11MRQ8U9RM4&openapp=system-fastdeploy%3FtemplateName%3Dgooseek) +[![Deploy on Hostinger](https://assets.hostinger.com/vps/deploy.svg)](https://www.hostinger.com/vps/docker-hosting?compose_url=https://raw.githubusercontent.com/ItzCrazyKns/GooSeek/refs/heads/master/docker-compose.yaml) ## Upcoming Features @@ -245,7 +245,7 @@ Perplexica runs on Next.js and handles all API requests. It works right away on ## Support Us -If you find Perplexica useful, consider giving us a star on GitHub. This helps more people discover Perplexica and supports the development of new features. Your support is greatly appreciated. +If you find GooSeek useful, consider giving us a star on GitHub. This helps more people discover GooSeek and supports the development of new features. Your support is greatly appreciated. ### Donations @@ -257,10 +257,10 @@ We also accept donations to help sustain our project. If you would like to contr ## Contribution -Perplexica is built on the idea that AI and large language models should be easy for everyone to use. If you find bugs or have ideas, please share them in via GitHub Issues. For more information on contributing to Perplexica you can read the [CONTRIBUTING.md](CONTRIBUTING.md) file to learn more about Perplexica and how you can contribute to it. +GooSeek is built on the idea that AI and large language models should be easy for everyone to use. If you find bugs or have ideas, please share them in via GitHub Issues. For more information on contributing to GooSeek you can read the [CONTRIBUTING.md](CONTRIBUTING.md) file to learn more about GooSeek and how you can contribute to it. ## Help and Support If you have any questions or feedback, please feel free to reach out to us. You can create an issue on GitHub or join our Discord server. There, you can connect with other users, share your experiences and reviews, and receive more personalized help. [Click here](https://discord.gg/EFwsmQDgAu) to join the Discord server. To discuss matters outside of regular support, feel free to contact me on Discord at `itzcrazykns`. -Thank you for exploring Perplexica, the AI-powered search engine designed to enhance your search experience. We are constantly working to improve Perplexica and expand its capabilities. We value your feedback and contributions which help us make Perplexica even better. Don't forget to check back for updates and new features! +Thank you for exploring GooSeek, the AI-powered search engine designed to enhance your search experience. We are constantly working to improve GooSeek and expand its capabilities. We value your feedback and contributions which help us make GooSeek even better. Don't forget to check back for updates and new features! diff --git a/docker-compose.yaml b/docker-compose.yaml index 7c0f007..8f47f57 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,14 +1,14 @@ services: - perplexica: - image: itzcrazykns1337/perplexica:latest + gooseek: + image: itzcrazykns1337/gooseek:latest build: context: . ports: - '3000:3000' volumes: - - data:/home/perplexica/data + - data:/home/gooseek/data restart: unless-stopped volumes: data: - name: 'perplexica-data' + name: 'gooseek-data' diff --git a/docs/API/SEARCH.md b/docs/API/SEARCH.md index 0c35a81..79fde52 100644 --- a/docs/API/SEARCH.md +++ b/docs/API/SEARCH.md @@ -1,8 +1,8 @@ -# Perplexica Search API Documentation +# GooSeek Search API Documentation ## Overview -Perplexica’s Search API makes it easy to use our AI-powered search engine. You can run different types of searches, pick the models you want to use, and get the most recent info. Follow the following headings to learn more about Perplexica's search API. +GooSeek’s Search API makes it easy to use our AI-powered search engine. You can run different types of searches, pick the models you want to use, and get the most recent info. Follow the following headings to learn more about GooSeek's search API. ## Endpoints @@ -53,7 +53,7 @@ Use the `id` field as the `providerId` and the `key` field from the models array **Full URL**: `http://localhost:3000/api/search` -**Note**: Replace `localhost:3000` with your Perplexica instance URL if running on a different host or port +**Note**: Replace `localhost:3000` with your GooSeek instance URL if running on a different host or port ### Request @@ -73,12 +73,12 @@ The API accepts a JSON object in the request body, where you define the enabled }, "optimizationMode": "speed", "sources": ["web"], - "query": "What is Perplexica", + "query": "What is GooSeek", "history": [ ["human", "Hi, how are you?"], ["assistant", "I am doing well, how can I help you today?"] ], - "systemInstructions": "Focus on providing technical details about Perplexica's architecture.", + "systemInstructions": "Focus on providing technical details about GooSeek's architecture.", "stream": false } ``` @@ -115,8 +115,8 @@ The API accepts a JSON object in the request body, where you define the enabled ```json [ - ["human", "What is Perplexica?"], - ["assistant", "Perplexica is an AI-powered search engine..."] + ["human", "What is GooSeek?"], + ["assistant", "GooSeek is an AI-powered search engine..."] ] ``` @@ -130,20 +130,20 @@ The response from the API includes both the final message and the sources used t ```json { - "message": "Perplexica is an innovative, open-source AI-powered search engine designed to enhance the way users search for information online. Here are some key features and characteristics of Perplexica:\n\n- **AI-Powered Technology**: It utilizes advanced machine learning algorithms to not only retrieve information but also to understand the context and intent behind user queries, providing more relevant results [1][5].\n\n- **Open-Source**: Being open-source, Perplexica offers flexibility and transparency, allowing users to explore its functionalities without the constraints of proprietary software [3][10].", + "message": "GooSeek is an innovative, open-source AI-powered search engine designed to enhance the way users search for information online. Here are some key features and characteristics of GooSeek:\n\n- **AI-Powered Technology**: It utilizes advanced machine learning algorithms to not only retrieve information but also to understand the context and intent behind user queries, providing more relevant results [1][5].\n\n- **Open-Source**: Being open-source, GooSeek offers flexibility and transparency, allowing users to explore its functionalities without the constraints of proprietary software [3][10].", "sources": [ { - "content": "Perplexica is an innovative, open-source AI-powered search engine designed to enhance the way users search for information online.", + "content": "GooSeek is an innovative, open-source AI-powered search engine designed to enhance the way users search for information online.", "metadata": { - "title": "What is Perplexica, and how does it function as an AI-powered search ...", - "url": "https://askai.glarity.app/search/What-is-Perplexica--and-how-does-it-function-as-an-AI-powered-search-engine" + "title": "What is GooSeek, and how does it function as an AI-powered search ...", + "url": "https://askai.glarity.app/search/What-is-GooSeek--and-how-does-it-function-as-an-AI-powered-search-engine" } }, { - "content": "Perplexica is an open-source AI-powered search tool that dives deep into the internet to find precise answers.", + "content": "GooSeek is an open-source AI-powered search tool that dives deep into the internet to find precise answers.", "metadata": { "title": "Sahar Mor's Post", - "url": "https://www.linkedin.com/posts/sahar-mor_a-new-open-source-project-called-perplexica-activity-7204489745668694016-ncja" + "url": "https://www.linkedin.com/posts/sahar-mor_a-new-open-source-project-called-gooseek-activity-7204489745668694016-ncja" } } .... @@ -160,7 +160,7 @@ Example of streamed response objects: ``` {"type":"init","data":"Stream connected"} {"type":"sources","data":[{"content":"...","metadata":{"title":"...","url":"..."}},...]} -{"type":"response","data":"Perplexica is an "} +{"type":"response","data":"GooSeek is an "} {"type":"response","data":"innovative, open-source "} {"type":"response","data":"AI-powered search engine..."} {"type":"done"} diff --git a/docs/architecture/MICROSERVICES.md b/docs/architecture/MICROSERVICES.md new file mode 100644 index 0000000..3a7e82b --- /dev/null +++ b/docs/architecture/MICROSERVICES.md @@ -0,0 +1,348 @@ +# Архитектура микросервисов GooSeek + +Документ описывает план разбиения монолитного приложения GooSeek на микросервисы. + +--- + +## 1. Текущая архитектура (монолит) + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ Next.js Application (monolith) │ +├─────────────────────────────────────────────────────────────────────────────┤ +│ API Routes │ Agents/Search │ Models/Providers │ Data │ +│ /api/chat │ classifier │ OpenAI, Anthropic │ SQLite│ +│ /api/search │ researcher │ Ollama, Groq... │ config│ +│ /api/images │ widgets │ registry │ uploads│ +│ /api/videos │ writer │ │ │ +│ /api/uploads │ media (image/video) │ │ │ +│ /api/chats │ │ │ │ +│ /api/providers │ │ │ │ +│ /api/config │ │ │ │ +│ /api/suggestions │ │ │ │ +│ /api/weather │ │ │ │ +│ /api/discover │ │ │ │ +└─────────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────────┐ +│ External: SearXNG │ Yahoo Finance │ Open-Meteo │ LLM APIs (OpenAI, etc.) │ +└─────────────────────────────────────────────────────────────────────────────┘ +``` + +--- + +## 2. Предлагаемые микросервисы + +### 2.1 Общая схема + +``` +┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ +│ Frontend │────▶│ Gateway │────▶│ Chat │────▶│ Research │ +│ (Next.js) │ │ (BFF/API) │ │ Service │ │ Service │ +└──────────────┘ └──────────────┘ └──────┬───────┘ └──────┬───────┘ + │ │ │ │ + │ │ │ │ + │ ▼ ▼ ▼ + │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ + │ │ Config/Chats │ │ LLM Proxy │ │ Search │ + └────────────▶│ Service │ │ Service │ │ Service │ + └──────────────┘ └──────────────┘ └──────┬───────┘ + │ │ │ + │ │ │ + ▼ ▼ ▼ + ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ + │ Storage │ │ Providers │ │ Uploads │ + │ Service │ │ (external) │ │ Service │ + └──────────────┘ └──────────────┘ └──────────────┘ +``` + +--- + +## 3. Описание сервисов + +### 3.1 Frontend (Next.js UI) + +**Назначение:** Только UI — страницы, компоненты, клиентский state. + +**Содержимое:** +- `src/app/page.tsx`, `layout.tsx`, маршруты страниц +- `src/components/` — все UI компоненты +- `src/lib/hooks/` — клиентские хуки +- `src/lib/actions.ts` — вызовы к Gateway API + +**Исключить:** Все API routes (`src/app/api/`), серверная логика агентов, прямые вызовы DB. + +**API:** Вызывает только Gateway. + +--- + +### 3.2 Gateway (Backend-for-Frontend / API Gateway) + +**Назначение:** Единая точка входа для клиента, роутинг, валидация, агрегация. + +**Реализация:** Отдельный Node.js сервис (Fastify/Express) или часть Next.js API routes, которая только проксирует. + +**Маршруты:** +- `POST /api/chat` → Chat Service +- `POST /api/search` → Chat Service (API mode) +- `GET/POST /api/chats/*` → Storage Service +- `POST /api/uploads` → Uploads Service +- `GET/POST /api/providers/*` → Config + LLM Proxy +- `GET/POST /api/config/*` → Storage Service (config) +- `POST /api/suggestions` → Chat Service +- `POST /api/images` → Chat/Media Service +- `POST /api/videos` → Chat/Media Service +- `GET /api/weather` → Widgets Service (или inline) +- `POST /api/discover` → Search Service + +**Зависимости:** Chat, Storage, Uploads, Search. Не содержит бизнес-логики. + +--- + +### 3.3 Chat Service (Оркестратор) + +**Назначение:** Главный оркестратор диалога: классификация, планирование, вызов research и writer. + +**Исходники:** +- `src/lib/agents/search/index.ts` — SearchAgent +- `src/lib/agents/search/api.ts` — APISearchAgent +- `src/lib/agents/search/classifier.ts` +- `src/lib/agents/search/widgets/` — executor + виджеты (weather, stock, calc) +- `src/lib/prompts/search/` — classifier, writer, researcher prompts +- `src/lib/session.ts` + +**API (внутренние):** +- `POST /classify` — классификация запроса +- `POST /search` — полный пайплайн (classify → research → widgets → write) +- `POST /suggestions` — генерация подсказок + +**Вызывает:** +- Research Service — для поиска +- LLM Proxy — для LLM вызовов (classify, write, suggestions) +- Widgets (внешние API: Yahoo Finance, погода) — можно вынести в отдельный сервис + +**Поток данных:** +1. Классификация (LLM) +2. Параллельно: Research Service + виджеты +3. Генерация ответа (LLM) +4. Сохранение в Storage (через Gateway или напрямую) + +--- + +### 3.4 Research Service + +**Назначение:** Выполнение исследовательского цикла — tools (web, academic, social, scrape, uploads). + +**Исходники:** +- `src/lib/agents/search/researcher/` — Researcher, ActionRegistry +- `src/lib/agents/search/researcher/actions/` — webSearch, academicSearch, socialSearch, scrapeURL, uploadsSearch, plan, done +- `src/lib/prompts/search/researcher.ts` + +**API:** +- `POST /research` — вход: classification, query, chatHistory, config → выход: searchFindings, findings + +**Вызывает:** +- Search Service — SearXNG (web, academic, social) +- Uploads Service — семантический поиск по файлам +- LLM Proxy — для researcher agent (tool calls) +- Внешние URL — scrape + +**Важно:** Researcher — это LLM-driven agent с tool calls. LLM решает, какой tool вызвать. Либо LLM живёт в Chat Service и вызывает tools по HTTP, либо Research Service сам держит копию researcher LLM — тогда нужно дублировать LLM-вызовы. + +**Рекомендация:** Оставить researcher внутри Chat Service, а в Research Service вынести только **действия** (web search, scrape, uploads search) как отдельные HTTP endpoints. Chat Service вызывает Research Service по каждому tool call. Это уменьшает связанность, но увеличивает сетевые вызовы. + +**Альтернатива:** Research как один сервис с LLM — получает query и classification, сам итерирует и возвращает готовые findings. Меньше round-trips, но дублирование LLM-инфраструктуры. + +--- + +### 3.5 Search Service (SearXNG + обёртка) + +**Назначение:** Обёртка над SearXNG для веб/академического/медиа поиска. + +**Исходники:** +- `src/lib/searxng.ts` +- Вызовы: webSearch, academicSearch, socialSearch, image, video — все идут через `searchSearxng` + +**API:** +- `GET /search?q=...&engines=...&categories=...` +- `GET /images?q=...` +- `GET /videos?q=...` + +**Внешняя зависимость:** SearXNG (уже отдельный сервис/контейнер). + +**Реализация:** Минимальный Node.js/Fastify сервис, который проксирует к SearXNG и добавляет логику (rate limiting, fallback, кэш). + +--- + +### 3.6 Uploads Service + +**Назначение:** Загрузка файлов, парсинг (PDF, DOCX, TXT), эмбеддинги, семантический поиск. + +**Исходники:** +- `src/lib/uploads/manager.ts` — UploadManager +- `src/lib/uploads/store.ts` — UploadStore (поиск по эмбеддингам) +- `src/lib/utils/splitText.ts`, `computeSimilarity.ts` +- Зависимости: pdf-parse, officeparser + +**API:** +- `POST /upload` — multipart, возвращает fileIds +- `POST /search` — query, fileIds → chunks (семантический поиск) +- `GET /files/:id` — метаданные файла + +**Вызывает:** LLM Proxy — только для embedding модели (можно вынести в отдельный Embedding Service). + +**Хранение:** Файлы на диске/volume, `uploaded_files.json`, `.content.json` с chunks. + +--- + +### 3.7 Storage Service + +**Назначение:** Централизованное хранилище: чаты, сообщения, конфигурация. + +**Исходники:** +- `src/lib/db/` — schema, migrations, drizzle +- `src/lib/config/` — ConfigManager, modelProviders + +**API:** +- `GET/POST/PUT/DELETE /chats` +- `GET/POST/PUT/DELETE /chats/:id` +- `GET/POST/PUT/DELETE /messages` +- `GET/POST /config` +- `GET/POST /config/providers` + +**База:** SQLite (или PostgreSQL при масштабировании). config.json можно мигрировать в ту же БД или отдельную таблицу. + +--- + +### 3.8 LLM Proxy Service (опционально) + +**Назначение:** Единая точка для вызовов LLM и embedding — OpenAI, Anthropic, Ollama, Groq, Gemini и т.д. + +**Исходники:** +- `src/lib/models/` — registry, providers, base LLM/Embedding + +**API:** +- `POST /chat` — text generation (streaming) +- `POST /embed` — embedding +- `GET /providers` — список провайдеров и моделей + +**Конфигурация:** Берёт из Storage Service (config/providers) или env. + +**Альтернатива:** LLM Proxy можно не выделять в отдельный сервис — каждый сервис (Chat, Research, Uploads) сам подключается к провайдерам. Но тогда дублирование кода и конфигурации. Рекомендуется вынести в общую библиотеку или отдельный сервис. + +--- + +## 4. Матрица зависимостей + +| Сервис | От кого получает вызовы | Кого вызывает | +|-------------|----------------------------------|----------------------------------| +| Gateway | Frontend | Chat, Storage, Uploads, Search | +| Chat | Gateway | Research, LLM Proxy, Storage | +| Research | Chat | Search, Uploads, LLM Proxy | +| Search | Research, Chat (media) | SearXNG (внешний) | +| Uploads | Gateway, Research | LLM Proxy (embedding) | +| Storage | Gateway, Chat | — | +| LLM Proxy | Chat, Research, Uploads | OpenAI, Anthropic, Ollama... | + +--- + +## 5. Разбиение по репозиториям/папкам + +### Вариант A: Монорепо (рекомендуется для старта) + +``` +gooseek/ +├── apps/ +│ ├── frontend/ # Next.js UI +│ ├── gateway/ # BFF / API Gateway +│ ├── chat-service/ # SearchAgent, classifier, writer, widgets +│ ├── research-service/ # Researcher, actions +│ ├── search-service/ # SearXNG wrapper +│ ├── uploads-service/ # UploadManager, UploadStore +│ ├── storage-service/ # DB, config +│ └── llm-proxy/ # Models registry, providers +├── packages/ +│ ├── shared-types/ # Общие типы, DTO +│ └── shared-utils/ # formatHistory, splitText, computeSimilarity +├── docker-compose.yaml +└── package.json # Turborepo/nx workspace +``` + +### Вариант B: polyrepo + +Отдельные репозитории для каждого сервиса. Больше гибкости в деплое, но сложнее координация изменений. + +--- + +## 6. Порядок миграции (фазы) + +### Фаза 1: Выделение Search Service +- Обернуть SearXNG в отдельный сервис +- Chat/Research вызывают его по HTTP вместо прямого импорта `searchSearxng` +- **Риск:** Низкий. SearXNG уже внешний. + +### Фаза 2: Выделение Storage Service +- Вынести DB + config в отдельный сервис +- Gateway и Chat переходят на HTTP к Storage +- **Риск:** Средний. Много точек входа в DB. + +### Фаза 3: Выделение Uploads Service +- Вынести UploadManager + UploadStore +- Research (uploadsSearch action) и Gateway вызывают Uploads по HTTP +- **Риск:** Средний. Embedding модель — зависимость. + +### Фаза 4: Выделение LLM Proxy +- Общая обёртка над провайдерами +- Chat, Research, Uploads вызывают LLM Proxy +- **Риск:** Высокий. Много мест используют LLM напрямую. + +### Фаза 5: Выделение Research Service +- Researcher + actions в отдельный сервис +- Chat вызывает Research по одному endpoint «проведи исследование» +- **Риск:** Высокий. Тесная связь с Session, streaming. + +### Фаза 6: Gateway + развязка Frontend +- Frontend только UI, все вызовы через Gateway +- Gateway — тонкий роутер без бизнес-логики +- **Риск:** Средний. Рефакторинг API routes. + +--- + +## 7. Ключевые вызовы и риски + +1. **Streaming:** Текущий chat stream идёт от SearchAgent до клиента. При разбиении нужно решить: стримить через Gateway (proxy) или от Chat Service напрямую (WebSocket/SSE через Gateway как туннель). + +2. **Session/state:** SessionManager — in-memory. При масштабировании Chat Service нужен Redis или аналог для shared state. + +3. **Латентность:** Каждый HTTP hop добавляет ~10–50ms. Research делает много итераций — если Research в отдельном сервисе, round-trips умножаются. + +4. **Embedding в Uploads:** Uploads нужна embedding модель. Варианты: вызывать LLM Proxy, или держать тяжёлую модель (transformers) внутри Uploads. + +5. **Конфигурация:** Сейчас config.json на диске. При микросервисах — централизованный config (env, vault, или Storage Service). + +--- + +## 8. Минимальный MVP разбиения + +Если цель — не полный microservices, а **модульность и возможность деплоить части отдельно**: + +| Сервис | Код | Отдельный процесс | +|---------------|-----------------------------|-------------------| +| **search-api**| `searxng.ts` + route | Да (отдельный порт) | +| **uploads-api**| `uploads/` + route | Да | +| **chat** | Всё остальное (agents, LLM, DB) | Один процесс | +| **frontend** | Next.js UI | Отдельно (static/SSR) | + +Так получается 3–4 контейнера вместо 1, но без глубокой декомпозиции логики. + +--- + +## 9. Следующие шаги + +1. Определить: полное разбиение или MVP. +2. Выбрать стек для каждого сервиса (Node.js/Fastify, Next.js API routes, Go и т.д.). +3. Описать контракты API (OpenAPI/JSON Schema) для межсервисного взаимодействия. +4. Настроить docker-compose для локальной разработки. +5. Внедрить общие пакеты (shared-types, shared-utils) в монорепо. +6. Начать с Фазы 1 (Search Service) как пилот. diff --git a/docs/architecture/README.md b/docs/architecture/README.md index 5593b37..7f65520 100644 --- a/docs/architecture/README.md +++ b/docs/architecture/README.md @@ -1,6 +1,6 @@ -# Perplexica Architecture +# GooSeek Architecture -Perplexica is a Next.js application that combines an AI chat experience with search. +GooSeek is a Next.js application that combines an AI chat experience with search. For a high level flow, see [WORKING.md](WORKING.md). For deeper implementation details, see [CONTRIBUTING.md](../../CONTRIBUTING.md). diff --git a/docs/architecture/WORKING.md b/docs/architecture/WORKING.md index af29b90..54c3737 100644 --- a/docs/architecture/WORKING.md +++ b/docs/architecture/WORKING.md @@ -1,6 +1,6 @@ -# How Perplexica Works +# How GooSeek Works -This is a high level overview of how Perplexica answers a question. +This is a high level overview of how GooSeek answers a question. If you want a component level overview, see [README.md](README.md). @@ -58,7 +58,7 @@ We prompt the model to cite the references it used. The UI then renders those ci ## Search API -If you are integrating Perplexica into another product, you can call `POST /api/search`. +If you are integrating GooSeek into another product, you can call `POST /api/search`. It returns: diff --git a/docs/installation/UPDATING.md b/docs/installation/UPDATING.md index 4f2be75..49ccebf 100644 --- a/docs/installation/UPDATING.md +++ b/docs/installation/UPDATING.md @@ -1,60 +1,60 @@ -# Update Perplexica to the latest version +# Update GooSeek to the latest version -To update Perplexica to the latest version, follow these steps: +To update GooSeek to the latest version, follow these steps: ## For Docker users (Using pre-built images) Simply pull the latest image and restart your container: ```bash -docker pull itzcrazykns1337/perplexica:latest -docker stop perplexica -docker rm perplexica -docker run -d -p 3000:3000 -v perplexica-data:/home/perplexica/data --name perplexica itzcrazykns1337/perplexica:latest +docker pull itzcrazykns1337/gooseek:latest +docker stop gooseek +docker rm gooseek +docker run -d -p 3000:3000 -v gooseek-data:/home/gooseek/data --name gooseek itzcrazykns1337/gooseek:latest ``` For slim version: ```bash -docker pull itzcrazykns1337/perplexica:slim-latest -docker stop perplexica -docker rm perplexica -docker run -d -p 3000:3000 -e SEARXNG_API_URL=http://your-searxng-url:8080 -v perplexica-data:/home/perplexica/data --name perplexica itzcrazykns1337/perplexica:slim-latest +docker pull itzcrazykns1337/gooseek:slim-latest +docker stop gooseek +docker rm gooseek +docker run -d -p 3000:3000 -e SEARXNG_API_URL=http://your-searxng-url:8080 -v gooseek-data:/home/gooseek/data --name gooseek itzcrazykns1337/gooseek:slim-latest ``` Once updated, go to http://localhost:3000 and verify the latest changes. Your settings are preserved automatically. ## For Docker users (Building from source) -1. Navigate to your Perplexica directory and pull the latest changes: +1. Navigate to your GooSeek directory and pull the latest changes: ```bash - cd Perplexica + cd GooSeek git pull origin master ``` 2. Rebuild the Docker image: ```bash - docker build -t perplexica . + docker build -t gooseek . ``` 3. Stop and remove the old container, then start the new one: ```bash - docker stop perplexica - docker rm perplexica - docker run -p 3000:3000 -p 8080:8080 --name perplexica perplexica + docker stop gooseek + docker rm gooseek + docker run -p 3000:3000 -p 8080:8080 --name gooseek gooseek ``` 4. Once the command completes, go to http://localhost:3000 and verify the latest changes. ## For non-Docker users -1. Navigate to your Perplexica directory and pull the latest changes: +1. Navigate to your GooSeek directory and pull the latest changes: ```bash - cd Perplexica + cd GooSeek git pull origin master ``` diff --git a/entrypoint.sh b/entrypoint.sh index 1d15d1c..08a78e3 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -26,7 +26,7 @@ else echo "SearXNG may not be fully ready, but continuing (PID: $SEARXNG_PID)" fi -cd /home/perplexica -echo "Starting Perplexica..." +cd /home/gooseek +echo "Starting GooSeek..." exec node server.js \ No newline at end of file diff --git a/package.json b/package.json index b8d99c5..04509a9 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "perplexica", + "name": "gooseek", "version": "1.12.1", "license": "MIT", "author": "ItzCrazyKns", diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 535a0e0..eb3545d 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -19,9 +19,9 @@ const montserrat = Montserrat({ }); export const metadata: Metadata = { - title: 'Perplexica - Chat with the internet', + title: 'GooSeek - Chat with the internet', description: - 'Perplexica is an AI powered chatbot that is connected to the internet.', + 'GooSeek is an AI powered chatbot that is connected to the internet.', }; export default function RootLayout({ diff --git a/src/app/library/layout.tsx b/src/app/library/layout.tsx index 00d4a3b..835edf6 100644 --- a/src/app/library/layout.tsx +++ b/src/app/library/layout.tsx @@ -2,7 +2,7 @@ import { Metadata } from 'next'; import React from 'react'; export const metadata: Metadata = { - title: 'Library - Perplexica', + title: 'Library - GooSeek', }; const Layout = ({ children }: { children: React.ReactNode }) => { diff --git a/src/app/manifest.ts b/src/app/manifest.ts index 792e752..e7193da 100644 --- a/src/app/manifest.ts +++ b/src/app/manifest.ts @@ -2,10 +2,10 @@ import type { MetadataRoute } from 'next'; export default function manifest(): MetadataRoute.Manifest { return { - name: 'Perplexica - Chat with the internet', - short_name: 'Perplexica', + name: 'GooSeek - Chat with the internet', + short_name: 'GooSeek', description: - 'Perplexica is an AI powered chatbot that is connected to the internet.', + 'GooSeek is an AI powered chatbot that is connected to the internet.', start_url: '/', display: 'standalone', background_color: '#0a0a0a', diff --git a/src/app/page.tsx b/src/app/page.tsx index 2f3bd36..6e8b014 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -2,8 +2,8 @@ import ChatWindow from '@/components/ChatWindow'; import { Metadata } from 'next'; export const metadata: Metadata = { - title: 'Chat - Perplexica', - description: 'Chat with the internet, chat with Perplexica.', + title: 'Chat - GooSeek', + description: 'Chat with the internet, chat with GooSeek.', }; const Home = () => { diff --git a/src/components/Chat.tsx b/src/components/Chat.tsx index e7ef6eb..84be5f1 100644 --- a/src/components/Chat.tsx +++ b/src/components/Chat.tsx @@ -49,7 +49,7 @@ const Chat = () => { }; if (messages.length === 1) { - document.title = `${messages[0].query.substring(0, 30)} - Perplexica`; + document.title = `${messages[0].query.substring(0, 30)} - GooSeek`; } if (sections.length > lastScrolledRef.current) { diff --git a/src/components/Settings/SettingsDialogue.tsx b/src/components/Settings/SettingsDialogue.tsx index f42ce9c..4b79ccd 100644 --- a/src/components/Settings/SettingsDialogue.tsx +++ b/src/components/Settings/SettingsDialogue.tsx @@ -154,7 +154,7 @@ const SettingsDialogue = ({ Version: {process.env.NEXT_PUBLIC_VERSION}

Welcome to{' '} - Perplexica + GooSeek Let us get{' '} - Perplexica + GooSeek {' '} set up for you diff --git a/src/lib/agents/search/widgets/weatherWidget.ts b/src/lib/agents/search/widgets/weatherWidget.ts index 4739324..3bc5a5c 100644 --- a/src/lib/agents/search/widgets/weatherWidget.ts +++ b/src/lib/agents/search/widgets/weatherWidget.ts @@ -90,7 +90,7 @@ const weatherWidget: Widget = { const locationRes = await fetch(openStreetMapUrl, { headers: { - 'User-Agent': 'Perplexica', + 'User-Agent': 'GooSeek', 'Content-Type': 'application/json', }, }); @@ -109,7 +109,7 @@ const weatherWidget: Widget = { `https://api.open-meteo.com/v1/forecast?latitude=${location.lat}&longitude=${location.lon}¤t=temperature_2m,relative_humidity_2m,apparent_temperature,is_day,precipitation,rain,showers,snowfall,weather_code,cloud_cover,pressure_msl,surface_pressure,wind_speed_10m,wind_direction_10m,wind_gusts_10m&hourly=temperature_2m,precipitation_probability,precipitation,weather_code&daily=weather_code,temperature_2m_max,temperature_2m_min,precipitation_sum,precipitation_probability_max&timezone=auto&forecast_days=7`, { headers: { - 'User-Agent': 'Perplexica', + 'User-Agent': 'GooSeek', 'Content-Type': 'application/json', }, }, @@ -143,7 +143,7 @@ const weatherWidget: Widget = { `https://api.open-meteo.com/v1/forecast?latitude=${params.lat}&longitude=${params.lon}¤t=temperature_2m,relative_humidity_2m,apparent_temperature,is_day,precipitation,rain,showers,snowfall,weather_code,cloud_cover,pressure_msl,surface_pressure,wind_speed_10m,wind_direction_10m,wind_gusts_10m&hourly=temperature_2m,precipitation_probability,precipitation,weather_code&daily=weather_code,temperature_2m_max,temperature_2m_min,precipitation_sum,precipitation_probability_max&timezone=auto&forecast_days=7`, { headers: { - 'User-Agent': 'Perplexica', + 'User-Agent': 'GooSeek', 'Content-Type': 'application/json', }, }, @@ -152,7 +152,7 @@ const weatherWidget: Widget = { `https://nominatim.openstreetmap.org/reverse?lat=${params.lat}&lon=${params.lon}&format=json`, { headers: { - 'User-Agent': 'Perplexica', + 'User-Agent': 'GooSeek', 'Content-Type': 'application/json', }, }, diff --git a/src/lib/prompts/search/writer.ts b/src/lib/prompts/search/writer.ts index 02ec6de..0ec92a7 100644 --- a/src/lib/prompts/search/writer.ts +++ b/src/lib/prompts/search/writer.ts @@ -4,7 +4,7 @@ export const getWriterPrompt = ( mode: 'speed' | 'balanced' | 'quality', ) => { return ` -You are Perplexica, an AI model skilled in web search and crafting detailed, engaging, and well-structured answers. You excel at summarizing web pages and extracting relevant information to create professional, blog-style responses. +You are GooSeek, an AI model skilled in web search and crafting detailed, engaging, and well-structured answers. You excel at summarizing web pages and extracting relevant information to create professional, blog-style responses. Your task is to provide answers that are: - **Informative and relevant**: Thoroughly address the user's query using the given context.