From e4f87e4de236bd20f023f39eff2b7204cb201881 Mon Sep 17 00:00:00 2001 From: Ikko Eltociear Ashimine Date: Sat, 24 Jun 2023 05:27:49 +0900 Subject: [PATCH 1/3] Add Japanese README (#70) --- README.md | 2 +- README.zh-CN.md | 2 +- README_JA-JP.md | 81 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 README_JA-JP.md diff --git a/README.md b/README.md index 369824c3..03e6471c 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # Anse -English | [简体中文](./README.zh-CN.md) +English | [简体中文](./README.zh-CN.md) | [日本語](./README_JA-JP.md) Anse is a fully optimized UI for AI Chats. diff --git a/README.zh-CN.md b/README.zh-CN.md index 4863179e..dfe59495 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -2,7 +2,7 @@ # Anse -[English](./README.md) | 简体中文 +[English](./README.md) | 简体中文 | [日本語](./README_JA-JP.md) Anse 是一个极致优化的 AI 聊天 UI. diff --git a/README_JA-JP.md b/README_JA-JP.md new file mode 100644 index 00000000..4f6a867b --- /dev/null +++ b/README_JA-JP.md @@ -0,0 +1,81 @@ +![Banner](https://user-images.githubusercontent.com/1998168/235366625-e615e68d-592c-4f18-9c9f-1e5cd1778557.png) + +# Anse + +[English](./README.md) | [简体中文](./README.zh-CN.md) | 日本語 + +Anse は AI チャット用に完全に最適化された UI です。 + +- 🍿 **ライブプレビュー**: https://anse.app +- 📖 **ドキュメント**: https://docs.anse.app +- ✨ **リリースノート**: https://github.com/anse-app/anse/releases + +## 特徴 + +- **🚀 強力なプラグインシステム** - [OpenAI](https://openai.com/) や [Replicate](https://replicate.com/) のような AI プラットフォームを簡単に拡張できる `Provider plugin` を搭載し、カスタムモデルのパラメータもサポートしています。 +- **💬 セッションレコードの保存** - `IndexDB` を使用してローカルデータを保存し、サーバーにアップロードすることはありません。 +- **🎉 複数のセッションモード** - 様々な会話モードを提供し、`Single Conversation`, `Continuous Conversation`, `OpenAI Image Generation`、`Stable Diffusion` などをサポートします。 +- **💎 UI エクスペリエンスの向上** - 前バージョンのウェブサイトのUIをリファクタリングし、多くの細部を最適化し、`mobile end` と `dark mode` にも対応しました。 +- **🌈 ワンクリックデプロイ** - [Vercel](https://vercel.com/)、[Netlify](https://www.netlify.com/)、`Docker`、`Node` やその他のプラットフォームにウェブサイトをデプロイするには、私たちのドキュメントを参照することができます。 + +## ローカル実行 + +### プレ環境 +1. **Node**: 開発環境とデプロイ環境の両方が `Node v18` 以降であることを確認してください。[nvm](https://github.com/nvm-sh/nvm) を使えば、複数の `node` バージョンをローカルで管理することができます。 + ```bash + node -v + ``` +2. **PNPM**: 依存関係の管理には [pnpm](https://pnpm.io/) を使うことをお勧めします。pnpm をインストールしたことがない場合は、以下のコマンドでインストールできます: + ```bash + npm i -g pnpm + ``` +3. **OPENAI_API_KEY**: このアプリケーションを実行する前に、OpenAI から API キーを取得する必要があります。API キーの登録は [https://beta.openai.com/signup](https://beta.openai.com/signup) から行えます。 + +### はじめに + +1. 依存関係のインストール + ```bash + pnpm install + ``` +2. アプリケーションを実行することで、ローカルプロジェクトは `http://localhost:3000/` で実行 + ```bash + pnpm run dev + ``` +3. 設定パネルに [OpenAI API キー](https://platform.openai.com/account/api-keys)を追加して、お楽しみください! + +## デプロイ方法 +詳細はこちらをご覧ください: https://docs.anse.app/self-deploy + +## 自動アップデートの有効化 + +プロジェクトをフォークした後、フォークしたプロジェクトのアクションページでワークフローとアップストリーム同期アクションを手動で有効にする必要があります。有効にすると、自動更新が毎日スケジュールされます: + +![](https://cdn.staticaly.com/gh/yzh990918/static@master/20230518/image.2omctdf8bbk0.webp) +## よくある質問 + +Q: TypeError: フェッチに失敗しました。 + +A: 参照: https://github.com/anse-app/chatgpt-demo/issues/34 + +Q: throw new TypeError(`${context}` is not a ReadableStream.) + +A: Node のバージョンが `v18` 以降である必要があります,参考: https://github.com/anse-app/chatgpt-demo/issues/65 + +Q: プロキシを導入することなく国内アクセスを高速化するチュートリアルはありますか? + +A: こちらのチュートリアルをご参照ください: https://github.com/anse-app/chatgpt-demo/discussions/270 + +Q: `PWA` が動作しません。 + +A: 現在の `PWA` は Netlify へのデプロイをサポートしていません。 +## コントリビュート + +このプロジェクトが存在するのは、コントリビュートしてくださったすべての方々のおかげです。 + +サポーターの皆さん、ありがとうございました!🙏 + +[![img](https://contrib.rocks/image?repo=anse-app/anse)](https://github.com/anse-app/anse/graphs/contributors) + +## ライセンス + +MIT © [ddiu8081](https://github.com/anse-app/anse/blob/main/LICENSE) From 3c2b344364823c340d9e93271839983f6a8c9144 Mon Sep 17 00:00:00 2001 From: chancel <38032874+chancelyg@users.noreply.github.com> Date: Wed, 28 Jun 2023 17:36:56 +0800 Subject: [PATCH 2/3] feat: set the length of the historical message (#75) --- src/providers/openai/handler.ts | 26 ++++++++++++++++++++++++-- src/providers/openai/index.ts | 10 ++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/providers/openai/handler.ts b/src/providers/openai/handler.ts index ba7a216f..82785282 100644 --- a/src/providers/openai/handler.ts +++ b/src/providers/openai/handler.ts @@ -1,5 +1,6 @@ import { fetchChatCompletion, fetchImageGeneration } from './api' import { parseStream } from './parser' +import type { Message } from '@/types/message' import type { HandlerPayload, Provider } from '@/types/provider' export const handlePrompt: Provider['handlePrompt'] = async(payload, signal?: AbortSignal) => { @@ -35,14 +36,35 @@ export const handleRapidPrompt: Provider['handleRapidPrompt'] = async(prompt, gl } const handleChatCompletion = async(payload: HandlerPayload, signal?: AbortSignal) => { + // An array to store the chat messages + const messages: Message[] = [] + + let maxTokens = payload.globalSettings.maxTokens as number + let messageHistorySize = payload.globalSettings.messageHistorySize as number + + // Iterate through the message history + while (messageHistorySize > 0) { + messageHistorySize-- + // Get the last message from the payload + const m = payload.messages.pop() + if (m === undefined) + break + + if (maxTokens - m.content.length < 0) + break + + maxTokens -= m.content.length + messages.unshift(m) + } + const response = await fetchChatCompletion({ apiKey: payload.globalSettings.apiKey as string, baseUrl: (payload.globalSettings.baseUrl as string).trim().replace(/\/$/, ''), body: { + messages, + max_tokens: maxTokens, model: payload.globalSettings.model as string, - messages: payload.messages, temperature: payload.globalSettings.temperature as number, - max_tokens: payload.globalSettings.maxTokens as number, top_p: payload.globalSettings.topP as number, stream: payload.globalSettings.stream as boolean ?? true, }, diff --git a/src/providers/openai/index.ts b/src/providers/openai/index.ts index 348609c4..e0017cf9 100644 --- a/src/providers/openai/index.ts +++ b/src/providers/openai/index.ts @@ -51,6 +51,16 @@ const providerOpenAI = () => { default: 2048, step: 1, }, + { + key: 'messageHistorySize', + name: 'Max History Message Size', + description: 'The number of retained historical messages will be truncated if the length of the message exceeds the MaxToken parameter.', + type: 'slider', + min: 1, + max: 24, + default: 5, + step: 1, + }, { key: 'temperature', name: 'Temperature', From 4d9ee6494e100393768093276086ef4233221947 Mon Sep 17 00:00:00 2001 From: yzh990918 <251205668@qq.com> Date: Wed, 28 Jun 2023 17:37:30 +0800 Subject: [PATCH 3/3] chore: release v1.1.10 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 32c11426..96bf24b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "anse", - "version": "1.1.9", + "version": "1.1.10", "packageManager": "pnpm@7.28.0", "scripts": { "dev": "astro dev",