Giter VIP home page Giter VIP logo

h0llyw00dzz / chatgpt-next-web Goto Github PK

View Code? Open in Web Editor NEW

This project forked from chatgptnextweb/chatgpt-next-web

18.0 2.0 8.0 16.69 MB

A well-designed cross-platform ChatGPT UI (Web / PWA / Linux / Win / MacOS). 一键拥有你自己的跨平台 ChatGPT 应用。

Home Page: https://hackerchat.btz.sh

License: MIT License

Shell 0.28% JavaScript 0.62% Rust 0.04% TypeScript 89.84% Dockerfile 0.17% SCSS 9.04%

chatgpt-next-web's Introduction

icon

ChatGPT Next Web

English / 简体中文

One-Click to get a well-designed cross-platform ChatGPT web UI, with GPT3, GPT4 & Gemini Pro support.

一键免费部署你的跨平台私人 ChatGPT 应用, 支持 GPT3, GPT4 & Gemini Pro 模型。

Web Windows MacOS Linux

Web App / Desktop App / Discord / Twitter

网页版 / 客户端 / 反馈

Deploy with Vercel

Open in Gitpod

cover

Features

  • Deploy for free with one-click on Vercel in under 1 minute
  • Compact client (~5MB) on Linux/Windows/MacOS, download it now
  • Fully compatible with self-deployed LLMs, recommended for use with RWKV-Runner or LocalAI
  • Privacy first, all data is stored locally in the browser
  • Markdown support: LaTex, mermaid, code highlight, etc.
  • Responsive design, dark mode and PWA
  • Fast first screen loading speed (~100kb), support streaming response
  • New in v2: create, share and debug your chat tools with prompt templates (mask)
  • Awesome prompts powered by awesome-chatgpt-prompts-zh and awesome-chatgpt-prompts
  • Automatically compresses chat history to support long conversations while also saving your tokens
  • I18n: English, 简体中文, 繁体中文, 日本語, Français, Español, Italiano, Türkçe, Deutsch, Tiếng Việt, Русский, Čeština, 한국어, Indonesia

Roadmap

  • System Prompt: pin a user defined prompt as system prompt #138
  • User Prompt: user can edit and save custom prompts to prompt list
  • Prompt Template: create a new chat with pre-defined in-context prompts #993
  • Share as image, share to ShareGPT #1741
  • Desktop App with tauri
  • Self-host Model: Fully compatible with RWKV-Runner, as well as server deployment of LocalAI: llama/gpt4all/rwkv/vicuna/koala/gpt4all-j/cerebras/falcon/dolly etc.
  • Plugins: support network search, calculator, any other apis etc. #165

What's New

  • 🚀 v2.10.1 support Google Gemini Pro model.
  • 🚀 v2.9.11 you can use azure endpoint now.
  • 🚀 v2.8 now we have a client that runs across all platforms!
  • 🚀 v2.7 let's share conversations as image, or share to ShareGPT!
  • 🚀 v2.0 is released, now you can create prompt templates, turn your ideas into reality! Read this: ChatGPT Prompt Engineering Tips: Zero, One and Few Shot Prompting.

主要功能

  • 在 1 分钟内使用 Vercel 免费一键部署
  • 提供体积极小(~5MB)的跨平台客户端(Linux/Windows/MacOS), 下载地址
  • 完整的 Markdown 支持:LaTex 公式、Mermaid 流程图、代码高亮等等
  • 精心设计的 UI,响应式设计,支持深色模式,支持 PWA
  • 极快的首屏加载速度(~100kb),支持流式响应
  • 隐私安全,所有数据保存在用户浏览器本地
  • 预制角色功能(面具),方便地创建、分享和调试你的个性化对话
  • 海量的内置 prompt 列表,来自中文英文
  • 自动压缩上下文聊天记录,在节省 Token 的同时支持超长对话
  • 多国语言支持:English, 简体中文, 繁体中文, 日本語, Español, Italiano, Türkçe, Deutsch, Tiếng Việt, Русский, Čeština, 한국어, Indonesia
  • 拥有自己的域名?好上加好,绑定后即可在任何地方无障碍快速访问

开发计划

  • 为每个对话设置系统 Prompt #138
  • 允许用户自行编辑内置 Prompt 列表
  • 预制角色:使用预制角色快速定制新对话 #993
  • 分享为图片,分享到 ShareGPT 链接 #1741
  • 使用 tauri 打包桌面应用
  • 支持自部署的大语言模型:开箱即用 RWKV-Runner ,服务端部署 LocalAI 项目 llama / gpt4all / rwkv / vicuna / koala / gpt4all-j / cerebras / falcon / dolly 等等,或者使用 api-for-open-llm
  • 插件机制,支持联网搜索、计算器、调用其他平台 api #165

最新动态

  • 🚀 v2.0 已经发布,现在你可以使用面具功能快速创建预制对话了! 了解更多: ChatGPT 提示词高阶技能:零次、一次和少样本提示
  • 💡 想要更方便地随时随地使用本项目?可以试下这款桌面插件:https://github.com/mushan0x0/AI0x0.com
  • 🚀 v2.7 现在可以将会话分享为图片了,也可以分享到 ShareGPT 的在线链接。
  • 🚀 v2.8 发布了横跨 Linux/Windows/MacOS 的体积极小的客户端。
  • 🚀 v2.9.11 现在可以使用自定义 Azure 服务了。

Get Started

简体中文 > 如何开始使用

  1. Get OpenAI API Key;
  2. Click Deploy with Vercel, remember that CODE is your page password;
  3. Enjoy :)

FAQ

简体中文 > 常见问题

English > FAQ

Keep Updated

简体中文 > 如何保持代码更新

If you have deployed your own project with just one click following the steps above, you may encounter the issue of "Updates Available" constantly showing up. This is because Vercel will create a new project for you by default instead of forking this project, resulting in the inability to detect updates correctly.

We recommend that you follow the steps below to re-deploy:

  • Delete the original repository;
  • Use the fork button in the upper right corner of the page to fork this project;
  • Choose and deploy in Vercel again, please see the detailed tutorial.

Enable Automatic Updates

If you encounter a failure of Upstream Sync execution, please manually sync fork once.

After forking the project, due to the limitations imposed by GitHub, you need to manually enable Workflows and Upstream Sync Action on the Actions page of the forked project. Once enabled, automatic updates will be scheduled every hour:

Automatic Updates

Enable Automatic Updates

Manually Updating Code

If you want to update instantly, you can check out the GitHub documentation to learn how to synchronize a forked project with upstream code.

You can star or watch this project or follow author to get release notifications in time.

Access Password

简体中文 > 如何增加访问密码

This project provides limited access control. Please add an environment variable named CODE on the vercel environment variables page. The value should be passwords separated by comma like this:

code1,code2,code3

After adding or modifying this environment variable, please redeploy the project for the changes to take effect.

Environment Variables

简体中文 > 如何配置 api key、访问密码、接口代理

CODE (optional)

Access password, separated by comma.

OPENAI_API_KEY (required)

Your openai api key, join multiple api keys with comma.

BASE_URL (optional)

Default: https://api.openai.com

Examples: http://your-openai-proxy.com

Override openai api request base url.

OPENAI_ORG_ID (optional)

Specify OpenAI organization ID.

AZURE_URL (optional)

Example: https://{azure-resource-url}/openai/deployments/{deploy-name}

Azure deploy url.

AZURE_API_KEY (optional)

Azure Api Key.

AZURE_API_VERSION (optional)

Azure Api Version, find it at Azure Documentation.

GOOGLE_API_KEY (optional)

Google Gemini Pro Api Key.

GOOGLE_URL (optional)

Google Gemini Pro Api Url.

HIDE_USER_API_KEY (optional)

Default: Empty

If you do not want users to input their own API key, set this value to 1.

DISABLE_GPT4 (optional)

Default: Empty

If you do not want users to use GPT-4, set this value to 1.

ENABLE_BALANCE_QUERY (optional)

Default: Empty

If you do want users to query balance, set this value to 1, or you should set it to 0.

DISABLE_FAST_LINK (optional)

Default: Empty

If you want to disable parse settings from url, set this to 1.

CUSTOM_MODELS (optional)

Default: Empty Example: +llama,+claude-2,-gpt-3.5-turbo,gpt-4-1106-preview=gpt-4-turbo means add llama, claude-2 to model list, and remove gpt-3.5-turbo from list, and display gpt-4-1106-preview as gpt-4-turbo.

To control custom models, use + to add a custom model, use - to hide a model, use name=displayName to customize model name, separated by comma.

User -all to disable all default models, +all to enable all default models.

Requirements

NodeJS >= 18, Docker >= 20

Development

简体中文 > 如何进行二次开发

Open in Gitpod

Before starting development, you must create a new .env.local file at project root, and place your api key into it:

OPENAI_API_KEY=<your api key here>

# if you are not able to access openai service, use this BASE_URL
BASE_URL=https://chatgpt1.nextweb.fun/api/proxy

Local Development

# 1. install nodejs and yarn first
# 2. config local env vars in `.env.local`
# 3. run
yarn install
yarn dev

Deployment

简体中文 > 如何部署到私人服务器

Docker (Recommended)

docker pull yidadaa/chatgpt-next-web

docker run -d -p 3000:3000 \
   -e OPENAI_API_KEY=sk-xxxx \
   -e CODE=your-password \
   yidadaa/chatgpt-next-web

You can start service behind a proxy:

docker run -d -p 3000:3000 \
   -e OPENAI_API_KEY=sk-xxxx \
   -e CODE=your-password \
   -e PROXY_URL=http://localhost:7890 \
   yidadaa/chatgpt-next-web

If your proxy needs password, use:

-e PROXY_URL="http://127.0.0.1:7890 user pass"

Shell

bash <(curl -s https://raw.githubusercontent.com/Yidadaa/ChatGPT-Next-Web/main/scripts/setup.sh)

Synchronizing Chat Records (UpStash)

| 简体中文 | English | Italiano | 日本語 | 한국어

Documentation

Please go to the [docs][./docs] directory for more documentation instructions.

External Tools

List tools are compatible with this repo (e.g, can be used for text embedding,training models AI,fine-tuning openai)

Screenshots

Settings

More

Translation

If you want to add a new translation, read this document.

Donation

Buy Me a Coffee

Special Thanks

Sponsor

仅列出捐赠金额 >= 100RMB 的用户。

@mushan0x0 @ClarenceDan @zhangjia @hoochanlon @relativequantum @desenmeng @webees @chazzhou @hauy @Corwin006 @yankunsong @ypwhs @fxxxchao @hotic @WingCH @jtung4 @micozhu @jhansion @Sha1rholder @AnsonHyq @synwith @piksonGit @ouyangzhiping @wenjiavv @LeXwDeX @Licoy @shangmin2009

Contributors

LICENSE

MIT

chatgpt-next-web's People

Contributors

actions-user avatar aprilnea avatar cesaryuan avatar clarencedan avatar clarenceyk avatar cyhhao avatar danielgwilson avatar darth-pika-hu avatar dependabot[bot] avatar eltociear avatar fyl080801 avatar gan-xing avatar h0llyw00dzz avatar ilario92 avatar imldy avatar iscandurra avatar isource avatar leedom92 avatar parad1se98 avatar pbrambi avatar pengoosedev avatar quark-zju avatar rugermccarthy avatar stonega avatar tscherrie avatar xiaotianxt avatar yancode avatar yidadaa avatar yorunning avatar yunwuu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

chatgpt-next-web's Issues

[Bug] CF部署,正常设置环境变量报错

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:
报错内容如下,环境变量设置了BASE_URL 、OPENAI_API_KEY这两个,直接进去提问报错,手动在设置里面设置BASE_URL和key没有报错出现,只有设置环境变量的时候会出现,且Vercel部署没有这个问题
{
"error": true,
"msg": "Access Forbidden"
}

Deployment
cloudflare

Desktop (please complete the following information):
Browser

[Bug] [Markdown] Unsolved TypeScript React and Next.js Interpreter [Escape DollarSign from LaTeX]

Describe the bug
The issue involves the TypeScript React and Next.js interpreter regarding the inability to escape the dollar sign from LaTeX. Despite attempts, a solution for this problem has not been found yet. This means that when using LaTeX within the TypeScript React and Next.js environment, the dollar sign cannot be properly escaped, leading to unexpected behavior or errors.

Additional Logs
This just a note for future context

[Question]: Openai Assistant Integration

Problem Description

Hello
Can you please advise me how I can connect an assistant, from https://platform.openai.com/assistants, which I already have set up.
My task is to embed information into my model, based on which the AI will give me answers. So I decided to do this through the openai assistant. But I couldn't figure out how to hook it up in this interface.

GPT-4 Vision Preview Cutting Off Result Message [Bug]

Bug Description

I'm writing to report a bug I've encountered while using the GPT-4 Vision Preview feature in the app. The feature is cutting off the result message, showing only a single line, and not displaying the full message.

Steps to Reproduce

  1. Open the app and change model to the GPT-4 Vision Preview.
  2. Input a prompt and image in the field.
  3. Click on the "Send" button to see the preview.

Expected Behavior

The GPT-4 Vision Preview should display the full result message, without cutting it off or truncating it.

Screenshots

No response

Deployment Method

  • Docker
  • Vercel
  • Server

Desktop OS

No response

Desktop Browser

No response

Desktop Browser Version

No response

Smartphone Device

No response

Smartphone OS

No response

Smartphone Browser

No response

Smartphone Browser Version

No response

Additional Logs

No response

Duplicate settings items

🤔The repeated list items appear to have duplicate settings for Temperature, TopP, InputTemplate, and historyMessageCount.

<ListItem
title={Locale.Settings.Temperature.Title}
subTitle={Locale.Settings.Temperature.SubTitle}
>
<InputRange
value={props.modelConfig.temperature?.toFixed(1)}
min="0"
max="1" // lets limit it to 0-1
step="0.1"
onChange={(e) => {
props.updateConfig(
(config) =>
(config.temperature = ModalConfigValidator.temperature(
e.currentTarget.valueAsNumber,
)),
);
}}
></InputRange>
</ListItem>
<ListItem
title={Locale.Settings.TopP.Title}
subTitle={Locale.Settings.TopP.SubTitle}
>
<InputRange
value={(props.modelConfig.top_p ?? 1).toFixed(1)}
min="0"
max="1"
step="0.1"
onChange={(e) => {
props.updateConfig(
(config) =>
(config.top_p = ModalConfigValidator.top_p(
e.currentTarget.valueAsNumber,
)),
);
}}
></InputRange>
</ListItem>
<ListItem
title={Locale.Settings.Temperature.Title}
subTitle={Locale.Settings.Temperature.SubTitle}
>
<InputRange
value={props.modelConfig.temperature?.toFixed(1)}
min="0"
max="1" // lets limit it to 0-1
step="0.1"
onChange={(e) => {
props.updateConfig(
(config) =>
(config.temperature = ModalConfigValidator.temperature(
e.currentTarget.valueAsNumber,
)),
);
}}
></InputRange>
</ListItem>
<ListItem
title={Locale.Settings.TopP.Title}
subTitle={Locale.Settings.TopP.SubTitle}
>
<InputRange
value={(props.modelConfig.top_p ?? 1).toFixed(1)}
min="0"
max="1"
step="0.1"
onChange={(e) => {
props.updateConfig(
(config) =>
(config.top_p = ModalConfigValidator.top_p(
e.currentTarget.valueAsNumber,
)),
);
}}
></InputRange>
</ListItem>

<ListItem
title={Locale.Settings.InputTemplate.Title}
subTitle={Locale.Settings.InputTemplate.SubTitle}
>
<input
type="text"
value={props.modelConfig.template}
onChange={(e) =>
props.updateConfig(
(config) => (config.template = e.currentTarget.value),
)
}
></input>
</ListItem>
</>
)}
<ListItem
title={Locale.Settings.HistoryCount.Title}
subTitle={Locale.Settings.HistoryCount.SubTitle}
>
<InputRange
title={props.modelConfig.historyMessageCount.toString()}
value={props.modelConfig.historyMessageCount}
min="0"
max="64"
step="1"
onChange={(e) =>
props.updateConfig(
(config) => (config.historyMessageCount = e.target.valueAsNumber),
)
}
></InputRange>
</ListItem>
<ListItem
title={Locale.Settings.InputTemplate.Title}
subTitle={Locale.Settings.InputTemplate.SubTitle}
>
<input
type="text"
value={props.modelConfig.template}
onChange={(e) =>
props.updateConfig(
(config) => (config.template = e.currentTarget.value),
)
}
></input>
</ListItem>
<ListItem
title={Locale.Settings.HistoryCount.Title}
subTitle={Locale.Settings.HistoryCount.SubTitle}
>
<InputRange
title={props.modelConfig.historyMessageCount.toString()}
value={props.modelConfig.historyMessageCount}
min="0"
max="64"
step="1"
onChange={(e) =>
props.updateConfig(
(config) => (config.historyMessageCount = e.target.valueAsNumber),
)
}
></InputRange>
</ListItem>

Custom Endpoint Groq not Working [Bug]

Bug Description

Screenshot_2024-03-07-22-11-38-803_com android chrome
Just set custom endpoint for groq but its not working

Stuck over there
Screenshot_2024-03-07-22-11-51-623_com android chrome

Steps to Reproduce

  1. Enable custom endpoint
  2. Input groq api key
  3. Set endpoint https://api.groq.com/openai/
  4. Custom model mixtral-8x7b-32768,llama2-70b-4096

Expected Behavior

Working as fine. Get result fast

Screenshots

No response

Deployment Method

  • Docker
  • Vercel
  • Server

Desktop OS

No response

Desktop Browser

No response

Desktop Browser Version

No response

Smartphone Device

No response

Smartphone OS

No response

Smartphone Browser

No response

Smartphone Browser Version

No response

Additional Logs

No response

[Bug] 使用dall-e-3模型时图片渲染问题

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
图片渲染错误
image

Deployment
Vercel

Desktop (please complete the following information):
chrome

Smartphone (please complete the following information):

  • Browser

[Feature] Some suggestions

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Suggestions

  1. Unnecessary addition of too many models can be avoided by keeping only the following. Refer to the official feature Continuous model upgrades
CUSTOM_MODELS=-all,+gpt-3.5-turbo,+gpt-3.5-turbo-16k,+gpt-4,+gpt-4-32k,+gpt-4-1106-preview,+gpt-4-vision-preview,+dall-e-3,+dall-e-3-beta-instruct-vision
  1. Consider merging another repository to enhance plugin functionality (https://github.com/Hk-Gosuto/ChatGPT-Next-Web-LangChain#%E4%B8%BB%E8%A6%81%E5%8A%9F%E8%83%BD)

[Bug] The "Local Data" interface does not display the quantity at the beginning of "Dialogue," "Mask," and "Prompt" sections.

Describe the bug
The "Local Data" interface does not display the quantity at the beginning of "Dialogue," "Mask," and "Prompt" sections.

Expected behavior
"Dialogue," "Mask," and "Prompt" sections include quantity display.

Screenshots
1700703900992

Deployment

  • Docker
  • [ √ ] Vercel
  • Server

Desktop (please complete the following information):

  • Browser [e.g. chrome, safari]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional Logs
Add any logs about the problem here.

[Feature] 希望可以增加多种文档上传分析的插件,并且支持联网

为了提高交流效率,我们设立了官方 QQ 群和 QQ 频道,如果你在使用或者搭建过程中遇到了任何问题,请先第一时间加群或者频道咨询解决,除非是可以稳定复现的 Bug 或者较为有创意的功能建议,否则请不要随意往 Issue 区发送低质无意义帖子。

点击加入官方群聊

这个功能与现有的问题有关吗?
如果有关,请在此列出链接或者描述问题。

你想要什么功能或者有什么建议?
尽管告诉我们。

有没有可以参考的同类竞品?
可以给出参考产品的链接或者截图。

其他信息
可以说说你的其他考虑。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.