mirror of
https://github.com/lobehub/lobe-chat.git
synced 2026-06-20 14:20:27 +00:00
Compare commits
310 Commits
lighthouse
...
v0.102.2
| Author | SHA1 | Date | |
|---|---|---|---|
| 7f32817f73 | |||
| 8c96cf00e7 | |||
| 081bb1d35c | |||
| fdcce6c94d | |||
| b5fe08c17c | |||
| eb142f9153 | |||
| e1feefaf55 | |||
| f0b9498d28 | |||
| 6bbac34c4d | |||
| bd2f291800 | |||
| 4fa2ef410f | |||
| 26ef087fb3 | |||
| 3c81da7bed | |||
| 5f634d5922 | |||
| 79c22a69fc | |||
| 81c0a08cd5 | |||
| b6340f96a3 | |||
| 1fa4a316ca | |||
| 08af6094ed | |||
| e32daf1ed6 | |||
| 5853ab4aa9 | |||
| aa0c0b8c4c | |||
| a4664f907c | |||
| a4a5aded73 | |||
| 5e4dc61a92 | |||
| 6836ae2cb5 | |||
| 75b6b407d6 | |||
| 71a54cc89a | |||
| cf845a7d8e | |||
| 7511f9720f | |||
| 5523b64b8a | |||
| 98e1f99f6e | |||
| 87a030fb2c | |||
| 5bdbd6a06a | |||
| 9778e1d3c9 | |||
| 7edb10a4d9 | |||
| a31e63e01a | |||
| fc29b33561 | |||
| 5c1fcd7300 | |||
| b68f6501d2 | |||
| e3d2a8e0e3 | |||
| c4bd818938 | |||
| 9c4f4eebd8 | |||
| 59e833b711 | |||
| dd84ae3f0d | |||
| 178b742fdc | |||
| 2b59339973 | |||
| 858d0476e0 | |||
| cea884676a | |||
| 36885572a7 | |||
| b932cef8df | |||
| 57a61fde45 | |||
| 240c0c3019 | |||
| cdb23181f2 | |||
| 165888f529 | |||
| bd1253cd2d | |||
| 4f39e9b68f | |||
| 3d7550ce07 | |||
| 253af8b720 | |||
| 57d3d07545 | |||
| 4cffb22a84 | |||
| 53e6589f8d | |||
| 0cae3cf109 | |||
| fcb5e6fc88 | |||
| daeae4291e | |||
| 99fa4f81eb | |||
| b93d69b315 | |||
| c9a86f3ea1 | |||
| bfba960610 | |||
| 15f9fa273e | |||
| 3618de30f4 | |||
| 846c3f420a | |||
| 2b4e57f831 | |||
| bb06d476ee | |||
| 434569f0ec | |||
| 258f7e4b5e | |||
| 3d2588a994 | |||
| 08a3cb9183 | |||
| ee332a4458 | |||
| 9af165cf17 | |||
| cc3c1acbaa | |||
| 5a401dc6f0 | |||
| 41cae0a3af | |||
| 2e1cd7c7a2 | |||
| 5b85bc22cb | |||
| 8840554b7e | |||
| 0dcb44f9d1 | |||
| 46386dc942 | |||
| b092596e72 | |||
| 886cc3b516 | |||
| 6faa53d860 | |||
| e7fd5d5c23 | |||
| 058fd3f29b | |||
| 4df638487f | |||
| 6fe0a5c6c6 | |||
| 638e0bb56c | |||
| ce932d7b11 | |||
| cd506f1879 | |||
| ec74045f3e | |||
| 81b3b2ad90 | |||
| 438b7d0315 | |||
| 5ff4226ec7 | |||
| fb5738e418 | |||
| 34390cda77 | |||
| a3785ab6f3 | |||
| 174a19a72a | |||
| 2b18a8039f | |||
| 1e1b21b4d4 | |||
| c448ed4f69 | |||
| dc03bf9f3e | |||
| 7a71a5729d | |||
| 4bf4677f39 | |||
| f280d14579 | |||
| 0efdcee032 | |||
| a9ac2431e8 | |||
| 15c0f9a1f2 | |||
| 4a98bbba71 | |||
| 1bfacd74bd | |||
| ae67d622a6 | |||
| 887d875c99 | |||
| 380723d922 | |||
| ddb662a34b | |||
| 0673b0a408 | |||
| 5078aae37b | |||
| dbb65ff6c2 | |||
| 31f6d29d9b | |||
| 40281097d5 | |||
| e34b10c198 | |||
| aa851d4863 | |||
| 07c4f231df | |||
| 730aec1e31 | |||
| 567922a0ac | |||
| 48be005438 | |||
| 38145238e7 | |||
| 267e2e766b | |||
| ff3b927d4d | |||
| 82a50fe78d | |||
| e7e7b80843 | |||
| 68fda25c75 | |||
| 44a5f0a87e | |||
| a73e51963e | |||
| 8a794f93a8 | |||
| e160bb891f | |||
| 7f56411e10 | |||
| dd01b9eae6 | |||
| 52735cd001 | |||
| 8105848a3e | |||
| b404015fcb | |||
| 33cf11990f | |||
| 75c58835b0 | |||
| e78d893ba4 | |||
| 3e3339fcaf | |||
| bc919beb86 | |||
| 88408b6aa8 | |||
| b7a0f2b583 | |||
| b7d53772d4 | |||
| a4ffdba49b | |||
| 7a2b8b5434 | |||
| 6edd25bf10 | |||
| aec68c8f9b | |||
| a6f51d527a | |||
| 6782083edd | |||
| 3951f2fd48 | |||
| f47b6fae40 | |||
| 10829a47d8 | |||
| a750f90e6f | |||
| 134f38433f | |||
| 9402f7ca7d | |||
| 98860a8fb9 | |||
| e195fdba09 | |||
| 94cccb2faa | |||
| 253c57dc32 | |||
| 7a45ab4a5e | |||
| 5a872af226 | |||
| 7a86abbef9 | |||
| fe617c010e | |||
| d7790a978d | |||
| f831447be9 | |||
| 24f3dd7ba8 | |||
| 56ebc0bb2f | |||
| 17976c9f4d | |||
| 2414d34a84 | |||
| 01ff57936a | |||
| c396bd7986 | |||
| cc895e0701 | |||
| a58d166dc7 | |||
| b1f8e90b46 | |||
| ba712f650c | |||
| 953d7c73b3 | |||
| 709ec1a640 | |||
| 548bc5d322 | |||
| 57d65ccc1f | |||
| 49c4863838 | |||
| c45526a811 | |||
| cf15f1ebff | |||
| 33c0853466 | |||
| 041054d89b | |||
| 3cd9fdb599 | |||
| 246e8fda5b | |||
| 5c09420a21 | |||
| a7995309a0 | |||
| 49349b40bc | |||
| 98efe02a2a | |||
| dd8d47cffc | |||
| 27d6cb7d5c | |||
| 819eb19273 | |||
| 0b165eb6a5 | |||
| d06d87eb12 | |||
| fca6b58889 | |||
| 4b8bdbd3b8 | |||
| 16cf40d3e0 | |||
| e7bdc705a5 | |||
| 1e931d572b | |||
| aa4216c174 | |||
| a977383e06 | |||
| d288f9d8f1 | |||
| 9681cd048b | |||
| 0e278f2856 | |||
| cb3f09b3eb | |||
| 8fecbd0757 | |||
| 585b2772b9 | |||
| d9e2f1657a | |||
| 8af8583974 | |||
| 11421f45aa | |||
| 07d076b391 | |||
| ff2c00e137 | |||
| aa1e6576a9 | |||
| af7ecf72dc | |||
| 88fe525d77 | |||
| a30057ba9e | |||
| bbae3ff17a | |||
| 43d66dfbce | |||
| 4214462007 | |||
| c6641a0271 | |||
| 29a57647f9 | |||
| a5699e2da2 | |||
| b49fe936ba | |||
| 90dd2ee592 | |||
| 8fccfdaa11 | |||
| 04ed2db1c6 | |||
| 315ffb3195 | |||
| d03d60bd35 | |||
| 22f07278a7 | |||
| 57e22e8a54 | |||
| a4b99cad0c | |||
| 02d9e53bc4 | |||
| 3ba3a3b47d | |||
| 7b31f0c205 | |||
| 95df1057f5 | |||
| 4b9b713447 | |||
| f988945fa0 | |||
| 013f4c2349 | |||
| b984f6a276 | |||
| 499c28f5ea | |||
| 4a9c4260fa | |||
| a169234278 | |||
| 63f831eabf | |||
| 3e3090a765 | |||
| f05368a45e | |||
| 834febba90 | |||
| 759c920d04 | |||
| 347ee86acb | |||
| dd9db22a66 | |||
| 9ea2ebb164 | |||
| 84a066af73 | |||
| a1b0d83b1d | |||
| 09512fcb0b | |||
| ff2e59b769 | |||
| fa3170d7a1 | |||
| e4b36c3f51 | |||
| 52af45c973 | |||
| 14ff80e15f | |||
| e477fe791c | |||
| d4f24dadc2 | |||
| 6061318206 | |||
| fc3f76135c | |||
| 8af725d9de | |||
| 35bd805404 | |||
| a51ba1d78f | |||
| 535b81c4be | |||
| 5bbc87cee5 | |||
| bf65c16460 | |||
| f206f3c292 | |||
| fdad557049 | |||
| 2ef3c947fa | |||
| 87a4a469dc | |||
| bdb866c702 | |||
| 7513abbdbc | |||
| 2c907e9bf1 | |||
| e9b80d0d42 | |||
| 68775b8376 | |||
| caf8ba0272 | |||
| af2f5e6912 | |||
| 57512a0745 | |||
| aec0674c63 | |||
| a562d88059 | |||
| 79157d54f8 | |||
| 5da19b242a | |||
| fa06c3f760 | |||
| e521083a2b | |||
| 8e43388655 | |||
| 0825c2e401 | |||
| 0e07d18826 | |||
| f7d1c4f089 | |||
| 6335100f37 | |||
| aae9a7cf28 | |||
| 023484027f | |||
| 5919b19633 | |||
| d6b1ee85be | |||
| ee9a404f2a |
@@ -0,0 +1,11 @@
|
||||
Dockerfile
|
||||
.dockerignore
|
||||
node_modules
|
||||
npm-debug.log
|
||||
.next
|
||||
.git
|
||||
scripts
|
||||
docs
|
||||
.github
|
||||
*.md
|
||||
.env.example
|
||||
@@ -0,0 +1,45 @@
|
||||
# add a access code to lock your lobe-chat application, it should be a six length string
|
||||
ACCESS_CODE=lobe66
|
||||
|
||||
# add your custom model name, multi model seperate by comma. for example gpt-3.5-1106,gpt-4-1106
|
||||
# NEXT_PUBLIC_CUSTOM_MODELS=model1,model2,model3
|
||||
|
||||
# ---- only choose one from OpenAI Service and Azure OpenAI Service ---- #
|
||||
|
||||
########################################
|
||||
############ OpenAI Service ############
|
||||
########################################
|
||||
|
||||
# you openai api key
|
||||
OPENAI_API_KEY=sk-xxxxxxxxx
|
||||
|
||||
# use a proxy to connect to the OpenAI API
|
||||
# OPENAI_PROXY_URL=https://api.openai.com/v1
|
||||
|
||||
########################################
|
||||
######### Azure OpenAI Service #########
|
||||
########################################
|
||||
# you can learn azure OpenAI Service on https://learn.microsoft.com/en-us/azure/ai-services/openai/overview
|
||||
|
||||
# use Azure OpenAI Service by uncomment the following line
|
||||
# USE_AZURE_OPENAI=1
|
||||
|
||||
# The API key you applied for on the Azure OpenAI account page, which can be found in the "Keys and Endpoints" section.
|
||||
# AZURE_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
|
||||
# The endpoint you applied for on the Azure OpenAI account page, which can be found in the "Keys and Endpoints" section.
|
||||
# OPENAI_PROXY_URL=https://docs-test-001.openai.azure.com
|
||||
|
||||
# Azure's API version, follows the YYYY-MM-DD format
|
||||
# AZURE_API_VERSION=2023-08-01-preview
|
||||
|
||||
########################################
|
||||
############ Market Service ############
|
||||
########################################
|
||||
|
||||
# The LobeChat plugins market index url
|
||||
# PLUGINS_INDEX_URL=https://chat-plugins.lobehub.com
|
||||
|
||||
# The LobeChat agents market index url
|
||||
# AGENTS_INDEX_URL=https://chat-agents.lobehub.com
|
||||
|
||||
@@ -13,5 +13,6 @@ config.rules['no-extra-boolean-cast'] = 0;
|
||||
config.rules['unicorn/no-useless-undefined'] = 0;
|
||||
config.rules['react/no-unknown-property'] = 0;
|
||||
config.rules['unicorn/prefer-ternary'] = 0;
|
||||
config.rules['unicorn/prefer-spread'] = 0;
|
||||
|
||||
module.exports = config;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
- [ ] ✨ feat
|
||||
- [ ] 🐛 fix
|
||||
- [ ] ♻️ refactor
|
||||
- [ ] 💄 style
|
||||
- [ ] 🔨 chore
|
||||
- [ ] 📝 docs
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
name: Dependabot Auto Merge
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [labeled, edited]
|
||||
|
||||
jobs:
|
||||
merge:
|
||||
if: contains(github.event.pull_request.labels.*.name, 'dependencies')
|
||||
name: Dependabot Auto Merge
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install bun
|
||||
uses: oven-sh/setup-bun@v1
|
||||
|
||||
- name: Install deps
|
||||
run: bun i
|
||||
|
||||
- name: Merge
|
||||
uses: ahmadnassri/action-dependabot-auto-merge@v2
|
||||
with:
|
||||
command: merge
|
||||
target: minor
|
||||
github-token: ${{ secrets.GH_TOKEN }}
|
||||
@@ -0,0 +1,45 @@
|
||||
name: Publish Docker Image
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
push_to_registry:
|
||||
name: Push Docker image to Docker Hub
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v4
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_REGISTRY_USER }}
|
||||
password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: lobehub/lobe-chat
|
||||
tags: |
|
||||
type=raw,value=latest
|
||||
type=ref,event=tag
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
@@ -0,0 +1,73 @@
|
||||
name: Issue Auto Comment
|
||||
on:
|
||||
issues:
|
||||
types:
|
||||
- opened
|
||||
- closed
|
||||
- assigned
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- closed
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
run:
|
||||
permissions:
|
||||
issues: write # for actions-cool/issues-helper to update issues
|
||||
pull-requests: write # for actions-cool/issues-helper to update PRs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Auto Comment on Issues Opened
|
||||
uses: wow-actions/auto-comment@v1
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
|
||||
issuesOpened: |
|
||||
👀 @{{ author }}
|
||||
|
||||
Thank you for raising an issue. We will investigate into the matter and get back to you as soon as possible.
|
||||
Please make sure you have given us as much context as possible.\
|
||||
非常感谢您提交 issue。我们会尽快调查此事,并尽快回复您。 请确保您已经提供了尽可能多的背景信息。
|
||||
- name: Auto Comment on Issues Closed
|
||||
uses: wow-actions/auto-comment@v1
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
|
||||
issuesClosed: |
|
||||
✅ @{{ author }}
|
||||
|
||||
This issue is closed, If you have any questions, you can comment and reply.\
|
||||
此问题已经关闭。如果您有任何问题,可以留言并回复。
|
||||
- name: Auto Comment on Pull Request Opened
|
||||
uses: wow-actions/auto-comment@v1
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
|
||||
pullRequestOpened: |
|
||||
👍 @{{ author }}
|
||||
|
||||
Thank you for raising your pull request and contributing to our Community
|
||||
Please make sure you have followed our contributing guidelines. We will review it as soon as possible.
|
||||
If you encounter any problems, please feel free to connect with us.\
|
||||
非常感谢您提出拉取请求并为我们的社区做出贡献,请确保您已经遵循了我们的贡献指南,我们会尽快审查它。
|
||||
如果您遇到任何问题,请随时与我们联系。
|
||||
- name: Auto Comment on Pull Request Merged
|
||||
uses: actions-cool/pr-welcome@main
|
||||
if: github.event.pull_request.merged == true
|
||||
with:
|
||||
token: ${{ secrets.GH_TOKEN }}
|
||||
comment: |
|
||||
❤️ Great PR @${{ github.event.pull_request.user.login }} ❤️
|
||||
|
||||
The growth of project is inseparable from user feedback and contribution, thanks for your contribution!\
|
||||
项目的成长离不开用户反馈和贡献,感谢您的贡献!
|
||||
emoji: 'hooray'
|
||||
pr-emoji: '+1, heart'
|
||||
- name: Remove inactive
|
||||
if: github.event.issue.state == 'open' && github.actor == github.event.issue.user.login
|
||||
uses: actions-cool/issues-helper@v3
|
||||
with:
|
||||
actions: 'remove-labels'
|
||||
token: ${{ secrets.GH_TOKEN }}
|
||||
issue-number: ${{ github.event.issue.number }}
|
||||
labels: 'Inactive'
|
||||
@@ -1,22 +0,0 @@
|
||||
name: Issue Check Inactive
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 */15 * *'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
issue-check-inactive:
|
||||
permissions:
|
||||
issues: write # for actions-cool/issues-helper to update issues
|
||||
pull-requests: write # for actions-cool/issues-helper to update PRs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: check-inactive
|
||||
uses: actions-cool/issues-helper@v3
|
||||
with:
|
||||
actions: 'check-inactive'
|
||||
inactive-label: 'Inactive'
|
||||
inactive-day: 30
|
||||
@@ -8,6 +8,20 @@ permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
issue-check-inactive:
|
||||
permissions:
|
||||
issues: write # for actions-cool/issues-helper to update issues
|
||||
pull-requests: write # for actions-cool/issues-helper to update PRs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: check-inactive
|
||||
uses: actions-cool/issues-helper@v3
|
||||
with:
|
||||
actions: 'check-inactive'
|
||||
token: ${{ secrets.GH_TOKEN }}
|
||||
inactive-label: 'Inactive'
|
||||
inactive-day: 30
|
||||
|
||||
issue-close-require:
|
||||
permissions:
|
||||
issues: write # for actions-cool/issues-helper to update issues
|
||||
@@ -18,29 +32,35 @@ jobs:
|
||||
uses: actions-cool/issues-helper@v3
|
||||
with:
|
||||
actions: 'close-issues'
|
||||
token: ${{ secrets.GH_TOKEN }}
|
||||
labels: '✅ Fixed'
|
||||
inactive-day: 3
|
||||
body: |
|
||||
Since the issue was labeled with `✅ Fixed`, but no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply.
|
||||
|
||||
👋 @{{ github.event.issue.user.login }}
|
||||
<br/>
|
||||
Since the issue was labeled with `✅ Fixed`, but no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply.\
|
||||
由于该 issue 被标记为已修复,同时 3 天未收到回应。现关闭 issue,若有任何问题,可评论回复。
|
||||
- name: need reproduce
|
||||
uses: actions-cool/issues-helper@v3
|
||||
with:
|
||||
actions: 'close-issues'
|
||||
token: ${{ secrets.GH_TOKEN }}
|
||||
labels: '🤔 Need Reproduce'
|
||||
inactive-day: 3
|
||||
body: |
|
||||
Since the issue was labeled with `🤔 Need Reproduce`, but no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply.
|
||||
|
||||
👋 @{{ github.event.issue.user.login }}
|
||||
<br/>
|
||||
Since the issue was labeled with `🤔 Need Reproduce`, but no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply.\
|
||||
由于该 issue 被标记为需要更多信息,却 3 天未收到回应。现关闭 issue,若有任何问题,可评论回复。
|
||||
- name: need reproduce
|
||||
uses: actions-cool/issues-helper@v3
|
||||
with:
|
||||
actions: 'close-issues'
|
||||
token: ${{ secrets.GH_TOKEN }}
|
||||
labels: "🙅🏻♀️ WON'T DO"
|
||||
inactive-day: 3
|
||||
body: |
|
||||
Since the issue was labeled with `🙅🏻♀️ WON'T DO`, and no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply.
|
||||
|
||||
👋 @{{ github.event.issue.user.login }}
|
||||
<br/>
|
||||
Since the issue was labeled with `🙅🏻♀️ WON'T DO`, and no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply.\
|
||||
由于该 issue 被标记为暂不处理,同时 3 天未收到回应。现关闭 issue,若有任何问题,可评论回复。
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
name: Issue Remove Inactive
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [edited]
|
||||
issue_comment:
|
||||
types: [created, edited]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
issue-remove-inactive:
|
||||
permissions:
|
||||
issues: write # for actions-cool/issues-helper to update issues
|
||||
pull-requests: write # for actions-cool/issues-helper to update PRs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: remove inactive
|
||||
if: github.event.issue.state == 'open' && github.actor == github.event.issue.user.login
|
||||
uses: actions-cool/issues-helper@v3
|
||||
with:
|
||||
actions: 'remove-labels'
|
||||
issue-number: ${{ github.event.issue.number }}
|
||||
labels: 'Inactive'
|
||||
@@ -0,0 +1,14 @@
|
||||
name: Issue Translate
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: usthe/issues-translate-action@v2.7
|
||||
with:
|
||||
BOT_GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
@@ -0,0 +1,72 @@
|
||||
name: Lighthouse Badger
|
||||
|
||||
env:
|
||||
TOKEN_NAME: 'GH_TOKEN'
|
||||
REPO_BRANCH: 'lobehub/lobe-chat lighthouse'
|
||||
USER_NAME: 'lobehubbot'
|
||||
USER_EMAIL: 'i@lobehub.com'
|
||||
AUDIT_TYPE: 'both'
|
||||
MOBILE_LIGHTHOUSE_PARAMS: '--throttling.cpuSlowdownMultiplier=2'
|
||||
DESKTOP_LIGHTHOUSE_PARAMS: '--preset=desktop --throttling.cpuSlowdownMultiplier=1'
|
||||
COMMIT_MESSAGE: '🤖 chore: Lighthouse Results Refreshed'
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *' # every day
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
lighthouse-badger-advanced:
|
||||
name: ${{ matrix.NAME }}
|
||||
runs-on: ubuntu-22.04
|
||||
timeout-minutes: 8
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- NAME: 'LobeChat | Welcome'
|
||||
URLS: 'https://chat-preview.lobehub.com/welcome'
|
||||
BADGES_ARGS: '-b pagespeed -o lighthouse/welcome -r'
|
||||
COMMIT_MESSAGE: '🤖 chore: Lighthouse Results | Welcome'
|
||||
- NAME: 'LobeChat | Chat'
|
||||
URLS: 'https://chat-preview.lobehub.com/chat'
|
||||
BADGES_ARGS: '-b pagespeed -o lighthouse/chat -r'
|
||||
COMMIT_MESSAGE: '🤖 chore: Lighthouse Results | Chat'
|
||||
- NAME: 'LobeChat | Market'
|
||||
URLS: 'https://chat-preview.lobehub.com/market'
|
||||
BADGES_ARGS: '-b pagespeed -o lighthouse/market -r'
|
||||
COMMIT_MESSAGE: '🤖 chore: Lighthouse Results | Market'
|
||||
- NAME: 'LobeChat | Settings'
|
||||
URLS: 'https://chat-preview.lobehub.com/settings'
|
||||
BADGES_ARGS: '-b pagespeed -o lighthouse/settings -r'
|
||||
COMMIT_MESSAGE: '🤖 chore: Lighthouse Results | Settings'
|
||||
|
||||
steps:
|
||||
- name: Preparatory Tasks
|
||||
run: |
|
||||
REPOSITORY=`expr "${{ env.REPO_BRANCH }}" : "\([^ ]*\)"`
|
||||
BRANCH=`expr "${{ env.REPO_BRANCH }}" : ".* \([^ ]*\)"`
|
||||
echo "REPOSITORY=$REPOSITORY" >> $GITHUB_ENV
|
||||
echo "BRANCH=$BRANCH" >> $GITHUB_ENV
|
||||
env:
|
||||
REPO_BRANCH: ${{ matrix.REPO_BRANCH || env.REPO_BRANCH }}
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ env.REPOSITORY }}
|
||||
token: ${{ secrets[matrix.TOKEN_NAME] || secrets[env.TOKEN_NAME] }}
|
||||
ref: ${{ env.BRANCH }}
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: 'myactionway/lighthouse-badges'
|
||||
path: temp_lighthouse_badges_nested
|
||||
- uses: myactionway/lighthouse-badger-action@v2.2
|
||||
with:
|
||||
urls: ${{ matrix.URLS }}
|
||||
badges_args: ${{ matrix.BADGES_ARGS }}
|
||||
audit_type: ${{ matrix.AUDIT_TYPE || env.AUDIT_TYPE }}
|
||||
mobile_lighthouse_params: ${{ matrix.MOBILE_LIGHTHOUSE_PARAMS || env.MOBILE_LIGHTHOUSE_PARAMS }}
|
||||
desktop_lighthouse_params: ${{ matrix.DESKTOP_LIGHTHOUSE_PARAMS || env.DESKTOP_LIGHTHOUSE_PARAMS }}
|
||||
user_name: ${{ matrix.USER_NAME || env.USER_NAME }}
|
||||
user_email: ${{ matrix.USER_EMAIL || env.USER_EMAIL }}
|
||||
commit_message: ${{ matrix.COMMIT_MESSAGE || env.COMMIT_MESSAGE }}
|
||||
max_push_attempts: 5
|
||||
@@ -23,8 +23,22 @@ jobs:
|
||||
- name: Test
|
||||
run: bun run test
|
||||
|
||||
- name: release
|
||||
- name: Release
|
||||
run: bun run release
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
|
||||
- name: Workflow
|
||||
run: bun run workflow:readme
|
||||
|
||||
- name: Commit changes
|
||||
run: |-
|
||||
git diff
|
||||
git config --global user.name "lobehubbot"
|
||||
git config --global user.email "i@lobehub.com"
|
||||
git add .
|
||||
git commit -m "📝 docs(bot): Auto sync agents & plugin to readme" || exit 0
|
||||
git push
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
|
||||
@@ -2,6 +2,8 @@ name: Upstream Sync
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
issues: write
|
||||
actions: write
|
||||
|
||||
on:
|
||||
schedule:
|
||||
@@ -15,11 +17,14 @@ jobs:
|
||||
if: ${{ github.event.repository.fork }}
|
||||
|
||||
steps:
|
||||
# Step 1: run a standard checkout action
|
||||
- name: Checkout target repo
|
||||
uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Clean issue notice
|
||||
uses: actions-cool/issues-helper@v3
|
||||
with:
|
||||
actions: 'close-issues'
|
||||
labels: '🚨 Sync Fail'
|
||||
|
||||
# Step 2: run the sync action
|
||||
- name: Sync upstream changes
|
||||
id: sync
|
||||
uses: aormsby/Fork-Sync-With-Upstream-action@v3.4
|
||||
@@ -28,16 +33,22 @@ jobs:
|
||||
upstream_sync_branch: main
|
||||
target_sync_branch: main
|
||||
target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set
|
||||
|
||||
# Set test_mode true to run tests instead of the true action!!
|
||||
test_mode: false
|
||||
|
||||
# Step 3: run check
|
||||
- name: Sync check
|
||||
if: failure()
|
||||
uses: actions-cool/issues-helper@v3
|
||||
with:
|
||||
actions: 'create-issue'
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
title: '🚨 同步失败 | Sync Fail'
|
||||
body: '由于 [LobeChat][lobechat] 上游仓库的 workflow 文件变更,导致 GitHub 自动暂停了本次自动更新,你需要手动 Sync Fork 一次,请查看[详细教程][tutorial-zh-CN]\n---\nDue to a change in the workflow file of the [LobeChat][lobechat] upstream repository, GitHub has automatically suspended the scheduled automatic update. You need to manually sync your fork. Please refer to the detailed [Tutorial][tutorial-en-US] for instructions.\n\n[lobechat]: https://github.com/lobehub/lobe-chat\n[tutorial-zh-CN]: https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync.zh-CN\n[tutorial-en-US]: https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync.zh-CN'
|
||||
labels: '🚨 Sync Fail'
|
||||
body: |
|
||||
Due to a change in the workflow file of the [LobeChat][lobechat] upstream repository, GitHub has automatically suspended the scheduled automatic update. You need to manually sync your fork. Please refer to the detailed [Tutorial][tutorial-en-US] for instructions.
|
||||
|
||||
由于 [LobeChat][lobechat] 上游仓库的 workflow 文件变更,导致 GitHub 自动暂停了本次自动更新,你需要手动 Sync Fork 一次,请查看 [详细教程][tutorial-zh-CN]
|
||||
|
||||

|
||||
|
||||
[lobechat]: https://github.com/lobehub/lobe-chat
|
||||
[tutorial-zh-CN]: https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync.zh-CN
|
||||
[tutorial-en-US]: https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync
|
||||
|
||||
@@ -13,7 +13,7 @@ jobs:
|
||||
- name: Install deps
|
||||
run: bun i
|
||||
|
||||
- name: lint
|
||||
- name: Lint
|
||||
run: bun run lint
|
||||
|
||||
- name: Test and coverage
|
||||
|
||||
@@ -11,7 +11,7 @@ on:
|
||||
jobs:
|
||||
update-wiki:
|
||||
runs-on: ubuntu-latest
|
||||
name: wiki sync
|
||||
name: Wiki sync
|
||||
steps:
|
||||
- uses: OrlovM/Wiki-Action@v1
|
||||
with:
|
||||
|
||||
+2
-3
@@ -6,8 +6,7 @@ module.exports = defineConfig({
|
||||
entry: 'locales/zh_CN',
|
||||
entryLocale: 'zh_CN',
|
||||
output: 'locales',
|
||||
outputLocales: ['zh_TW', 'en_US', 'ru_RU'],
|
||||
splitToken: 2500,
|
||||
outputLocales: ['zh_TW', 'en_US', 'ru_RU', 'ja_JP', 'ko_KR'],
|
||||
temperature: 0,
|
||||
modelName: 'gpt-3.5-turbo',
|
||||
modelName: 'gpt-3.5-turbo-1106',
|
||||
});
|
||||
|
||||
+1889
-13
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,128 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to participate in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community includes:
|
||||
|
||||
- Demonstrating empathy and kindness toward other people
|
||||
- Being respectful of differing opinions, viewpoints, and experiences
|
||||
- Giving and gracefully accepting constructive feedback
|
||||
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
- Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
## Examples of unacceptable behavior include:
|
||||
|
||||
- The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
- Public or private harassment
|
||||
- Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
- Other conduct that could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
<https://www.contributor-covenant.org/version/2/0/code_of_conduct.html>.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/diversity).
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
<https://www.contributor-covenant.org/faq>. Translations are available at
|
||||
<https://www.contributor-covenant.org/translations>.
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
@@ -0,0 +1,88 @@
|
||||
# Lobe Chat - Contributing Guide 🌟
|
||||
|
||||
We're thrilled that you want to contribute to Lobe Chat, the future of communication! 😄
|
||||
|
||||
Lobe Chat is an open-source project, and we welcome your collaboration. Before you jump in, let's make sure you're all set to contribute effectively and have loads of fun along the way!
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Fork the Repository](#fork-the-repository)
|
||||
- [Clone Your Fork](#clone-your-fork)
|
||||
- [Create a New Branch](#create-a-new-branch)
|
||||
- [Code Like a Wizard](#code-like-a-wizard)
|
||||
- [Committing Your Work](#committing-your-work)
|
||||
- [Sync with Upstream](#sync-with-upstream)
|
||||
- [Open a Pull Request](#open-a-pull-request)
|
||||
- [Review and Collaboration](#review-and-collaboration)
|
||||
- [Celebrate 🎉](#celebrate-)
|
||||
|
||||
## Fork the Repository
|
||||
|
||||
🍴 Fork this repository to your GitHub account by clicking the "Fork" button at the top right. This creates a personal copy of the project you can work on.
|
||||
|
||||
## Clone Your Fork
|
||||
|
||||
📦 Clone your forked repository to your local machine using the `git clone` command:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/YourUsername/lobe-chat.git
|
||||
```
|
||||
|
||||
## Create a New Branch
|
||||
|
||||
🌿 Create a new branch for your contribution. This helps keep your work organized and separate from the main codebase.
|
||||
|
||||
```bash
|
||||
git checkout -b your-branch-name
|
||||
```
|
||||
|
||||
Choose a meaningful branch name related to your work. It makes collaboration easier!
|
||||
|
||||
## Code Like a Wizard
|
||||
|
||||
🧙♀️ Time to work your magic! Write your code, fix bugs, or add new features. Be sure to follow our project's coding style. You can check if your code adheres to our style using:
|
||||
|
||||
```bash
|
||||
yarn lint
|
||||
```
|
||||
|
||||
This adds a bit of enchantment to your coding experience! ✨
|
||||
|
||||
## Committing Your Work
|
||||
|
||||
📝 Ready to save your progress? Commit your changes to your branch.
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "Your meaningful commit message"
|
||||
```
|
||||
|
||||
Please keep your commits focused and clear. And remember to be kind to your fellow contributors; keep your commits concise.
|
||||
|
||||
## Sync with Upstream
|
||||
|
||||
⚙️ Periodically, sync your forked repository with the original (upstream) repository to stay up-to-date with the latest changes.
|
||||
|
||||
```bash
|
||||
git remote add upstream https://github.com/lobehub/lobe-chat.git
|
||||
git fetch upstream
|
||||
git merge upstream/main
|
||||
```
|
||||
|
||||
This ensures you're working on the most current version of Lobe Chat. Stay fresh! 💨
|
||||
|
||||
## Open a Pull Request
|
||||
|
||||
🚀 Time to share your contribution! Head over to the original Lobe Chat repository and open a Pull Request (PR). Our maintainers will review your work.
|
||||
|
||||
## Review and Collaboration
|
||||
|
||||
👓 Your PR will undergo thorough review and testing. The maintainers will provide feedback, and you can collaborate to make your contribution even better. We value teamwork!
|
||||
|
||||
## Celebrate 🎉
|
||||
|
||||
🎈 Congratulations! Your contribution is now part of Lobe Chat. 🥳
|
||||
|
||||
Thank you for making Lobe Chat even more magical. We can't wait to see what you create! 🌠
|
||||
|
||||
Happy Coding! 🚀🦄
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
FROM node:20-slim AS base
|
||||
|
||||
## Install dependencies only when needed
|
||||
FROM base AS builder
|
||||
ENV PNPM_HOME="/pnpm"
|
||||
ENV PATH="$PNPM_HOME:$PATH"
|
||||
RUN corepack enable
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY package.json ./
|
||||
|
||||
# If you want to build docker in China
|
||||
#RUN npm config set registry https://registry.npmmirror.com/
|
||||
RUN pnpm i
|
||||
|
||||
COPY . .
|
||||
RUN pnpm run build:docker # run build standalone for docker version
|
||||
|
||||
## Production image, copy all the files and run next
|
||||
FROM base AS runner
|
||||
WORKDIR /app
|
||||
|
||||
ENV NODE_ENV production
|
||||
|
||||
RUN addgroup --system --gid 1001 nodejs
|
||||
RUN adduser --system --uid 1001 nextjs
|
||||
|
||||
COPY --from=builder /app/public ./public
|
||||
|
||||
# Set the correct permission for prerender cache
|
||||
RUN mkdir .next
|
||||
RUN chown nextjs:nodejs .next
|
||||
|
||||
# Automatically leverage output traces to reduce image size
|
||||
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
||||
|
||||
USER nextjs
|
||||
|
||||
EXPOSE 3210
|
||||
|
||||
# set hostname to localhost
|
||||
ENV HOSTNAME "0.0.0.0"
|
||||
ENV PORT=3210
|
||||
|
||||
ENV ACCESS_CODE "lobe66"
|
||||
ENV OPENAI_API_KEY ""
|
||||
ENV OPENAI_PROXY_URL ""
|
||||
|
||||
CMD ["node", "server.js"]
|
||||
@@ -8,18 +8,20 @@
|
||||
|
||||
<h1>Lobe Chat</h1>
|
||||
|
||||
LobeChat is a open-source, extensible ([Function Calling][fc-link]), high-performance chatbot framework. <br/> It supports one-click free deployment of your private ChatGPT/LLM web application.
|
||||
LobeChat is an open-source, high-performance chatbot framework<br/>that supports speech synthesis, multimodal, and extensible ([Function Call][fc-link]) plugin system. <br/>
|
||||
Supports one-click free deployment of your private ChatGPT/LLM web application.
|
||||
|
||||
**English** · [简体中文](./README.zh-CN.md) · [Changelog](./CHANGELOG.md) · [Wiki][github-wiki-link] · [Report Bug][github-issues-link] · [Request Feature][github-issues-link]
|
||||
|
||||
<!-- SHIELD GROUP -->
|
||||
|
||||
[![][github-release-shield]][github-release-link]
|
||||
[![][docker-release-shield]][docker-release-link]
|
||||
[![][vercel-shield]][vercel-link]
|
||||
[![][discord-shield]][discord-link]
|
||||
[![][github-releasedate-shield]][github-releasedate-link]
|
||||
[![][discord-shield]][discord-link]<br/>
|
||||
[![][github-action-test-shield]][github-action-test-link]
|
||||
[![][github-action-release-shield]][github-action-release-link]<br/>
|
||||
[![][github-action-release-shield]][github-action-release-link]
|
||||
[![][github-releasedate-shield]][github-releasedate-link]<br/>
|
||||
[![][github-contributors-shield]][github-contributors-link]
|
||||
[![][github-forks-shield]][github-forks-link]
|
||||
[![][github-stars-shield]][github-stars-link]
|
||||
@@ -34,6 +36,8 @@ LobeChat is a open-source, extensible ([Function Calling][fc-link]), high-perfor
|
||||
[![][share-reddit-shield]][share-reddit-link]
|
||||
[![][share-weibo-shield]][share-weibo-link]
|
||||
|
||||
<sup>Pioneering the new age of thinking and creating. Built for you, the Super Individual.</sup>
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
@@ -46,8 +50,11 @@ LobeChat is a open-source, extensible ([Function Calling][fc-link]), high-perfor
|
||||
- [👋🏻 Getting Started & Join Our Community](#-getting-started--join-our-community)
|
||||
- [✨ Features](#-features)
|
||||
- [📸 Snapshot](#-snapshot)
|
||||
- [⚡️ Performance](#️-performance)
|
||||
- [🛳 Self Hosting](#-self-hosting)
|
||||
- [Keep Updated](#keep-updated)
|
||||
- [`A` Deploying with Vercel](#a-deploying-with-vercel)
|
||||
- [`B` Deploying with Docker](#b-deploying-with-docker)
|
||||
- [Environment Variable](#environment-variable)
|
||||
- [📦 Ecosystem](#-ecosystem)
|
||||
- [🧩 Plugins](#-plugins)
|
||||
- [⌨️ Local Development](#️-local-development)
|
||||
@@ -62,14 +69,15 @@ LobeChat is a open-source, extensible ([Function Calling][fc-link]), high-perfor
|
||||
|
||||
## 👋🏻 Getting Started & Join Our Community
|
||||
|
||||
Please be aware that LobeChat is currently under active development,feedback is welcome for any [issues][issues-link] encountered.
|
||||
Please be aware that LobeChat is currently under active development, and feedback is welcome for any [issues][issues-link] encountered.
|
||||
|
||||
| [![][vercel-shield-badge]][vercel-link] | No installation or registration necessary! Visit our website to experience it firsthand. |
|
||||
| :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |
|
||||
| [![][discord-shield-badge]][discord-link] | Join our Discord community! This is where you can connect with developers and other enthusiastic users of LobeHub. |
|
||||
|
||||
> **Important**\
|
||||
> **Star Us**,You will receive all releases notifications from GitHub without any delay \~ ⭐️
|
||||
> \[!IMPORTANT]
|
||||
>
|
||||
> **Star Us**, You will receive all release notifications from GitHub without any delay \~ ⭐️
|
||||
|
||||

|
||||
|
||||
@@ -82,16 +90,24 @@ Please be aware that LobeChat is currently under active development,feedback i
|
||||
|
||||
## ✨ Features
|
||||
|
||||
- [x] 💨 **Quick Deployment**: Using the Vercel platform, you can deploy with just one click and complete the process within 1 minute, without any complex configuration;
|
||||
- [x] 💎 **Exquisite UI Design**: With a carefully designed interface, it offers an elegant appearance and smooth interaction. It supports light and dark themes and is mobile-friendly. PWA support provides a more native-like experience;
|
||||
- [x] 🗣️ **Smooth Conversation Experience**: Fluid responses ensure a smooth conversation experience. It fully supports Markdown rendering, including code highlighting, LaTex formulas, Mermaid flowcharts, and more;
|
||||
- [x] 🧩 **Plugin Support & Custom Plugin Development**: Conversations are extendable with plugins. Users can install and use various plugins, such as search engines, web extraction, etc. It also supports the development of custom plugins to meet custom needs;
|
||||
- [x] 🔒 **Privacy Protection**: All data is stored locally in the user's browser, ensuring user privacy;
|
||||
- [x] 🤖 **Customizable Agent Roles**: Users can create, share, and debug personalized dialogue agent roles according to their needs, providing more flexible and personalized dialogue functions;
|
||||
- [x] 🌐 **Custom Domain**: If users have their own domain, they can bind it to the platform for quick access to the dialogue agent from anywhere.
|
||||
- [x] 🏬 **Role Market**: A Role Market is provided where users can select their preferred dialogue agent roles, enriching the content and style of the dialogue;
|
||||
- [x] 💎 **Exquisite UI Design**: With a carefully designed interface, it offers an elegant appearance and smooth interaction. It supports light and dark themes and is mobile-friendly. PWA support provides a more native-like experience.
|
||||
- [x] 🗣️ **Smooth Conversation Experience**: Fluid responses ensure a smooth conversation experience. It fully supports Markdown rendering, including code highlighting, LaTex formulas, Mermaid flowcharts, and more.
|
||||
- [x] 🤖 **Customizable Agent Roles**: Users can create, share, and debug personalized dialogue agent roles according to their needs, providing more flexible and customized dialogue functions.
|
||||
- [x] 🧩 **Plugin Support & Custom Plugin Development**: Conversations are extendable with plugins. Users can install and use various plugins, such as search engines, web extraction, etc. It also supports the development of custom plugins to meet custom needs.
|
||||
- [x] 🏬 **Agent Market**: A Agent Market is provided where users can select their preferred dialogue agent roles, enriching the content and style of the dialogue.
|
||||
- [x] 👁️ **Visual Recognition**: With the integration of visual recognition capabilities, your agent can now analyze and understand images provided during the conversation. This allows for more interactive and context-aware conversations, enabling the dialogue agent to provide relevant and accurate responses based on visual content.
|
||||
- [x] 📢 **TTS & STT Conversation**: LobeChat are supporting Text-to-Speech and Speech-to-Text technology, allowing users to have voice-based conversations with the dialogue agent. This feature enhances the user experience by providing a more natural and immersive conversation environment. Users can choose from a variety of voices and adjust the speech rate to suit their preferences.
|
||||
|
||||
> **Note**\
|
||||
---
|
||||
|
||||
Beside these features, LobeChat also have much better basic technique underground:
|
||||
|
||||
- [x] 💨 **Quick Deployment**: Using the Vercel platform or docker image, you can deploy with just one click and complete the process within 1 minute without any complex configuration.
|
||||
- [x] 🌐 **Custom Domain**: If users have their own domain, they can bind it to the platform for quick access to the dialogue agent from anywhere.
|
||||
- [x] 🔒 **Privacy Protection**: All data is stored locally in the user's browser, ensuring user privacy.
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> You can find our upcoming [Roadmap][github-project-link] plans in the Projects section.
|
||||
|
||||
<div align="right">
|
||||
@@ -102,47 +118,184 @@ Please be aware that LobeChat is currently under active development,feedback i
|
||||
|
||||
## 📸 Snapshot
|
||||
|
||||

|
||||
|
||||
#### `1` Visual Model Support
|
||||
|
||||
LobeChat now supports OpenAI's latest [`gpt-4-vision`](https://platform.openai.com/docs/guides/vision) model with visual recognition capabilities,
|
||||
a multimodal intelligence that can perceive visuals. Users can easily upload or drag and drop images into the dialogue box,
|
||||
and the agent will be able to recognize the content of the images and engage in intelligent conversation based on this,
|
||||
creating smarter and more diversified chat scenarios.
|
||||
|
||||
This feature opens up new interactive methods, allowing communication to transcend text and include a wealth of visual elements.
|
||||
Whether it's sharing images in daily use or interpreting images within specific industries, the agent provides an outstanding conversational experience.
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
#### `2` TTS & STT Voice Speech
|
||||
|
||||
LobeChat supports Text-to-Speech (TTS) and Speech-to-Text (STT) technologies, enabling our application to convert text messages into clear voice outputs,
|
||||
allowing users to interact with our conversational agent as if they were talking to a real person. Users can choose from a variety of voices to pair with the agent.
|
||||
|
||||
Moreover, TTS offers an excellent solution for those who prefer auditory learning or desire to receive information while busy.
|
||||
In LobeChat, we have meticulously selected a range of high-quality voice options (OpenAI Audio, Microsoft Edge Speech) to meet the needs of users from different regions and cultural backgrounds.
|
||||
Users can choose the voice that suits their personal preferences or specific scenarios, resulting in a personalized communication experience.
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> In the process of implementing this feature, we found that there was no satisfactory TTS (Text-to-Speech) frontend library available on the market.
|
||||
> As a result, we invested a lot of effort, including data conversion, audio progress management, and speech visualization, among other tasks.
|
||||
|
||||
> \[!IMPORTANT]
|
||||
> Therefore, we decided to refine our implementation and make it open source, hoping to assist developers who wish to implement TTS.
|
||||
> [@lobehub/tts][lobe-tts-link] is a high-quality TTS toolkit developed in TypeScript, which supports usage both on the server-side and in the browser.
|
||||
>
|
||||
> - **Server-side:** With just 15 lines of code, you can achieve high-quality voice generation capabilities comparable to OpenAI's TTS service. It currently supports EdgeSpeechTTS, MicrosoftTTS, OpenAITTS, and OpenAISTT.
|
||||
> - **Browser-side:** It provides high-quality React Hooks and visual audio components, supporting common functions such as loading, playing, pausing, and dragging the timeline. Additionally, it offers a very rich set of capabilities for adjusting the audio track styles.
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
#### `1` Function Calling Plugin System
|
||||
#### `3` Function Calling Plugin System
|
||||
|
||||
By building a powerful plugin ecosystem, ChatGPT not only can provide real-time news updates, but it can also assist you in easily querying documents and accessing various e-commerce data. This allows ChatGPT to play a key role in a wider range of fields. If you are interested in writing plugins, we provide detailed component development documentation, SDKs, and template files in the [🧩 Plugin System](#-Plugin-System) section below. Let's work together to make ChatGPT more powerful and easier to use.
|
||||
The plugin ecosystem of LobeChat is a significant extension of its core functionalities, greatly enhancing the practicality and flexibility of ChatGPT.
|
||||
By leveraging plugins, ChatGPT can perform real-time information retrieval and processing,
|
||||
such as automatically fetching the latest news headlines to provide users with immediate and relevant information.
|
||||
Moreover, these plugins are not limited to news aggregation but can also extend to other practical functions, such as quick document retrieval,
|
||||
e-commerce platform data access, and various third-party services.
|
||||
|
||||
<br/>
|
||||
> \[!TIP]
|
||||
>
|
||||
> To aid developers in joining this ecosystem, we provide comprehensive development resources in the [🧩 Plugin System](#-plugins) section.
|
||||
> This includes detailed component development documentation,
|
||||
> a fully-featured software development kit (SDK), and template files—all designed to simplify the development process and lower the barrier to entry for developers.
|
||||
|
||||
> \[!IMPORTANT]
|
||||
>
|
||||
> We welcome developers to use these resources to unleash their creativity and write feature-rich, user-friendly plugins.
|
||||
> With collective efforts, we can continuously expand the boundaries of chat applications and explore a more intelligent and efficient creativity platform.
|
||||
|
||||
<https://github.com/lobehub/lobe-chat/assets/28616219/f29475a3-f346-4196-a435-41a6373ab9e2>
|
||||
|
||||
<!-- PLUGIN LIST -->
|
||||
|
||||
| Official Plugin | Repository | Description |
|
||||
| ------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
|
||||
| [Clock Time](https://chat-preview.lobehub.com/settings/agent)<br/><sup>By **LobeHub** on **2023-11-01**</sup> | [lobehub/chat-plugin-clock-time](https://github.com/lobehub/chat-plugin-clock-time) | Display a clock to show current time<br/>`clock` `time` |
|
||||
| [Website Crawler](https://chat-preview.lobehub.com/settings/agent)<br/><sup>By **LobeHub** on **2023-08-17**</sup> | [lobehub/chat-plugin-web-crawler](https://github.com/lobehub/chat-plugin-web-crawler) | Extract content from web links<br/>`web` `content-crawler` |
|
||||
| [Search Engine](https://chat-preview.lobehub.com/settings/agent)<br/><sup>By **LobeHub** on **2023-08-15**</sup> | [lobehub/chat-plugin-search-engine](https://github.com/lobehub/chat-plugin-search-engine) | Query search engine to get information<br/>`web` `search` |
|
||||
| [Realtime Weather](https://chat-preview.lobehub.com/settings/agent)<br/><sup>By **LobeHub** on **2023-08-12**</sup> | [lobehub/chat-plugin-realtime-weather](https://github.com/lobehub/chat-plugin-realtime-weather) | Get realtime weather information<br/>`weather` `realtime` |
|
||||
|
||||
> 📊 Total plugins: [<kbd>**4**</kbd>](https://github.com/lobehub/lobe-chat-plugins)
|
||||
|
||||
<!-- PLUGIN LIST -->
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
#### `2` Prompt Agent Market
|
||||
#### `4` Prompt Agent Market
|
||||
|
||||
In our agent market, we have accumulated a large number of practical prompt agents that have been used in daily work and study. You can also share your agents here and iterate and optimize your prompt agents with more people. You can submit your agents through [🤖/🏪 Submit Agents][submit-agents-link], and our automated i18n workflow will automatically translate your agents into multiple languages, allowing users around the world to enjoy your wisdom.
|
||||
In the LobeChat Agent Marketplace, creators can discover a vibrant and innovative community that brings together a multitude of well-designed agents,
|
||||
which not only play an important role in work scenarios but also offer great convenience in learning processes.
|
||||
Our marketplace is not just a showcase platform but also a collaborative space. Here, everyone can contribute their wisdom and share the agents they have developed.
|
||||
|
||||
<br/>
|
||||
> \[!TIP]
|
||||
>
|
||||
> By [🤖/🏪 Submit Agents][submit-agents-link], you can easily submit your agent creations to our platform.
|
||||
> Importantly, LobeChat has established a sophisticated automated internationalization (i18n) workflow,
|
||||
> capable of seamlessly translating your agent into multiple language versions.
|
||||
> This means that no matter what language your users speak, they can experience your agent without barriers.
|
||||
|
||||
> \[!IMPORTANT]
|
||||
>
|
||||
> We welcome all users to join this growing ecosystem and participate in the iteration and optimization of agents.
|
||||
> Together, we can create more interesting, practical, and innovative agents, further enriching the diversity and practicality of the agent offerings.
|
||||
|
||||
<!-- AGENT LIST -->
|
||||
|
||||
| Recent Submits | Description |
|
||||
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| [Short Video Script Assistant](https://chat-preview.lobehub.com/market?agent=tik-tok-director)<br/><sup>By **[aihoom](https://github.com/aihoom)** on **2023-11-17**</sup> | Designed to help users write engaging and trendy short video scripts<br/>`short-video` `tkitok` `screenwriter` |
|
||||
| [Expert Agent Mentor](https://chat-preview.lobehub.com/market?agent=co-agent)<br/><sup>By **[tcmonster](https://github.com/tcmonster)** on **2023-11-16**</sup> | Call on expert agents perfectly suited for the task to support your goals<br/>`task-guidance` `execution-plan` `communication` `support` |
|
||||
| [Full-stack Developer](https://chat-preview.lobehub.com/market?agent=fs-dev)<br/><sup>By **[cloverfield11](https://github.com/cloverfield11)** on **2023-11-15**</sup> | Full-stack web developer with experience in HTML, CSS, JavaScript, Python, Java, Ruby, and frameworks such as React, Angular, Vue.js, Express, Django, Next.js, Flask, or Ruby on Rails. Experience in databases, application architecture, security, and testing.<br/>`web-development` `front-end` `back-end` `programming` `databases` |
|
||||
| [Graphic Creative Master](https://chat-preview.lobehub.com/market?agent=graphic-creativity)<br/><sup>By **[yingxirz](https://github.com/yingxirz)** on **2023-11-15**</sup> | Specializes in graphic creative design and graphic creativity<br/>`graphic` `creative` `design` `graphic-design` |
|
||||
|
||||
> 📊 Total agents: [<kbd>**48**</kbd> ](https://github.com/lobehub/lobe-chat-agents)
|
||||
|
||||
<!-- AGENT LIST -->
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
#### `3` Progress Web App
|
||||
#### `5` Progress Web App
|
||||
|
||||
Utilize the Progressive Web Application ([PWA](https://support.google.com/chrome/answer/9658361)) technology to achieve a seamless LobeChat experience on your computer or mobile device.
|
||||
We deeply understand the importance of providing a seamless experience for users in today's multi-device environment.
|
||||
Therefore, we have adopted Progressive Web Application ([PWA](https://support.google.com/chrome/answer/9658361)) technology,
|
||||
a modern web technology that elevates web applications to an experience close to that of native apps.
|
||||
|
||||
> **Note**\
|
||||
Through PWA, LobeChat can offer a highly optimized user experience on both desktop and mobile devices while maintaining its lightweight and high-performance characteristics.
|
||||
Visually and in terms of feel, we have also meticulously designed the interface to ensure it is indistinguishable from native apps,
|
||||
providing smooth animations, responsive layouts, and adapting to different device screen resolutions.
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> If you are unfamiliar with the installation process of PWA, you can add LobeChat as your desktop application (also applicable to mobile devices) by following these steps:
|
||||
>
|
||||
> - Launch the Chrome or Edge browser on your computer
|
||||
> - Visit the LobeChat webpage
|
||||
> - In the upper right corner of the address bar, click on the <kbd>Install</kbd> icon
|
||||
> - Follow the instructions on the screen to complete the PWA installation
|
||||
> - Launch the Chrome or Edge browser on your computer.
|
||||
> - Visit the LobeChat webpage.
|
||||
> - In the upper right corner of the address bar, click on the <kbd>Install</kbd> icon.
|
||||
> - Follow the instructions on the screen to complete the PWA Installation.
|
||||
|
||||
<br/>
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
#### `4` Theme Mode Selection
|
||||
#### `6` Theme Mode Selection
|
||||
|
||||
LobeChat offers two unique theme modes - Light Mode and Dark Mode, as well as rich color customization options to meet your personalized needs. By default, our themes will intelligently switch based on your system settings, but if you prefer manual control, you can easily switch in the settings. <br/>
|
||||
As a design-engineering-oriented application, LobeChat places great emphasis on users' personalized experiences,
|
||||
hence introducing flexible and diverse theme modes, including a light mode for daytime and a dark mode for nighttime.
|
||||
Beyond switching theme modes, a range of color customization options allow users to adjust the application's theme colors according to their preferences.
|
||||
Whether it's a desire for a sober dark blue, a lively peach pink, or a professional gray-white, users can find their style of color choices in LobeChat.
|
||||
|
||||
> \[!TIP]
|
||||
>
|
||||
> The default configuration can intelligently recognize the user's system color mode and automatically switch themes to ensure a consistent visual experience with the operating system.
|
||||
> For users who like to manually control details, LobeChat also offers intuitive setting options and a choice between chat bubble mode and document mode for conversation scenarios.
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
#### `5` Mobile Device Adaptation
|
||||
#### `7` Mobile Device Adaptation
|
||||
|
||||
We have carried out a series of optimization designs for mobile devices to enhance the user's mobile experience. Currently, we are iterating on the mobile user experience to achieve smoother and more intuitive interactions. If you have any suggestions or ideas, we welcome you to provide feedback through GitHub Issues or Pull Requests.
|
||||
|
||||
@@ -154,14 +307,35 @@ We have carried out a series of optimization designs for mobile devices to enhan
|
||||
|
||||
</div>
|
||||
|
||||
## ⚡️ Performance
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> The complete list of reports can be found in the [📘 Lighthouse Reports](https://github.com/lobehub/lobe-chat/wiki/Lighthouse)
|
||||
|
||||
| Desktop | Mobile |
|
||||
| :-----------------------------------------: | :----------------------------------------: |
|
||||
| ![][chat-desktop] | ![][chat-mobile] |
|
||||
| [📑 Lighthouse Report][chat-desktop-report] | [📑 Lighthouse Report][chat-mobile-report] |
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## 🛳 Self Hosting
|
||||
|
||||
LobeChat provides a [self-hosted version][deploy-link] with Vercel. This allows you to build your own chatbot within a few minutes, without any prior knowledge. If you want to deploy this service yourself, you can follow these steps:
|
||||
LobeChat provides Self-Hosted Version with Vercel and [Docker Image][docker-release-link]. This allows you to deploy your own chatbot within a few minutes without any prior knowledge.
|
||||
|
||||
### `A` Deploying with Vercel
|
||||
|
||||
If you want to deploy this service yourself on Vercel, you can follow these steps:
|
||||
|
||||
- Prepare your [OpenAI API Key](https://platform.openai.com/account/api-keys).
|
||||
- Click the button below to start deployment: Deploy with Vercel. Log in directly with your GitHub account and remember to fill in the API Key and access code CODE on the environment variable page;
|
||||
- After deployment, you can start using it;
|
||||
- Bind a custom domain (optional): The DNS of the domain assigned by Vercel is polluted in some areas, binding a custom domain can connect directly.
|
||||
- Click the button below to start deployment: Deploy with Vercel. Log in directly with your GitHub account, and remember to fill in the `OPENAI_API_KEY`(required) and `ACCESS_CODE` (recommended) on the environment variable section.
|
||||
- After deployment, you can start using it.
|
||||
- Bind a custom domain (optional): The DNS of the domain assigned by Vercel is polluted in some areas; binding a custom domain can connect directly.
|
||||
|
||||
<div align="center">
|
||||
|
||||
@@ -169,18 +343,62 @@ LobeChat provides a [self-hosted version][deploy-link] with Vercel. This allows
|
||||
|
||||
</div>
|
||||
|
||||
> **Note**\
|
||||
> This project provides some additional configuration items, set with environment variables, The complete list of environment variables can be found in the [📘 Environment Variables](https://github.com/lobehub/lobe-chat/wiki/Environment-Variable) :
|
||||
#### Keep Updated
|
||||
|
||||
| Environment Variable | Required | Description | Example |
|
||||
| -------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| `OPENAI_API_KEY` | Yes | This is the API key you apply on the OpenAI account page | `sk-xxxxxx...xxxxxx` |
|
||||
| `OPENAI_PROXY_URL` | No | If you manually configure the OpenAI interface proxy, you can use this configuration item to override the default OpenAI API request base URL | `https://api.chatanywhere.cn`<br/>The default value is<br/>`https://api.openai.com` |
|
||||
| `ACCESS_CODE` | No | Add a password to access this service, the password should be a 6-digit number or letter | `awCT74` or `e3@09!` |
|
||||
If you have deployed your own project following the one-click deployment steps in the README, you might encounter constant prompts indicating "updates available." This is because Vercel defaults to creating a new project instead of forking this one, resulting in an inability to detect updates accurately.
|
||||
|
||||
### Keep Updated
|
||||
> \[!TIP]
|
||||
>
|
||||
> We suggest you redeploy using the following steps, [📘 Maintaining Updates with LobeChat Self-Deployment](https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync).
|
||||
|
||||
If you have deployed your own project following the one-click deployment steps in the README, you might encounter constant prompts indicating "updates available". This is because Vercel defaults to creating a new project instead of forking this one, resulting in an inability to accurately detect updates. We suggest you redeploy using the following steps, [📘 Maintaining Updates with LobeChat Self-Deployment](https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync).
|
||||
<br/>
|
||||
|
||||
### `B` Deploying with Docker
|
||||
|
||||
[![][docker-release-shield]][docker-release-link]
|
||||
[![][docker-size-shield]][docker-size-link]
|
||||
[![][docker-pulls-shield]][docker-pulls-link]
|
||||
|
||||
We provide a Docker image for deploying the LobeChat service on your own private device. Use the following command to start the LobeChat service:
|
||||
|
||||
```fish
|
||||
$ docker run -d -p 3210:3210 \
|
||||
-e OPENAI_API_KEY=sk-xxxx \
|
||||
-e ACCESS_CODE=lobe66 \
|
||||
lobehub/lobe-chat
|
||||
```
|
||||
|
||||
> \[!TIP]
|
||||
>
|
||||
> If you need to use the OpenAI service through a proxy, you can configure the proxy address using the `OPENAI_PROXY_URL` environment variable:
|
||||
|
||||
```fish
|
||||
$ docker run -d -p 3210:3210 \
|
||||
-e OPENAI_API_KEY=sk-xxxx \
|
||||
-e OPENAI_PROXY_URL=https://api-proxy.com/v1 \
|
||||
-e ACCESS_CODE=lobe66 \
|
||||
lobehub/lobe-chat
|
||||
```
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> For detailed instructions on deploying with Docker, please refer to the [📘 Docker Deployment Guide](https://github.com/lobehub/lobe-chat/wiki/Docker-Deployment)
|
||||
|
||||
<br/>
|
||||
|
||||
### Environment Variable
|
||||
|
||||
This project provides some additional configuration items set with environment variables:
|
||||
|
||||
| Environment Variable | Required | Description | Example |
|
||||
| -------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| `OPENAI_API_KEY` | Yes | This is the API key you apply on the OpenAI account page | `sk-xxxxxx...xxxxxx` |
|
||||
| `OPENAI_PROXY_URL` | No | If you manually configure the OpenAI interface proxy, you can use this configuration item to override the default OpenAI API request base URL | `https://api.chatanywhere.cn/v1`<br/>The default value is<br/>`https://api.openai.com/v1` |
|
||||
| `ACCESS_CODE` | No | Add a password to access this service; the password should be a 6-digit number or letter | `awCT74` or `e3@09!` |
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> The complete list of environment variables can be found in the [📘 Environment Variables](https://github.com/lobehub/lobe-chat/wiki/Environment-Variable)
|
||||
|
||||
<div align="right">
|
||||
|
||||
@@ -193,6 +411,7 @@ If you have deployed your own project following the one-click deployment steps i
|
||||
| NPM | Repository | Description | Version |
|
||||
| ------------------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
|
||||
| [@lobehub/ui][lobe-ui-link] | [lobehub/lobe-ui][lobe-ui-github] | Lobe UI is an open-source UI component library dedicated to building AIGC web applications. | [![][lobe-ui-shield]][lobe-ui-link] |
|
||||
| [@lobehub/tts][lobe-tts-link] | [lobehub/lobe-tts][lobe-tts-github] | Lobe TTS is a high-quality & reliable TTS/STT React Hooks library | [![][lobe-tts-shield]][lobe-tts-link] |
|
||||
| [@lobehub/lint][lobe-lint-link] | [lobehub/lobe-lint][lobe-lint-github] | LobeLint provides configurations for ESlint, Stylelint, Commitlint, Prettier, Remark, and Semantic Release for LobeHub. | [![][lobe-lint-shield]][lobe-lint-link] |
|
||||
| @lobehub/assets | [lobehub/assets][lobe-assets-github] | Logo assets, favicons, webfonts for LobeHub. | |
|
||||
|
||||
@@ -204,25 +423,20 @@ If you have deployed your own project following the one-click deployment steps i
|
||||
|
||||
## 🧩 Plugins
|
||||
|
||||
Plugins provide a means to extend the [Function Calling][fc-link] capabilities of LobeChat. They can be used to introduce new function calls, and even new ways to render message results. If you are interested in plugin development, please refer to our [📘 Plugin Development Guide](https://github.com/lobehub/lobe-chat/wiki/Plugin-Development) in the Wiki.
|
||||
Plugins provide a means to extend the [Function Calling][fc-link] capabilities of LobeChat. They can be used to introduce new function calls and even new ways to render message results. If you are interested in plugin development, please refer to our [📘 Plugin Development Guide](https://github.com/lobehub/lobe-chat/wiki/Plugin-Development) in the Wiki.
|
||||
|
||||
- [lobe-chat-plugins][lobe-chat-plugins]: This is the plugin index for LobeChat. It accesses index.json from this repository to display a list of available plugins for LobeChat to the user.
|
||||
- [chat-plugin-template][chat-plugin-template]: This is the plugin template for LobeChat plugin development.
|
||||
- [@lobehub/chat-plugin-sdk][chat-plugin-sdk]: The LobeChat Plugin SDK assists you in creating exceptional chat plugins for Lobe Chat.
|
||||
- [@lobehub/chat-plugins-gateway][chat-plugins-gateway]: The LobeChat Plugins Gateway is a backend service that serves as a gateway for LobeChat plugins. We deploy this service using Vercel. The primary API POST /api/v1/runner is deployed as an Edge Function.
|
||||
- [@lobehub/chat-plugins-gateway][chat-plugins-gateway]: The LobeChat Plugins Gateway is a backend service that provides a gateway for LobeChat plugins. We deploy this service using Vercel. The primary API POST /api/v1/runner is deployed as an Edge Function.
|
||||
|
||||
> **Note**\
|
||||
> \[!NOTE]
|
||||
>
|
||||
> The plugin system is currently undergoing major development. You can learn more in the following issues:
|
||||
>
|
||||
> - [x] [**Plugin Phase 1**](https://github.com/lobehub/lobe-chat/issues/73): Implement separation of the plugin from the main body, split the plugin into an independent repository for maintenance, and realize dynamic loading of the plugin.
|
||||
> - [x] [**Plugin Phase 2**](https://github.com/lobehub/lobe-chat/issues/97): The security and stability of the plugin's use, more accurately presenting abnormal states, the maintainability of the plugin architecture and developer-friendly.
|
||||
> - [ ] [**Plugin Phase 3**](https://github.com/lobehub/lobe-chat/issues/149): Higher-level and more comprehensive customization capabilities, support for plugin authentication and examples.
|
||||
|
||||
| Official Plugin | Description |
|
||||
| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| [SearchEngine][chat-plugin-search-engine] | This plugin allows for the use of the SerpApi search engine. |
|
||||
| [RealtimeWeather][chat-plugin-realtime-weather] | This plugin provides practical weather information by obtaining real-time weather data and can automatically update based on the user's location. |
|
||||
| [WebsiteCrawler][chat-plugin-web-crawler] | This plugin automatically crawls the main content of a specified URL webpage and uses it as context input. |
|
||||
> - [x] [**Plugin Phase 2**](https://github.com/lobehub/lobe-chat/issues/97): The security and stability of the plugin's use, more accurately presenting abnormal states, the maintainability of the plugin architecture, and developer-friendly.
|
||||
> - [ ] [**Plugin Phase 3**](https://github.com/lobehub/lobe-chat/issues/149): Higher-level and more comprehensive customization capabilities, support for plugin authentication, and examples.
|
||||
|
||||
<div align="right">
|
||||
|
||||
@@ -240,7 +454,7 @@ Or clone it for local development:
|
||||
|
||||
[![][bun-shield]][bun-link]
|
||||
|
||||
```bash
|
||||
```fish
|
||||
$ git clone https://github.com/lobehub/lobe-chat.git
|
||||
$ cd lobe-chat
|
||||
$ bun install
|
||||
@@ -255,7 +469,7 @@ $ bun dev
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
Contributions of all types are more than welcome, if you are interested in contributing code, feel free to check out our GitHub [Issues][github-issues-link] and [Projects][github-project-link] to get stuck in to show us what you’re made of.
|
||||
Contributions of all types are more than welcome; if you are interested in contributing code, feel free to check out our GitHub [Issues][github-issues-link] and [Projects][github-project-link] to get stuck in to show us what you’re made of.
|
||||
|
||||
[![][pr-welcome-shield]][pr-welcome-link]
|
||||
[![][submit-agents-shield]][submit-agents-link]
|
||||
@@ -271,9 +485,9 @@ Contributions of all types are more than welcome, if you are interested in contr
|
||||
|
||||
## 🔗 More Products
|
||||
|
||||
- **[🤯 Lobe Theme][lobe-theme] :** The modern theme for stable diffusion webui, exquisite interface design, highly customizable UI, and efficiency boosting features.
|
||||
- **[🤯 Lobe Theme][lobe-theme]:** The modern theme for Stable Diffusion WebUI, exquisite interface design, highly customizable UI, and efficiency-boosting features.
|
||||
- **[🌏 Lobe i18n][lobe-i18n] :** Lobe i18n is an automation tool for the i18n (internationalization) translation process, powered by ChatGPT. It supports features such as automatic splitting of large files, incremental updates, and customization options for the OpenAI model, API proxy, and temperature.
|
||||
- **[💌 Lobe Commit][lobe-commit] :** Lobe Commit is a CLI tool that leverages Langchain/ChatGPT to generate Gitmoji-based commit messages.
|
||||
- **[💌 Lobe Commit][lobe-commit]:** Lobe Commit is a CLI tool that leverages Langchain/ChatGPT to generate Gitmoji-based commit messages.
|
||||
|
||||
<div align="right">
|
||||
|
||||
@@ -297,21 +511,28 @@ This project is [MIT](./LICENSE) licensed.
|
||||
[back-to-top]: https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square
|
||||
[bun-link]: https://bun.sh
|
||||
[bun-shield]: https://img.shields.io/badge/-speedup%20with%20bun-black?logo=bun&style=for-the-badge
|
||||
[chat-plugin-realtime-weather]: https://github.com/lobehub/chat-plugin-realtime-weather
|
||||
[chat-desktop]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/chat/desktop/pagespeed.svg
|
||||
[chat-desktop-report]: https://lobehub.github.io/lobe-chat/lighthouse/chat/desktop/chat_preview_lobehub_com_chat.html
|
||||
[chat-mobile]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/chat/mobile/pagespeed.svg
|
||||
[chat-mobile-report]: https://lobehub.github.io/lobe-chat/lighthouse/chat/mobile/chat_preview_lobehub_com_chat.html
|
||||
[chat-plugin-sdk]: https://github.com/lobehub/chat-plugin-sdk
|
||||
[chat-plugin-search-engine]: https://github.com/lobehub/chat-plugin-search-engine
|
||||
[chat-plugin-template]: https://github.com/lobehub/chat-plugin-template
|
||||
[chat-plugin-web-crawler]: https://github.com/lobehub/chat-plugin-web-crawler
|
||||
[chat-plugins-gateway]: https://github.com/lobehub/chat-plugins-gateway
|
||||
[codespaces-link]: https://codespaces.new/lobehub/lobe-chat
|
||||
[codespaces-shield]: https://github.com/codespaces/badge.svg
|
||||
[contributors-contrib]: https://contrib.rocks/image?repo=lobehub/lobe-chat
|
||||
[contributors-link]: https://github.com/lobehub/lobe-chat/graphs/contributors
|
||||
[deploy-button-image]: https://vercel.com/button
|
||||
[deploy-link]: https://vercel.com/new/clone?repository-link=https%3A%2F%2Fgithub.com%2Flobehub%2Flobe-chat&env=OPENAI_API_KEY&envDescription=Find%20your%20OpenAI%20API%20Key%20by%20click%20the%20right%20Learn%20More%20button.%20%20&envLink=https%3A%2F%2Fplatform.openai.com%2Faccount%2Fapi-keys&project-name=lobe-chat&repository-name=lobe-chat
|
||||
[deploy-link]: https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Flobehub%2Flobe-chat&env=OPENAI_API_KEY&envDescription=Find%20your%20OpenAI%20API%20Key%20by%20click%20the%20right%20Learn%20More%20button.&envLink=https%3A%2F%2Fplatform.openai.com%2Faccount%2Fapi-keys&project-name=lobe-chat&repository-name=lobe-chat
|
||||
[discord-link]: https://discord.gg/AYFPHvv2jT
|
||||
[discord-shield]: https://img.shields.io/discord/1127171173982154893?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=flat-square
|
||||
[discord-shield-badge]: https://img.shields.io/discord/1127171173982154893?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge
|
||||
[docker-pulls-link]: https://hub.docker.com/r/lobehub/lobe-chat
|
||||
[docker-pulls-shield]: https://img.shields.io/docker/pulls/lobehub/lobe-chat?color=45cc11&labelColor=black&style=flat-square
|
||||
[docker-release-link]: https://hub.docker.com/r/lobehub/lobe-chat
|
||||
[docker-release-shield]: https://img.shields.io/docker/v/lobehub/lobe-chat?color=369eff&label=docker&labelColor=black&logo=docker&logoColor=white&style=flat-square
|
||||
[docker-size-link]: https://hub.docker.com/r/lobehub/lobe-chat
|
||||
[docker-size-shield]: https://img.shields.io/docker/image-size/lobehub/lobe-chat?color=369eff&labelColor=black&style=flat-square
|
||||
[fc-link]: https://sspai.com/post/81986
|
||||
[fossa-license-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Flobehub%2Flobe-chat
|
||||
[fossa-license-shield]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Flobehub%2Flobe-chat.svg?type=large
|
||||
@@ -344,6 +565,9 @@ This project is [MIT](./LICENSE) licensed.
|
||||
[lobe-lint-link]: https://www.npmjs.com/package/@lobehub/lint
|
||||
[lobe-lint-shield]: https://img.shields.io/npm/v/@lobehub/lint?color=369eff&labelColor=black&logo=npm&logoColor=white&style=flat-square
|
||||
[lobe-theme]: https://github.com/lobehub/sd-webui-lobe-theme
|
||||
[lobe-tts-github]: https://github.com/lobehub/lobe-tts
|
||||
[lobe-tts-link]: https://www.npmjs.com/package/@lobehub/tts
|
||||
[lobe-tts-shield]: https://img.shields.io/npm/v/@lobehub/tts?color=369eff&labelColor=black&logo=npm&logoColor=white&style=flat-square
|
||||
[lobe-ui-github]: https://github.com/lobehub/lobe-ui
|
||||
[lobe-ui-link]: https://www.npmjs.com/package/@lobehub/ui
|
||||
[lobe-ui-shield]: https://img.shields.io/npm/v/@lobehub/ui?color=369eff&labelColor=black&logo=npm&logoColor=white&style=flat-square
|
||||
|
||||
+254
-58
@@ -8,25 +8,26 @@
|
||||
|
||||
<h1>Lobe Chat</h1>
|
||||
|
||||
LobeChat 是一个开源的、可扩展的([Function Calling][fc-link])高性能聊天机器人框架。<br/> 它支持一键免费部署私人 ChatGPT/LLM 网页应用程序。
|
||||
LobeChat 是开源的高性能聊天机器人框架,支持语音合成、多模态、可扩展的([Function Call][fc-link])插件系统。<br/> 支持一键免费部署私人 ChatGPT/LLM 网页应用程序。
|
||||
|
||||
[English](./README.md) · **简体中文** · [更新日志](./CHANGELOG.md) · [文档][github-wiki-link] · [报告问题][github-issues-link] · [请求功能][github-issues-link]
|
||||
|
||||
<!-- SHIELD GROUP -->
|
||||
|
||||
[![][github-release-shield]][github-release-link]
|
||||
[![][docker-release-shield]][docker-release-link]
|
||||
[![][vercel-shield]][vercel-link]
|
||||
[![][discord-shield]][discord-link]
|
||||
[![][github-releasedate-shield]][github-releasedate-link]
|
||||
[![][discord-shield]][discord-link]<br/>
|
||||
[![][github-action-test-shield]][github-action-test-link]
|
||||
[![][github-action-release-shield]][github-action-release-link]<br/>
|
||||
[![][github-action-release-shield]][github-action-release-link]
|
||||
[![][github-releasedate-shield]][github-releasedate-link]<br/>
|
||||
[![][github-contributors-shield]][github-contributors-link]
|
||||
[![][github-forks-shield]][github-forks-link]
|
||||
[![][github-stars-shield]][github-stars-link]
|
||||
[![][github-issues-shield]][github-issues-link]
|
||||
[![][github-license-shield]][github-license-link]
|
||||
|
||||
**感谢分享 LobeChat 仓库**
|
||||
**分享 LobeChat 给你的好友**
|
||||
|
||||
[![][share-x-shield]][share-x-link]
|
||||
[![][share-telegram-shield]][share-telegram-link]
|
||||
@@ -46,8 +47,11 @@ LobeChat 是一个开源的、可扩展的([Function Calling][fc-link])高
|
||||
- [👋🏻 开始使用 & 交流](#-开始使用--交流)
|
||||
- [✨ 功能特性](#-功能特性)
|
||||
- [📸 快照预览](#-快照预览)
|
||||
- [⚡️ 性能测试](#️-性能测试)
|
||||
- [🛳 开箱即用](#-开箱即用)
|
||||
- [保持更新](#保持更新)
|
||||
- [`A` 使用 Vercel 部署](#a-使用-vercel-部署)
|
||||
- [`B` 使用 Docker 部署](#b-使用-docker-部署)
|
||||
- [环境变量](#环境变量)
|
||||
- [📦 生态系统](#-生态系统)
|
||||
- [🧩 插件体系](#-插件体系)
|
||||
- [⌨️ 本地开发](#️-本地开发)
|
||||
@@ -68,7 +72,8 @@ LobeChat 是一个开源的、可扩展的([Function Calling][fc-link])高
|
||||
| :---------------------------------------- | :--------------------------------------------------------------------------- |
|
||||
| [![][discord-shield-badge]][discord-link] | 加入我们的 Discord 社区!这是你可以与开发者和其他 LobeHub 热衷用户交流的地方 |
|
||||
|
||||
> **Important**\
|
||||
> \[!IMPORTANT]
|
||||
>
|
||||
> **收藏项目**,你将从 GitHub 上无延迟地接收所有发布通知~⭐️
|
||||
|
||||

|
||||
@@ -82,16 +87,24 @@ LobeChat 是一个开源的、可扩展的([Function Calling][fc-link])高
|
||||
|
||||
## ✨ 功能特性
|
||||
|
||||
- [x] 💨 **快速部署**:使用 Vercel 平台,只需点击一键部署按钮,即可在 1 分钟内完成部署,无需复杂的配置过程;
|
||||
- [x] 💎 **精致 UI 设计**:经过精心设计的界面,具有优雅的外观和流畅的交互效果,支持亮暗色主题,适配移动端。支持 PWA,提供更加接近原生应用的体验;
|
||||
- [x] 🗣️ **流畅的对话体验**:流式响应带来流畅的对话体验,并且支持完整的 Markdown 渲染,包括代码高亮、LaTex 公式、Mermaid 流程图等;
|
||||
- [x] 🧩 **支持插件与自定义插件开发**:会话支持插件扩展,用户可以安装和使用各种插件,例如搜索引擎、网页提取等,同时也支持自定义插件的开发,满足自定义需求;
|
||||
- [x] 🔒 **隐私安全**:所有数据保存在用户浏览器本地,保证用户的隐私安全;
|
||||
- [x] 🤖 **自定义助手角色**:用户可以根据自己的需求创建、分享和调试个性化的对话助手角色,提供更加灵活和个性化的对话功能;
|
||||
- [x] 🌐 **自定义域名**:如果用户拥有自己的域名,可以将其绑定到平台上,方便在任何地方快速访问对话助手。
|
||||
- [x] 🏬 **角色市场**:提供角色市场,用户可以在市场上选择自己喜欢的对话助手角色,丰富对话的内容和风格;
|
||||
- [x] 💎 **精致 UI 设计**:经过精心设计的界面,具有优雅的外观和流畅的交互效果,支持亮暗色主题,适配移动端。支持 PWA,提供更加接近原生应用的体验。
|
||||
- [x] 🗣️ **流畅的对话体验**:流式响应带来流畅的对话体验,并且支持完整的 Markdown 渲染,包括代码高亮、LaTex 公式、Mermaid 流程图等。
|
||||
- [x] 🧩 **支持插件与自定义插件开发**:会话支持插件扩展,用户可以安装和使用各种插件,例如搜索引擎、网页提取等,同时也支持自定义插件的开发,满足自定义需求。
|
||||
- [x] 🤖 **自定义助手角色**:用户可以根据自己的需求创建、分享和调试个性化的对话助手角色,提供更加灵活和个性化的对话功能 .
|
||||
- [x] 🏬 **角色市场**:提供角色市场,用户可以在市场上选择自己喜欢的对话助手角色,丰富对话的内容和风格。
|
||||
- [x] 👁️ **视觉识别**: 通过集成视觉识别能力,AI 助手现在可以分析和理解对话过程中提供的图像。这使得对话代理能够进行更具交互性和上下文感知的对话,根据视觉内容提供相关和准确的回答。
|
||||
- [ ] 📢 **语音会话**: 我们支持文本转语音技术,允许用户与对话代理进行语音对话。这个功能通过提供更自然和沉浸式的对话环境来增强用户体验。用户可以选择多种声音并调整语速以适应自己的偏好。
|
||||
|
||||
> **Note**\
|
||||
---
|
||||
|
||||
除了上述功能特性以外,我们的底层技术方案为你带来了更多使用保障:
|
||||
|
||||
- [x] 💨 **快速部署**:使用 Vercel 平台或者我们的 Docker 镜像,只需点击一键部署按钮,即可在 1 分钟内完成部署,无需复杂的配置过程。
|
||||
- [x] 🔒 **隐私安全**:所有数据保存在用户浏览器本地,保证用户的隐私安全。
|
||||
- [x] 🌐 **自定义域名**:如果用户拥有自己的域名,可以将其绑定到平台上,方便在任何地方快速访问对话助手。
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 你可以在 Projects 中找到我们后续的 [Roadmap][github-project-link] 计划
|
||||
|
||||
<div align="right">
|
||||
@@ -102,49 +115,159 @@ LobeChat 是一个开源的、可扩展的([Function Calling][fc-link])高
|
||||
|
||||
## 📸 快照预览
|
||||
|
||||
#### `1` GPT 视觉认知
|
||||
|
||||

|
||||
|
||||
LobeChat 已经支持 OpenAI 最新的 [`gpt-4-vsion`](https://platform.openai.com/docs/guides/vision) 支持视觉识别的模型,这是一个具备视觉识别能力的多模态智能。
|
||||
用户可以轻松上传图片或者拖拽图片到对话框中,助手将能够识别图片内容,并在此基础上进行智能对话,构建更智能、更多元化的聊天场景。
|
||||
|
||||
这一特性打开了新的互动方式,使得交流不再局限于文字,而是可以涵盖丰富的视觉元素。无论是日常使用中的图片分享,还是在特定行业内的图像解读,助手都能提供出色的对话体验。
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
#### `2` TTS & STT 语音会话
|
||||
|
||||

|
||||
|
||||
LobeChat 支持文字转语音(Text-to-Speech,TTS)和语音转文字(Speech-to-Text,STT)技术,我们的应用能够将文本信息转化为清晰的语音输出,用户可以像与真人交谈一样与我们的对话代理进行交流。
|
||||
用户可以从多种声音中选择,给助手搭配合适的音源。 同时,对于那些倾向于听觉学习或者想要在忙碌中获取信息的用户来说,TTS 提供了一个极佳的解决方案。
|
||||
|
||||
在 LobeChat 中,我们精心挑选了一系列高品质的声音选项 (OpenAI Audio, Microsoft Edge Speech),以满足不同地域和文化背景用户的需求。用户可以根据个人喜好或者特定场景来选择合适的语音,从而获得个性化的交流体验。
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 我们在实现该功能过程中,发现市面上并没有一款很好的 TTS 前端库。因此我们实现上耗费了很多精力,包括数据转换、音频进度管理、语音可视化等。
|
||||
> 于是我们决定把这套实现打磨并开源出来,希望能帮助到想要实现 TTS 的开发者们,[@lobehub/tts][lobe-tts-link] 是一个使用 TS 语言开发的,高质量 TTS 工具包,支持在服务端和浏览器中使用。
|
||||
>
|
||||
> - **服务端**:只要使用 15 行代码,即可实现对标 OpenAI TTS 服务的高质量语音生成能力。目前支持 EdgeSpeechTTS 与 MicrosoftTTS 与 OpenAITTS、OpenAISTT。
|
||||
> - **浏览器**:提供了高质量的 React Hooks 与可视化音频组件,支持加载、播放、暂停、拖动时间轴等常用功能,且提供了非常丰富的音轨样式调整能力。
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
#### `1` Function Calling 插件系统
|
||||
#### `3` Function Calling 插件系统
|
||||
|
||||
通过构建强大的插件生态,ChatGPT 不仅能够实时获取最新新闻,还能助你一臂之力,轻松查询文档、访问各大电商数据。这使得 ChatGPT 在更广泛的领域中发挥其关键作用。如果你对编写插件有所兴趣,我们在下文的 🧩 插件体系 中提供了详尽的组件开发文档、SDK、以及样板文件,让我们一起让助手变得更加好用和强大~
|
||||
LobeChat 的插件生态系统是其核心功能的重要扩展,它极大地增强了 ChatGPT 的实用性和灵活性。通过利用插件,ChatGPT 能够实现实时信息的获取和处理,例如自动获取最新新闻头条,为用户提供即时且相关的资讯。
|
||||
此外,这些插件不仅局限于新闻聚合,还可以扩展到其他实用的功能,如快速检索文档、获取电商平台数据、以及其他各式各样的第三方服务。
|
||||
|
||||
<br/>
|
||||
> \[!TIP]
|
||||
>
|
||||
> 为了帮助开发者更好地参与到这个生态中来,我们在 [🧩 插件体系](#-插件体系) 部分提供了全面的开发资源。
|
||||
> 这包括详尽的组件开发文档、功能齐全的软件开发工具包(SDK),以及样板文件,这些都是为了简化开发过程,降低开发者的入门门槛。
|
||||
|
||||
> \[!IMPORTANT]
|
||||
>
|
||||
> 我们欢迎开发者利用这些资源,发挥创造力,编写出功能丰富、用户友好的插件。通过共同的努力,我们可以不断扩展聊天应用的功能界限,探索一个更加智能、高效的创造力平台。
|
||||
|
||||
<https://github.com/lobehub/lobe-chat/assets/28616219/f29475a3-f346-4196-a435-41a6373ab9e2>
|
||||
|
||||
<!-- PLUGIN LIST -->
|
||||
|
||||
| 官方插件 | 仓库 | 插件描述 |
|
||||
| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -------------------------------------------- |
|
||||
| [时钟时间](https://chat-preview.lobehub.com/settings/agent)<br/><sup>By **LobeHub** on **2023-11-01**</sup> | [lobehub/chat-plugin-clock-time](https://github.com/lobehub/chat-plugin-clock-time) | 显示一个时钟来展示当前时间<br/>`时钟` `时间` |
|
||||
| [网站爬虫](https://chat-preview.lobehub.com/settings/agent)<br/><sup>By **LobeHub** on **2023-08-17**</sup> | [lobehub/chat-plugin-web-crawler](https://github.com/lobehub/chat-plugin-web-crawler) | 从网页链接中提取内容<br/>`网页` `内容爬取器` |
|
||||
| [搜索引擎](https://chat-preview.lobehub.com/settings/agent)<br/><sup>By **LobeHub** on **2023-08-15**</sup> | [lobehub/chat-plugin-search-engine](https://github.com/lobehub/chat-plugin-search-engine) | 查询搜索引擎以获取信息<br/>`网络` `搜索` |
|
||||
| [实时天气](https://chat-preview.lobehub.com/settings/agent)<br/><sup>By **LobeHub** on **2023-08-12**</sup> | [lobehub/chat-plugin-realtime-weather](https://github.com/lobehub/chat-plugin-realtime-weather) | 获取实时天气信息<br/>`天气` `实时` |
|
||||
|
||||
> 📊 Total plugins: [<kbd>**4**</kbd>](https://github.com/lobehub/lobe-chat-plugins)
|
||||
|
||||
<!-- PLUGIN LIST -->
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
#### `2` Prompt 助手市场
|
||||
#### `4` 助手市场
|
||||
|
||||
在我们的助手市场中,我们积累了大量实用的助手 Prompt,这些都是在日常工作和学习中得到实际应用的。你也可以在这里分享你的助手,与更多的人一起迭代和优化你的助手提示词。你可以通过 [🤖/🏪 提交助手][submit-agents-link] 来提交你的助手,我们构建的自动化 i18n 工作流将会自动将你的助手翻译成多语言版本,让多语种用户都能享受到你的智慧成果。
|
||||
在 LobeChat 的助手市场中,创作者们可以发现一个充满活力和创新的社区,它汇聚了众多精心设计的助手,这些助手不仅在工作场景中发挥着重要作用,也在学习过程中提供了极大的便利。
|
||||
我们的市场不仅是一个展示平台,更是一个协作的空间。在这里,每个人都可以贡献自己的智慧,分享个人开发的助手。
|
||||
|
||||
<br/>
|
||||
> \[!TIP]
|
||||
>
|
||||
> 通过 [🤖/🏪 提交助手][submit-agents-link] ,你可以轻松地将你的助手作品提交到我们的平台。我们特别强调的是,LobeChat 建立了一套精密的自动化国际化(i18n)工作流程, 它的强大之处在于能够无缝地将你的助手转化为多种语言版本。
|
||||
> 这意味着,不论你的用户使用何种语言,他们都能无障碍地体验到你的助手。
|
||||
|
||||
> \[!IMPORTANT]
|
||||
>
|
||||
> 我欢迎所有用户加入这个不断成长的生态系统,共同参与到助手的迭代与优化中来。共同创造出更多有趣、实用且具有创新性的助手,进一步丰富助手的多样性和实用性。
|
||||
|
||||
<!-- AGENT LIST -->
|
||||
|
||||
| 最近新增 | 助手说明 |
|
||||
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| [短视频脚本助手](https://chat-preview.lobehub.com/market?agent=tik-tok-director)<br/><sup>By **[aihoom](https://github.com/aihoom)** on **2023-11-17**</sup> | 旨在帮助用户编写吸引人、潮流的短视频剧本<br/>`短视频` `tkitok` `编剧` |
|
||||
| [专家代理人导师](https://chat-preview.lobehub.com/market?agent=co-agent)<br/><sup>By **[tcmonster](https://github.com/tcmonster)** on **2023-11-16**</sup> | 调用完全适合任务的专家代理人来支持您的目标<br/>`任务指导` `执行计划` `沟通` `支持` |
|
||||
| [全栈开发人员](https://chat-preview.lobehub.com/market?agent=fs-dev)<br/><sup>By **[cloverfield11](https://github.com/cloverfield11)** on **2023-11-15**</sup> | 具有 HTML、CSS、JavaScript、Python、Java、Ruby 和 React、Angular、Vue.js、Express、Django、Next.js、Flask 或 Ruby on Rails 框架经验的全栈 Web 开发人员。具备数据库、应用架构、安全性和测试经验。<br/>`web开发` `前端` `后端` `编程` `数据库` |
|
||||
| [图形创意大师](https://chat-preview.lobehub.com/market?agent=graphic-creativity)<br/><sup>By **[yingxirz](https://github.com/yingxirz)** on **2023-11-15**</sup> | 擅长平面创意设计与图形创意<br/>`图形` `创意` `设计` `平面` |
|
||||
|
||||
> 📊 Total agents: [<kbd>**48**</kbd> ](https://github.com/lobehub/lobe-chat-agents)
|
||||
|
||||
<!-- AGENT LIST -->
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
#### `3` PWA 渐进式 Web 应用
|
||||
#### `5` PWA 渐进式 Web 应用
|
||||
|
||||
利用渐进式 Web 应用 [PWA](https://support.google.com/chrome/answer/9658361) 技术,您可在电脑或移动设备上实现流畅的 LobeChat 体验。
|
||||
我们利深知在当今多设备环境下为用户提供无缝体验的重要性。为此,我们采用了渐进式 Web 应用 [PWA](https://support.google.com/chrome/answer/9658361) 技术,
|
||||
这是一种能够将网页应用提升至接近原生应用体验的现代 Web 技术。通过 PWA,LobeChat 能够在桌面和移动设备上提供高度优化的用户体验,同时保持轻量级和高性能的特点。
|
||||
在视觉和感觉上,我们也经过精心设计,以确保它的界面与原生应用无差别,提供流畅的动画、响应式布局和适配不同设备的屏幕分辨率。
|
||||
|
||||
> **Note**\
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 若您未熟悉 PWA 的安装过程,您可以按照以下步骤将 LobeChat 添加为您的桌面应用(也适用于移动设备):
|
||||
>
|
||||
> - 在电脑上运行 Chrome 或 Edge 浏览器
|
||||
> - 访问 LobeChat 网页
|
||||
> - 在地址栏的右上角,单击 <kbd>安装</kbd> 图标
|
||||
> - 根据屏幕上的指示完成 PWA 的安装
|
||||
> - 在电脑上运行 Chrome 或 Edge 浏览器 .
|
||||
> - 访问 LobeChat 网页 .
|
||||
> - 在地址栏的右上角,单击 <kbd>安装</kbd> 图标 .
|
||||
> - 根据屏幕上的指示完成 PWA 的安装 .
|
||||
|
||||
<br/>
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
#### `4` 主题模式选择
|
||||
#### `6` 主题模式选择
|
||||
|
||||
LobeChat 提供了两种独特的主题模式 - 明亮模式和暗黑模式,以及丰富的颜色定制选项,以满足您的个性化需求。默认情况下,我们的主题会智能地跟随您的系统设置进行切换,但如果您希望进行手动控制,也可以轻松在设置中进行切换。
|
||||
作为设计工程师出身 LobeChat 在界面设计上十分考虑用户的个性化体验,因此引入了灵活多变的主题模式,其中包括日间的亮色模式和夜间的深色模式。
|
||||
除了主题模式的切换,提供了一系列的颜色定制选项,允许用户根据自己的喜好来调整应用的主题色彩。无论是想要沉稳的深蓝,还是希望活泼的桃粉,或者是专业的灰白,用户都能够在 LobeChat 中找到匹配自己风格的颜色选择。
|
||||
|
||||
<br/>
|
||||
> \[!TIP]
|
||||
>
|
||||
> 默认配置能够智能地识别用户系统的颜色模式,自动进行主题切换,以确保应用界面与操作系统保持一致的视觉体验。对于喜欢手动调控细节的用户,LobeChat 同样提供了直观的设置选项,针对聊天场景也提供了对话气泡模式和文档模式的选择。
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
#### `5` 移动设备适配
|
||||
#### `7` 移动设备适配
|
||||
|
||||
针对移动设备进行了一系列的优化设计,以提升用户的移动体验。目前,我们正在对移动端的用户体验进行版本迭代,以实现更加流畅和直观的交互。如果您有任何建议或想法,我们非常欢迎您通过 GitHub Issues 或者 Pull Requests 提供反馈。
|
||||
|
||||
@@ -156,12 +279,35 @@ LobeChat 提供了两种独特的主题模式 - 明亮模式和暗黑模式,
|
||||
|
||||
</div>
|
||||
|
||||
## ⚡️ 性能测试
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 完整测试报告可见 [📘 Lighthouse 性能测试](https://github.com/lobehub/lobe-chat/wiki/Lighthouse.zh-CN)
|
||||
|
||||
| Desktop | Mobile |
|
||||
| :-------------------------------------------: | :------------------------------------------: |
|
||||
| ![][chat-desktop] | ![][chat-mobile] |
|
||||
| [📑 Lighthouse 测试报告][chat-desktop-report] | [📑 Lighthouse 测试报告][chat-mobile-report] |
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## 🛳 开箱即用
|
||||
|
||||
LobeChat 提供了 Vercel 的 [自托管版本][deploy-link]。这使你可以在几分钟内构建自己的聊天机器人,无需任何基础知识。如果想自己部署该服务,可以按照以下步骤进行操作:
|
||||
LobeChat 提供了 Vercel 的 自托管版本 和 [Docker 镜像][docker-release-link],这使你可以在几分钟内构建自己的聊天机器人,无需任何基础知识。
|
||||
|
||||
<br/>
|
||||
|
||||
### `A` 使用 Vercel 部署
|
||||
|
||||
如果想在 Vercel 上部署该服务,可以按照以下步骤进行操作:
|
||||
|
||||
- 准备好你的 [OpenAI API Key](https://platform.openai.com/account/api-keys) 。
|
||||
- 点击下方按钮开始部署: Deploy with Vercel,直接使用 GitHub 账号登录即可,记得在环境变量页填入 API Key 和页面访问密码 CODE;
|
||||
- 点击下方按钮开始部署: Deploy with Vercel,直接使用 GitHub 账号登录即可,记得在环境变量页填入 `OPENAI_API_KEY` (必填) and `ACCESS_CODE`(推荐);
|
||||
- 部署完毕后,即可开始使用;
|
||||
- 绑定自定义域名(可选):Vercel 分配的域名 DNS 在某些区域被污染了,绑定自定义域名即可直连。
|
||||
|
||||
@@ -171,18 +317,62 @@ LobeChat 提供了 Vercel 的 [自托管版本][deploy-link]。这使你可以
|
||||
|
||||
</div>
|
||||
|
||||
> **Note**\
|
||||
> 本项目提供了一些额外的配置项,使用环境变量进行设置,完整环境变量可见 [📘环境变量](https://github.com/lobehub/lobe-chat/wiki/Environment-Variable.zh-CN):
|
||||
#### 保持更新
|
||||
|
||||
| 环境变量 | 类型 | 描述 | 示例 |
|
||||
| ------------------ | ---- | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
||||
| `OPENAI_API_KEY` | 必选 | 这是你在 OpenAI 账户页面申请的 API 密钥 | `sk-xxxxxx...xxxxxx` |
|
||||
| `OPENAI_PROXY_URL` | 可选 | 如果你手动配置了 OpenAI 接口代理,可以使用此配置项来覆盖默认的 OpenAI API 请求基础 URL | `https://api.chatanywhere.cn`<br/>默认值:<br/>`https://api.openai.com` |
|
||||
| `ACCESS_CODE` | 可选 | 添加访问此服务的密码,密码应为 6 位数字或字母 | `awCT74` 或 `e3@09!` |
|
||||
如果你根据 README 中的一键部署步骤部署了自己的项目,你可能会发现总是被提示 “有可用更新”。这是因为 Vercel 默认为你创建新项目而非 fork 本项目,这将导致无法准确检测更新。
|
||||
|
||||
### 保持更新
|
||||
> \[!TIP]
|
||||
>
|
||||
> 我们建议按照 [📘 LobeChat 自部署保持更新](https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync.zh-CN) 步骤重新部署。
|
||||
|
||||
如果你根据 README 中的一键部署步骤部署了自己的项目,你可能会发现总是被提示 “有可用更新”。这是因为 Vercel 默认为你创建新项目而非 fork 本项目,这将导致无法准确检测更新。我们建议按照 [📘 LobeChat 自部署保持更新](https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync.zh-CN) 步骤重新部署。
|
||||
<br/>
|
||||
|
||||
### `B` 使用 Docker 部署
|
||||
|
||||
[![][docker-release-shield]][docker-release-link]
|
||||
[![][docker-size-shield]][docker-size-link]
|
||||
[![][docker-pulls-shield]][docker-pulls-link]
|
||||
|
||||
我们提供了 Docker 镜像,供你在自己的私有设备上部署 LobeChat 服务。使用以下命令即可使用一键启动 LobeChat 服务:
|
||||
|
||||
```fish
|
||||
$ docker run -d -p 3210:3210 \
|
||||
-e OPENAI_API_KEY=sk-xxxx \
|
||||
-e ACCESS_CODE=lobe66 \
|
||||
lobehub/lobe-chat
|
||||
```
|
||||
|
||||
> \[!TIP]
|
||||
>
|
||||
> 如果你需要通过代理使用 OpenAI 服务,你可以使用 `OPENAI_PROXY_URL` 环境变量来配置代理地址:
|
||||
|
||||
```fish
|
||||
$ docker run -d -p 3210:3210 \
|
||||
-e OPENAI_API_KEY=sk-xxxx \
|
||||
-e OPENAI_PROXY_URL=https://api-proxy.com/v1 \
|
||||
-e ACCESS_CODE=lobe66 \
|
||||
lobehub/lobe-chat
|
||||
```
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 有关 Docker 部署的详细说明,详见 [📘 使用 Docker 部署](https://github.com/lobehub/lobe-chat/wiki/Docker-Deployment.zh-CN)
|
||||
|
||||
<br/>
|
||||
|
||||
### 环境变量
|
||||
|
||||
本项目提供了一些额外的配置项,使用环境变量进行设置:
|
||||
|
||||
| 环境变量 | 类型 | 描述 | 示例 |
|
||||
| ------------------ | ---- | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
|
||||
| `OPENAI_API_KEY` | 必选 | 这是你在 OpenAI 账户页面申请的 API 密钥 | `sk-xxxxxx...xxxxxx` |
|
||||
| `OPENAI_PROXY_URL` | 可选 | 如果你手动配置了 OpenAI 接口代理,可以使用此配置项来覆盖默认的 OpenAI API 请求基础 URL | `https://api.chatanywhere.cn/v1`<br/>默认值:<br/>`https://api.openai.com/v1` |
|
||||
| `ACCESS_CODE` | 可选 | 添加访问此服务的密码,密码应为 6 位数字或字母 | `awCT74` 或 `e3@09!` |
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 完整环境变量可见 [📘环境变量](https://github.com/lobehub/lobe-chat/wiki/Environment-Variable.zh-CN)
|
||||
|
||||
<div align="right">
|
||||
|
||||
@@ -192,9 +382,10 @@ LobeChat 提供了 Vercel 的 [自托管版本][deploy-link]。这使你可以
|
||||
|
||||
## 📦 生态系统
|
||||
|
||||
| NPM | 代码库 | 描述 | 版本 |
|
||||
| NPM | 仓库 | 描述 | 版本 |
|
||||
| ------------------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------- |
|
||||
| [@lobehub/ui][lobe-ui-link] | [lobehub/lobe-ui][lobe-ui-github] | Lobe UI 是一个专为构建 AIGC 网页应用程序而设计的开源 UI 组件库。 | [![][lobe-ui-shield]][lobe-ui-link] |
|
||||
| [@lobehub/tts][lobe-tts-link] | [lobehub/lobe-tts][lobe-tts-github] | Lobe TTS 是一个专为 TTS/STT 建设的语音合成 / 识别 React Hooks 库 | [![][lobe-tts-shield]][lobe-tts-link] |
|
||||
| [@lobehub/lint][lobe-lint-link] | [lobehub/lobe-lint][lobe-lint-github] | LobeLint 为 LobeHub 提供 ESlint,Stylelint,Commitlint,Prettier,Remark 和 Semantic Release 的配置。 | [![][lobe-lint-shield]][lobe-lint-link] |
|
||||
| @lobehub/assets | [lobehub/assets][lobe-assets-github] | LobeHub 的 Logo 资源、favicon、网页字体。 | |
|
||||
|
||||
@@ -213,19 +404,14 @@ LobeChat 提供了 Vercel 的 [自托管版本][deploy-link]。这使你可以
|
||||
- [@lobehub/chat-plugin-sdk][chat-plugin-sdk]:LobeChat 插件 SDK 可帮助您创建出色的 Lobe Chat 插件。
|
||||
- [@lobehub/chat-plugins-gateway][chat-plugins-gateway]:LobeChat 插件网关是一个后端服务,作为 LobeChat 插件的网关。我们使用 Vercel 部署此服务。主要的 API POST /api/v1/runner 被部署为 Edge Function。
|
||||
|
||||
> **Note**\
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 插件系统目前正在进行重大开发。您可以在以下 Issues 中了解更多信息:
|
||||
>
|
||||
> - [x] [**插件一期**](https://github.com/lobehub/lobe-chat/issues/73): 实现插件与主体分离,将插件拆分为独立仓库维护,并实现插件的动态加载
|
||||
> - [x] [**插件二期**](https://github.com/lobehub/lobe-chat/issues/97): 插件的安全性与使用的稳定性,更加精准地呈现异常状态,插件架构的可维护性与开发者友好
|
||||
> - [ ] [**插件三期**](https://github.com/lobehub/lobe-chat/issues/149):更高阶与完善的自定义能力,支持插件鉴权与示例
|
||||
|
||||
| 官方插件 | 描述 |
|
||||
| ---------------------------------------- | ---------------------------------------------------------------------------- |
|
||||
| [搜索引擎][chat-plugin-search-engine] | 此插件允许使用 SerpApi 搜索引擎。 |
|
||||
| [实时天气][chat-plugin-realtime-weather] | 此插件通过获取实时天气数据提供实用的天气信息,并可以根据用户的位置自动更新。 |
|
||||
| [网站爬虫][chat-plugin-web-crawler] | 此插件自动爬取指定 URL 网页的主要内容,并将其用作上下文输入。 |
|
||||
|
||||
<div align="right">
|
||||
|
||||
[![][back-to-top]](#readme-top)
|
||||
@@ -242,7 +428,7 @@ LobeChat 提供了 Vercel 的 [自托管版本][deploy-link]。这使你可以
|
||||
|
||||
[![][bun-shield]][bun-link]
|
||||
|
||||
```bash
|
||||
```fish
|
||||
$ git clone https://github.com/lobehub/lobe-chat.git
|
||||
$ cd lobe-chat
|
||||
$ bun install
|
||||
@@ -299,21 +485,28 @@ This project is [MIT](./LICENSE) licensed.
|
||||
[back-to-top]: https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square
|
||||
[bun-link]: https://bun.sh
|
||||
[bun-shield]: https://img.shields.io/badge/-speedup%20with%20bun-black?logo=bun&style=for-the-badge
|
||||
[chat-plugin-realtime-weather]: https://github.com/lobehub/chat-plugin-realtime-weather
|
||||
[chat-desktop]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/chat/desktop/pagespeed.svg
|
||||
[chat-desktop-report]: https://lobehub.github.io/lobe-chat/lighthouse/chat/desktop/chat_preview_lobehub_com_chat.html
|
||||
[chat-mobile]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/chat/mobile/pagespeed.svg
|
||||
[chat-mobile-report]: https://lobehub.github.io/lobe-chat/lighthouse/chat/mobile/chat_preview_lobehub_com_chat.html
|
||||
[chat-plugin-sdk]: https://github.com/lobehub/chat-plugin-sdk
|
||||
[chat-plugin-search-engine]: https://github.com/lobehub/chat-plugin-search-engine
|
||||
[chat-plugin-template]: https://github.com/lobehub/chat-plugin-template
|
||||
[chat-plugin-web-crawler]: https://github.com/lobehub/chat-plugin-web-crawler
|
||||
[chat-plugins-gateway]: https://github.com/lobehub/chat-plugins-gateway
|
||||
[codespaces-link]: https://codespaces.new/lobehub/lobe-chat
|
||||
[codespaces-shield]: https://github.com/codespaces/badge.svg
|
||||
[contributors-contrib]: https://contrib.rocks/image?repo=lobehub/lobe-chat
|
||||
[contributors-link]: https://github.com/lobehub/lobe-chat/graphs/contributors
|
||||
[deploy-button-image]: https://vercel.com/button
|
||||
[deploy-link]: https://vercel.com/new/clone?repository-link=https%3A%2F%2Fgithub.com%2Flobehub%2Flobe-chat&env=OPENAI_API_KEY&envDescription=Find%20your%20OpenAI%20API%20Key%20by%20click%20the%20right%20Learn%20More%20button.%20%20&envLink=https%3A%2F%2Fplatform.openai.com%2Faccount%2Fapi-keys&project-name=lobe-chat&repository-name=lobe-chat
|
||||
[deploy-link]: https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Flobehub%2Flobe-chat&env=OPENAI_API_KEY&envDescription=Find%20your%20OpenAI%20API%20Key%20by%20click%20the%20right%20Learn%20More%20button.&envLink=https%3A%2F%2Fplatform.openai.com%2Faccount%2Fapi-keys&project-name=lobe-chat&repository-name=lobe-chat
|
||||
[discord-link]: https://discord.gg/AYFPHvv2jT
|
||||
[discord-shield]: https://img.shields.io/discord/1127171173982154893?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=flat-square
|
||||
[discord-shield-badge]: https://img.shields.io/discord/1127171173982154893?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge
|
||||
[docker-pulls-link]: https://hub.docker.com/r/lobehub/lobe-chat
|
||||
[docker-pulls-shield]: https://img.shields.io/docker/pulls/lobehub/lobe-chat?color=45cc11&labelColor=black&style=flat-square
|
||||
[docker-release-link]: https://hub.docker.com/r/lobehub/lobe-chat
|
||||
[docker-release-shield]: https://img.shields.io/docker/v/lobehub/lobe-chat?color=369eff&label=docker&labelColor=black&logo=docker&logoColor=white&style=flat-square
|
||||
[docker-size-link]: https://hub.docker.com/r/lobehub/lobe-chat
|
||||
[docker-size-shield]: https://img.shields.io/docker/image-size/lobehub/lobe-chat?color=369eff&labelColor=black&style=flat-square
|
||||
[fc-link]: https://sspai.com/post/81986
|
||||
[fossa-license-link]: https://app.fossa.com/projects/git%2Bgithub.com%2Flobehub%2Flobe-chat
|
||||
[fossa-license-shield]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Flobehub%2Flobe-chat.svg?type=large
|
||||
@@ -346,6 +539,9 @@ This project is [MIT](./LICENSE) licensed.
|
||||
[lobe-lint-link]: https://www.npmjs.com/package/@lobehub/lint
|
||||
[lobe-lint-shield]: https://img.shields.io/npm/v/@lobehub/lint?color=369eff&labelColor=black&logo=npm&logoColor=white&style=flat-square
|
||||
[lobe-theme]: https://github.com/lobehub/sd-webui-lobe-theme
|
||||
[lobe-tts-github]: https://github.com/lobehub/lobe-tts
|
||||
[lobe-tts-link]: https://www.npmjs.com/package/@lobehub/tts
|
||||
[lobe-tts-shield]: https://img.shields.io/npm/v/@lobehub/tts?color=369eff&labelColor=black&logo=npm&logoColor=white&style=flat-square
|
||||
[lobe-ui-github]: https://github.com/lobehub/lobe-ui
|
||||
[lobe-ui-link]: https://www.npmjs.com/package/@lobehub/ui
|
||||
[lobe-ui-shield]: https://img.shields.io/npm/v/@lobehub/ui?color=369eff&labelColor=black&logo=npm&logoColor=white&style=flat-square
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { beforeEach } from 'vitest';
|
||||
import { createWithEqualityFn as actualCreate } from 'zustand/traditional';
|
||||
|
||||
// a variable to hold reset functions for all stores declared in the app
|
||||
const storeResetFns = new Set<() => void>();
|
||||
|
||||
// when creating a store, we get its initial state, create a reset function and add it in the set
|
||||
const createImpl = (createState: any) => {
|
||||
const store = actualCreate(createState, Object.is);
|
||||
const initialState = store.getState();
|
||||
storeResetFns.add(() => store.setState(initialState, true));
|
||||
return store;
|
||||
};
|
||||
|
||||
// Reset all stores after each test run
|
||||
beforeEach(() => {
|
||||
act(() => {
|
||||
for (const resetFn of storeResetFns) {
|
||||
resetFn();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
export const createWithEqualityFn = (f: any) => (f === undefined ? createImpl : createImpl(f));
|
||||
@@ -6,14 +6,10 @@
|
||||
|
||||
[Vercel Analytics](https://vercel.com/analytics) 是 Vercel 推出的一款数据分析服务,它可以帮助你收集网站的访问情况,包括访问量、访问来源、访问设备等等。
|
||||
|
||||
由于我们推荐使用 Vercel 一键部署 LobeChat,因此我们在代码中默认集成了 Vercel Analytics,你可以通过自行打开部署项目中 \[Insights] tab,查看你的应用访问情况。
|
||||
我们在代码中集成了 Vercel Analytics,你可以通过设置环境变量 `NEXT_PUBLIC_ANALYTICS_VERCEL=1` 来开启它,并打开 Vercel 部署项目中 Analytics tab 查看你的应用访问情况。
|
||||
|
||||
Vercel Analytics 提供了 2500 次 / 月的免费 Web Analytics Events (可以理解为 PV),对于个人部署自用的产品来说基本够用。
|
||||
|
||||
如果你需要了解 Vercel Analytics 的详细使用教程,请查阅[Vercel Web Analytics 快速开始](https://vercel.com/docs/analytics/quickstart)
|
||||
|
||||
如果你不需要 Vercel Analytics,你可以通过设置环境变量 `NEXT_PUBLIC_ANALYTICS_VERCEL=0` 来关闭它。
|
||||
|
||||
## 🚧 Posthog
|
||||
|
||||
## 🚧 Mixpanel
|
||||
|
||||
@@ -27,7 +27,7 @@ You can fill in the corresponding configuration items as needed:
|
||||
|
||||
- **APIKey**: The API key you applied for on the Azure OpenAI account page, which can be found in the "Keys and Endpoints" section.
|
||||
- **API Address**: Azure API address, which can be found in the "Keys and Endpoints" section when checking resources from the Azure portal.
|
||||
- **Azure Api Version**: The API version of Azure, which follows the YYYY-MM-DD format, refer to the [latest version][azure-api-verion-url].
|
||||
- **Azure Api Version**: The API version of Azure, which follows the YYYY-MM-DD format, refer to the [latest version][azure-api-version-url].
|
||||
|
||||
After completing the above field configuration, click on "Check". If the prompt says "Check Passed", it means the configuration was successful.
|
||||
|
||||
@@ -37,17 +37,18 @@ After completing the above field configuration, click on "Check". If the prompt
|
||||
|
||||
If you want the deployed version to be directly configured with Azure OpenAI for end users to use immediately, you need to configure the following environment variables at deployment:
|
||||
|
||||
| Environment Variable | Required | Description | Default Value | Example |
|
||||
| -------------------- | -------- | --------------------------------------------------------------------------------- | ------------------ | ------------------------------------------------------------- |
|
||||
| `USE_AZURE_OPENAI` | Yes | Set this value to `1` to enable Azure OpenAI configuration | - | `1` |
|
||||
| `AZURE_API_KEY` | Yes | This is the API key you applied for on the Azure OpenAI account page | - | `c55168be3874490ef0565d9779ecd5a6` |
|
||||
| `OPENAI_PROXY_URL` | Yes | Azure API address, can be found in the "Keys and Endpoints" section | - | `https://docs-test-001.openai.azure.com` |
|
||||
| `AZURE_API_VERSION` | No | Azure's API version, follows the YYYY-MM-DD format | 2023-08-01-preview | `2023-05-15`, refer to [latest version][azure-api-verion-url] |
|
||||
| `ACCESS_CODE` | No | Add a password to access this service, the password should be 6 digits or letters | - | `awCT74` or `e3@09!` |
|
||||
| Environment Variable | Required | Description | Default Value | Example |
|
||||
| -------------------- | -------- | --------------------------------------------------------------------------------- | ------------------ | -------------------------------------------------------------- |
|
||||
| `USE_AZURE_OPENAI` | Yes | Set this value to `1` to enable Azure OpenAI configuration | - | `1` |
|
||||
| `AZURE_API_KEY` | Yes | This is the API key you applied for on the Azure OpenAI account page | - | `c55168be3874490ef0565d9779ecd5a6` |
|
||||
| `OPENAI_PROXY_URL` | Yes | Azure API address, can be found in the "Keys and Endpoints" section | - | `https://docs-test-001.openai.azure.com` |
|
||||
| `AZURE_API_VERSION` | No | Azure's API version, follows the YYYY-MM-DD format | 2023-08-01-preview | `2023-05-15`, refer to [latest version][azure-api-version-url] |
|
||||
| `ACCESS_CODE` | No | Add a password to access this service, the password should be 6 digits or letters | - | `awCT74` or `e3@09!` |
|
||||
|
||||
> **Note**\
|
||||
> \[!NOTE]
|
||||
>
|
||||
> When you enable `USE_AZURE_OPENAI` on the server side, users will not be able to modify and use the OpenAI key in the front-end configuration.
|
||||
|
||||
[azure-api-verion-url]: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions
|
||||
[azure-api-version-url]: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions
|
||||
[azure-openai-url]: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/concepts/models
|
||||
[rfc]: https://github.com/lobehub/lobe-chat/discussions/178
|
||||
|
||||
@@ -45,7 +45,8 @@ LobeChat 支持使用 [Azure OpenAI][azure-openai-url] 作为 OpenAI 的模型
|
||||
| `AZURE_API_VERSION` | 可选 | Azure 的 API 版本,遵循 YYYY-MM-DD 格式 | 2023-08-01-preview | `2023-05-15`,查阅[最新版本][azure-api-verion-url] |
|
||||
| `ACCESS_CODE` | 可选 | 添加访问此服务的密码,密码应为 6 位数字或字母 | - | `awCT74` 或 `e3@09!` |
|
||||
|
||||
> **Note**\
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 当你在服务端开启 `USE_AZURE_OPENAI` 后,用户将无法在前端配置中修改并使用 OpenAI key。
|
||||
|
||||
[azure-api-verion-url]: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
## 架构设计
|
||||
|
||||
LobeChat 是一个基于 Next.js 框架构建的 AI 会话应用,旨在提供一个 AI 生产力平台,使用户能够与 AI 进行自然语言交互。以下是 LobeChat 的架构设计介稿:
|
||||
|
||||
## 应用架构概览
|
||||
|
||||
LobeChat 的整体架构由前端、EdgeRuntime API、Agents 市场、插件市场和独立插件组成。这些组件相互协作,以提供完整的 AI 体验。
|
||||
|
||||
## 前端架构
|
||||
|
||||
LobeChat 的前端采用 Next.js 框架,利用其强大的 SSR(服务器端渲染)能力和路由功能。前端使用了一系列技术栈,包括 antd 组件库和 lobe-ui AIGC 组件库、zustand 状态管理、swr 请求库、i18next 国际化库等。这些技术栈共同支持了 LobeChat 的功能和特性。
|
||||
|
||||
前端架构中的组件包括 app、components、config、const、features、helpers、hooks、layout、locales、migrations、prompts、services、store、styles、types 和 utils。每个组件都有特定的职责,并与其他组件协同工作,以实现不同的功能。
|
||||
|
||||
## Edge Runtime API
|
||||
|
||||
Edge Runtime API 是 LobeChat 的核心组件之一,负责处理 AI 会话的核心逻辑。它提供了与 AI 引擎的交互接口,包括自然语言处理、意图识别和回复生成等。EdgeRuntime API 与前端进行通信,接收用户的输入并返回相应的回复。
|
||||
|
||||
## Agents 市场
|
||||
|
||||
Agents 市场是 LobeChat 的一个重要组成部分,它提供了各种不同场景的 AI Agent,用于处理特定的任务和领域。Agents 市场还提供了使用和上传 Agent 的功能,使用户能够发现其他人制作的 Agent ,也可以一键分享自己的 Agent 到市场上。
|
||||
|
||||
## 插件市场
|
||||
|
||||
插件市场是 LobeChat 的另一个关键组件,它提供了各种插件,用于扩展 LobeChat 的功能和特性。插件可以是独立的功能模块,也可以与 Agents 市场的 Agent 进行集成。在会话中,助手将自动识别用户的输入,并识别适合的插件并传递给相应的插件进行处理,并返回处理结果。
|
||||
|
||||
## 安全性和性能优化
|
||||
|
||||
LobeChat 的安全性策略包括身份验证和权限管理。用户需要进行身份验证后才能使用 LobeChat,同时根据用户的权限进行相应的操作限制。
|
||||
|
||||
为了优化性能,LobeChat 使用了 Next.js 的 SSR 功能,实现了快速的页面加载和响应时间。此外,还采用了一系列的性能优化措施,包括代码分割、缓存和资源压缩等。
|
||||
|
||||
## 开发和部署流程
|
||||
|
||||
LobeChat 的开发流程包括版本控制、测试、持续集成和持续部署。开发团队使用版本控制系统进行代码管理,并进行单元测试和集成测试以确保代码质量。持续集成和持续部署流程确保了代码的快速交付和部署。
|
||||
|
||||
以上是 LobeChat 的架构设计介绍简介,详细解释了各个组件的职责和协作方式,以及设计决策对应用功能和性能的影响。
|
||||
@@ -0,0 +1,127 @@
|
||||
# LobeChat 会话 API 实现逻辑
|
||||
|
||||
LobeChat 的大模型 AI 实现主要依赖于 OpenAI 的 API,包括后端的核心会话 API 和前端的集成 API。接下来,我们将分别介绍后端和前端的实现思路和代码。
|
||||
|
||||
## 后端实现
|
||||
|
||||
以下代码中移除了鉴权、错误处理等逻辑,仅保留了核心的主要功能逻辑。
|
||||
|
||||
### 核心会话 API
|
||||
|
||||
在 `src/app/api/openai/chat/handler.ts` 文件中,我们定义了 `POST` 方法,该方法首先从请求中解析出 payload 数据(即客户端发送的会话内容),然后从请求中获取 OpenAI 的授权信息。之后,我们创建一个 `openai` 对象,并调用 `createChatCompletion` 方法,该方法负责发送会话请求到 OpenAI 并返回结果。
|
||||
|
||||
```ts
|
||||
export const POST = async (req: Request) => {
|
||||
const payload = await req.json();
|
||||
|
||||
const { apiKey, endpoint } = getOpenAIAuthFromRequest(req);
|
||||
|
||||
const openai = createOpenai(apiKey, endpoint);
|
||||
|
||||
return createChatCompletion({ openai, payload });
|
||||
};
|
||||
```
|
||||
|
||||
### 会话结果处理
|
||||
|
||||
在 `src/app/api/openai/chat/createChatCompletion.ts` 文件中,我们定义了 `createChatCompletion` 方法,该方法首先对 payload 数据进行预处理,然后调用 OpenAI 的 `chat.completions.create` 方法发送请求,并使用 [Vercel AI SDK](https://sdk.vercel.ai/docs) 中的 `OpenAIStream` 将返回的结果转化为流式响应。
|
||||
|
||||
```ts
|
||||
import { OpenAIStream, StreamingTextResponse } from 'ai';
|
||||
|
||||
export const createChatCompletion = async ({ payload, openai }: CreateChatCompletionOptions) => {
|
||||
const { messages, ...params } = payload;
|
||||
|
||||
const formatMessages = messages.map((m) => ({
|
||||
content: m.content,
|
||||
name: m.name,
|
||||
role: m.role,
|
||||
}));
|
||||
|
||||
const response = await openai.chat.completions.create(
|
||||
{
|
||||
messages: formatMessages,
|
||||
...params,
|
||||
stream: true,
|
||||
},
|
||||
{ headers: { Accept: '*/*' } },
|
||||
);
|
||||
const stream = OpenAIStream(response);
|
||||
return new StreamingTextResponse(stream);
|
||||
};
|
||||
```
|
||||
|
||||
## 前端实现
|
||||
|
||||
### 前端集成
|
||||
|
||||
在 `src/services/chatModel.ts` 文件中,我们定义了 `fetchChatModel` 方法,该方法首先对 payload 数据进行前置处理,然后发送 POST 请求到后端的 `/chat` 接口,并将请求结果返回。
|
||||
|
||||
```ts
|
||||
export const fetchChatModel = (
|
||||
{ plugins: enabledPlugins, ...params }: Partial<OpenAIStreamPayload>,
|
||||
options?: FetchChatModelOptions,
|
||||
) => {
|
||||
const payload = merge(
|
||||
{
|
||||
model: initialLobeAgentConfig.model,
|
||||
stream: true,
|
||||
...initialLobeAgentConfig.params,
|
||||
},
|
||||
params,
|
||||
);
|
||||
|
||||
const filterFunctions: ChatCompletionFunctions[] = pluginSelectors.enabledSchema(enabledPlugins)(
|
||||
usePluginStore.getState(),
|
||||
);
|
||||
|
||||
const functions = filterFunctions.length === 0 ? undefined : filterFunctions;
|
||||
|
||||
return fetch(OPENAI_URLS.chat, {
|
||||
body: JSON.stringify({ ...payload, functions }),
|
||||
headers: createHeaderWithOpenAI({ 'Content-Type': 'application/json' }),
|
||||
method: 'POST',
|
||||
signal: options?.signal,
|
||||
});
|
||||
};
|
||||
```
|
||||
|
||||
### 使用流式获取结果
|
||||
|
||||
在 `src/utils/fetch.ts` 文件中,我们定义了 `fetchSSE` 方法,该方法使用流式方法获取数据,当读取到新的数据块时,会调用 `onMessageHandle` 回调函数处理数据块,进而实现打字机输出效果。
|
||||
|
||||
```ts
|
||||
export const fetchSSE = async (fetchFn: () => Promise<Response>, options: FetchSSEOptions = {}) => {
|
||||
const response = await fetchFn();
|
||||
|
||||
if (!response.ok) {
|
||||
const chatMessageError = await getMessageError(response);
|
||||
|
||||
options.onErrorHandle?.(chatMessageError);
|
||||
return;
|
||||
}
|
||||
|
||||
const returnRes = response.clone();
|
||||
|
||||
const data = response.body;
|
||||
|
||||
if (!data) return;
|
||||
|
||||
const reader = data.getReader();
|
||||
const decoder = new TextDecoder();
|
||||
|
||||
let done = false;
|
||||
|
||||
while (!done) {
|
||||
const { value, done: doneReading } = await reader.read();
|
||||
done = doneReading;
|
||||
const chunkValue = decoder.decode(value);
|
||||
|
||||
options.onMessageHandle?.(chunkValue);
|
||||
}
|
||||
|
||||
return returnRes;
|
||||
};
|
||||
```
|
||||
|
||||
以上就是 LobeChat 会话 API 的核心实现。在理解了这些核心代码的基础上,便可以进一步扩展和优化 LobeChat 的 AI 功能。
|
||||
@@ -0,0 +1,118 @@
|
||||
## 如何开发一个新功能
|
||||
|
||||
LobeChat 基于 Next.js 框架构建,使用 TypeScript 作为主要开发语言。在开发新功能时,我们需要遵循一定的开发流程,以确保代码的质量和稳定性。大致的流程分为以下五步:
|
||||
|
||||
1. 路由:定义路由 (`src/app`)
|
||||
2. 数据结构: 定义数据结构 ( `src/types` )
|
||||
3. 业务功能实现: zustand store (`src/store`)
|
||||
4. 页面展示:书写静态组件 / 页面 (`src/app/<new-page>/features/<new-feature>.tsx`)
|
||||
5. 功能绑定:绑定 store 与页面的触发 (`const [state,function]= useNewStore(s=>[s.state,s.function])`)
|
||||
|
||||
我们以 "会话消息" 功能为例,以下是实现这个功能的简要步骤:
|
||||
|
||||
## 1. 定义路由
|
||||
|
||||
在 `src/app` 目录下,我们需要定义一个新的路由来承载 "会话消息" 页面。一般来说,我们会在 `src/app` 下创建一个新的文件夹,例如 `chat`,并且在这个文件夹中创建 `page.tsx`文件,在该文件中导出 React 组件作为页面的主体。
|
||||
|
||||
```tsx
|
||||
// src/app/chat/page.tsx
|
||||
import ChatPage from './features/chat';
|
||||
|
||||
export default ChatPage;
|
||||
```
|
||||
|
||||
## 2. 定义数据结构
|
||||
|
||||
在 `src/types` 目录下,我们需要定义 "会话消息" 的数据结构。例如,我们创建一个 `chat.ts` 文件,并在其中定义 `ChatMessage` 类型:
|
||||
|
||||
```ts
|
||||
// src/types/chat.ts
|
||||
|
||||
export type ChatMessage = {
|
||||
id: string;
|
||||
content: string;
|
||||
timestamp: number;
|
||||
sender: 'user' | 'bot';
|
||||
};
|
||||
```
|
||||
|
||||
## 3. 创建 Zustand Store
|
||||
|
||||
在 `src/store` 目录下,我们需要创建一个新的 Zustand Store 来管理 "会话消息" 的状态。例如,我们创建一个 `chatStore.ts` 文件,并在其中定义一个 Zustand Store:
|
||||
|
||||
```ts
|
||||
// src/store/chatStore.ts
|
||||
import create from 'zustand';
|
||||
|
||||
type ChatState = {
|
||||
messages: ChatMessage[];
|
||||
addMessage: (message: ChatMessage) => void;
|
||||
};
|
||||
|
||||
export const useChatStore = create<ChatState>((set) => ({
|
||||
messages: [],
|
||||
addMessage: (message) => set((state) => ({ messages: [...state.messages, message] })),
|
||||
}));
|
||||
```
|
||||
|
||||
## 4. 创建页面与组件
|
||||
|
||||
在 `src/app/<new-page>/features/<new-feature>.tsx` 中,我们需要创建一个新的页面或组件来显示 "会话消息"。在这个文件中,我们可以使用上面创建的 Zustand Store,以及 Ant Design 的组件来构建 UI:
|
||||
|
||||
```jsx
|
||||
// src/features/chat/index.tsx
|
||||
import { List, Typography } from 'antd';
|
||||
import { useChatStore } from 'src/store/chatStore';
|
||||
|
||||
const ChatPage = () => {
|
||||
const messages = useChatStore((state) => state.messages);
|
||||
|
||||
return (
|
||||
<List
|
||||
dataSource={messages}
|
||||
renderItem={(message) => (
|
||||
<List.Item>
|
||||
<Typography.Text>{message.content}</Typography.Text>
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default ChatPage;
|
||||
```
|
||||
|
||||
## 5. 功能绑定
|
||||
|
||||
在页面或组件中,我们需要将 Zustand Store 的状态和方法绑定到 UI 上。在上面的示例中,我们已经将 `messages` 状态绑定到了列表的 `dataSource` 属性上。现在,我们还需要一个方法来添加新的消息。我们可以在 Zustand Store 中定义这个方法,然后在页面或组件中使用它:
|
||||
|
||||
```jsx
|
||||
import { Button } from 'antd';
|
||||
|
||||
const ChatPage = () => {
|
||||
const messages = useChatStore((state) => state.messages);
|
||||
const addMessage = useChatStore((state) => state.addMessage);
|
||||
|
||||
const handleSend = () => {
|
||||
addMessage({ id: '1', content: 'Hello, world!', timestamp: Date.now(), sender: 'user' });
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<List
|
||||
dataSource={messages}
|
||||
renderItem={(message) => (
|
||||
<List.Item>
|
||||
<Typography.Text>{message.content}</Typography.Text>
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
<Button onClick={handleSend}>Send</Button>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default ChatPage;
|
||||
```
|
||||
|
||||
以上就是在 LobeChat 中实现 "会话消息" 功能的步骤。当然,在 LobeChat 的实际开发中,真实场景所面临的业务诉求和场景远比上述 demo 复杂,请根据实际情况进行开发。
|
||||
@@ -0,0 +1,40 @@
|
||||
# 目录架构
|
||||
|
||||
LobeChat 的文件夹目录架构如下:
|
||||
|
||||
```bash
|
||||
src
|
||||
├── app # 应用主要逻辑和状态管理相关的代码
|
||||
├── components # 可复用的 UI 组件
|
||||
├── config # 应用的配置文件,包含客户端环境变量与服务端环境变量
|
||||
├── const # 用于定义常量,如 action 类型、路由名等
|
||||
├── features # 与业务功能相关的功能模块,如 Agent 设置、插件开发弹窗等
|
||||
├── hooks # 全应用复用自定义的工具 Hooks
|
||||
├── layout # 应用的布局组件,如导航栏、侧边栏等
|
||||
├── locales # 国际化的语言文件
|
||||
├── services # 封装的后端服务接口,如 HTTP 请求
|
||||
├── store # 用于状态管理的 zustand store
|
||||
├── types # TypeScript 的类型定义文件
|
||||
└── utils # 通用的工具函数
|
||||
```
|
||||
|
||||
## app
|
||||
|
||||
在 `app` 文件夹中,我们将每个路由页面按照 app router 的 [Route Groups](https://nextjs.org/docs/app/building-your-application/routing/route-groups) 进行组织,以此来分别处理桌面端和移动端的代码实现。以 `welcome` 页面的文件结构为例:
|
||||
|
||||
```bash
|
||||
welcome
|
||||
├── (desktop) # 桌面端实现
|
||||
│ ├── features # 桌面端特有的功能
|
||||
│ ├── index.tsx # 桌面端的主入口文件
|
||||
│ └── layout.desktop.tsx # 桌面端的布局组件
|
||||
├── (mobile) # 移动端实现
|
||||
│ ├── features # 移动端特有的功能
|
||||
│ ├── index.tsx # 移动端的主入口文件
|
||||
│ └── layout.mobile.tsx # 移动端的布局组件
|
||||
├── features # 此文件夹包含双端共享的特性代码,如 Banner 组件
|
||||
│ └── Banner
|
||||
└── page.tsx # 此为页面的主入口文件,用于根据设备类型选择加载桌面端或移动端的代码
|
||||
```
|
||||
|
||||
通过这种方式,我们可以清晰地区分和管理桌面端和移动端的代码,同时也能方便地复用在两种设备上都需要的代码,从而提高开发效率并保持代码的整洁和可维护性。
|
||||
@@ -0,0 +1,19 @@
|
||||
# 资源与参考
|
||||
|
||||
LobeChat 的设计和开发离不开社区和生态中的优秀项目。我们在设计和开发过程中使用或参考了一些优秀的资源和指南。以下是一些主要的参考资源,供开发者在开发和学习过程中参考:
|
||||
|
||||
1. **OpenAI API 指南**:我们使用 OpenAI 的 API 来获取和处理 AI 的会话数据。你可以查看 [OpenAI API 指南](https://platform.openai.com/docs/api-reference/introduction) 了解更多详情。
|
||||
|
||||
2. **OpenAI SDK**:我们使用 OpenAI 的 Node.js SDK 来与 OpenAI 的 API 交互。你可以在 [OpenAI SDK](https://github.com/openai/openai-node) 的 GitHub 仓库中查看源码和文档。
|
||||
|
||||
3. **AI SDK**:我们使用 Vercel 的 AI SDK 来获取和处理 AI 的会话数据。你可以查看 [AI SDK](https://sdk.vercel.ai/docs) 的文档来了解更多详情。
|
||||
|
||||
4. **LangChain**:我们早期的会话功能是基于 LangChain 实现的。你可以访问 [LangChain](https://langchain.com) 来了解更多关于它的信息。
|
||||
|
||||
5. **Chat-Next-Web**:Chat Next Web 是一个优秀的项目,LobeChat 的部分功能、Workflow 等参考了它的实现。你可以在 [Chat-Next-Web](https://github.com/Yidadaa/ChatGPT-Next-Web) 的 GitHub 仓库中查看源码和文档。
|
||||
|
||||
6. **Next.js 文档**:我们的项目是基于 Next.js 构建的,你可以查看 [Next.js 文档](https://nextjs.org/docs) 来了解更多关于 Next.js 的信息。
|
||||
|
||||
7. **FlowGPT**:FlowGPT 是目前全球最大的 Prompt 社区,LobeChat 中的一些 Agent 来自 FlowGPT 的活跃作者。你可以访问 [FlowGPT](https://flowgpt.com/) 来了解更多关于它的信息。
|
||||
|
||||
我们会持续更新和补充这个列表,为开发者提供更多的参考资源。
|
||||
@@ -0,0 +1,62 @@
|
||||
# LobeChat 环境设置指南
|
||||
|
||||
欢迎阅读 LobeChat 的开发环境设置指南。
|
||||
|
||||
## 在线开发
|
||||
|
||||
如果你有 GitHub Codespaces 的使用权限,可以点击下方按钮一键进入在线开发环境:
|
||||
|
||||
[![][codespaces-shield]][codespaces-link]
|
||||
|
||||
## 本地开发
|
||||
|
||||
在开始开发 LobeChat 之前,你需要在本地环境中安装和配置一些必要的软件和工具。本文档将指导你完成这些步骤。
|
||||
|
||||
### 开发环境需求
|
||||
|
||||
首先,你需要安装以下软件:
|
||||
|
||||
- Node.js:LobeChat 是基于 Node.js 构建的,因此你需要安装 Node.js。我们建议安装最新的稳定版。
|
||||
- Bun:我们使用 Bun 作为首选包管理器。你可以从 Bun 的官方网站上下载并安装。
|
||||
- PNPM:我们使用 PNPM 作为辅助包管理器。你可以从 pnpm 的官方网站上下载并安装。
|
||||
- Git:我们使用 Git 进行版本控制。你可以从 Git 的官方网站上下载并安装。
|
||||
- IDE:你可以选择你喜欢的集成开发环境(IDE)。我们推荐使用 WebStorm,它是一款功能强大的 IDE,特别适合 TypeScript 开发。
|
||||
|
||||
### 项目设置
|
||||
|
||||
完成上述软件的安装后,你可以开始设置 LobeChat 项目了。
|
||||
|
||||
1. **获取代码**:首先,你需要从 GitHub 上克隆 LobeChat 的代码库。在终端中运行以下命令:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/lobehub/lobe-chat.git
|
||||
```
|
||||
|
||||
2. **安装依赖**:然后,进入项目目录,并使用 bun 安装项目的依赖包:
|
||||
|
||||
```bash
|
||||
cd lobe-chat
|
||||
bun i
|
||||
```
|
||||
|
||||
如果你使用 pnpm ,可以执行:
|
||||
|
||||
```bash
|
||||
cd lobe-chat
|
||||
pnpm i
|
||||
```
|
||||
|
||||
3. **启动开发服务器**:安装完依赖后,你可以启动开发服务器:
|
||||
|
||||
```bash
|
||||
bun run dev
|
||||
```
|
||||
|
||||
现在,你可以在浏览器中打开 `http://localhost:3010`,你应该能看到 LobeChat 的欢迎页面。这表明你已经成功地设置了开发环境。
|
||||
|
||||

|
||||
|
||||
在开发过程中,如果你在环境设置上遇到任何问题,或者有任何关于 LobeChat 开发的问题,欢迎随时向我们提问。我们期待看到你的贡献!
|
||||
|
||||
[codespaces-link]: https://codespaces.new/lobehub/lobe-chat
|
||||
[codespaces-shield]: https://github.com/codespaces/badge.svg
|
||||
@@ -0,0 +1,79 @@
|
||||
# LobeChat 测试指南
|
||||
|
||||
LobeChat 的测试策略包括单元测试和端到端 (E2E) 测试。下面是每种测试的详细说明:
|
||||
|
||||
## 单元测试
|
||||
|
||||
单元测试用于测试应用中的独立单元(如组件、函数、工具函数等)的功能。我们使用 [vitest][vitest-url] 进行单元测试。
|
||||
|
||||
要运行单元测试,可以使用以下命令:
|
||||
|
||||
```
|
||||
npm run test
|
||||
```
|
||||
|
||||
这将运行所有的单元测试,并生成测试报告。
|
||||
|
||||
我们鼓励开发者在编写代码时,同时编写对应的单元测试,以确保代码的质量和稳定性。
|
||||
|
||||
## 🚧 端到端测试
|
||||
|
||||
端到端测试用于测试应用在真实环境中的功能和性能。它模拟用户的真实操作,并验证应用在不同场景下的表现。
|
||||
|
||||
在 LobeChat 中,目前暂时没有集成端到端测试,我们会在后续迭代中逐步引入端到端测试。
|
||||
|
||||
## 开发测试
|
||||
|
||||
### 1. 单元测试
|
||||
|
||||
单元测试是针对应用中的最小可测试单元进行的测试,通常是针对函数、组件或模块进行的测试。在 LobeChat 中,我们使用 [vitest][vitest-url] 进行单元测试。
|
||||
|
||||
#### 编写测试用例
|
||||
|
||||
在编写单元测试之前,您需要创建一个与被测试文件相同的目录,并将测试文件命名为 `<filename>.test.ts`。例如,如果要测试 `src/utils/formatDate.ts` 文件,测试文件应命名为 `src/utils/formatDate.test.ts`。
|
||||
|
||||
在测试文件中,您可以使用 `describe` 和 `it` 函数来组织和编写测试用例。`describe` 函数用于创建测试套件,`it` 函数用于编写具体的测试用例。
|
||||
|
||||
```typescript
|
||||
import { formatNumber } from './formatNumber';
|
||||
|
||||
describe('formatNumber', () => {
|
||||
it('should format number with comma separator', () => {
|
||||
const result = formatNumber(1000);
|
||||
expect(result).toBe('1,000');
|
||||
});
|
||||
|
||||
it('should return the same number if it is less than 1000', () => {
|
||||
const result = formatNumber(500);
|
||||
expect(result).toBe('500');
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
在测试用例中,您可以使用 `expect` 函数来断言测试结果是否符合预期。`expect` 函数可以与各种匹配器(matchers)一起使用,例如 `toBe`、`toEqual`、`toBeTruthy` 等。
|
||||
|
||||
#### 运行单元测试
|
||||
|
||||
通过运行以下命令来执行单元测试:
|
||||
|
||||
```
|
||||
npm run test
|
||||
```
|
||||
|
||||
这将运行所有的单元测试,并输出测试结果。
|
||||
|
||||
## 测试策略
|
||||
|
||||
为了编写有效的测试用例,您可以考虑以下测试策略:
|
||||
|
||||
- **边界条件测试**:测试输入的边界条件,例如最小值、最大值、空值等。
|
||||
- **异常情况测试**:测试处理异常情况的代码,例如错误处理、异常情况下的回退等。
|
||||
- **功能测试**:测试应用的各个功能模块是否正常工作,包括用户交互、数据处理等。
|
||||
- **兼容性测试**:测试应用在不同浏览器和设备上的兼容性。
|
||||
- **性能测试**:测试应用在不同负载下的性能表现,例如响应时间、资源占用等。
|
||||
|
||||
同时,请确保您的测试用例具有良好的覆盖率,覆盖到应用中的关键代码和功能。
|
||||
|
||||
通过合理编写和执行单元测试、集成测试和端到端测试,您可以提高应用的质量和稳定性,并及时发现和修复潜在的问题。
|
||||
|
||||
[vitest-url]: https://vitest.dev/
|
||||
@@ -0,0 +1,38 @@
|
||||
# LobeChat 技术开发上手指南
|
||||
|
||||
欢迎来到 LobeChat 技术开发上手指南。LobeChat 是一款基于 Next.js 框架构建的 AI 会话应用,它汇集了一系列的技术栈,以实现多样化的功能和特性。本指南将详细介绍 LobeChat 的主要技术组成,以及如何在你的开发环境中配置和使用这些技术。
|
||||
|
||||
## 基础技术栈
|
||||
|
||||
LobeChat 的核心技术栈如下:
|
||||
|
||||
- **框架**:我们选择了 [Next.js](https://nextjs.org/),这是一款强大的 React 框架,为我们的项目提供了服务端渲染、路由框架、Router Handler 等关键功能。
|
||||
- **组件库**:我们使用了 [Ant Design (antd)](https://ant.design/) 作为基础组件库,同时引入了 [lobe-ui](https://github.com/lobehub/lobe-ui) 作为我们的业务组件库。
|
||||
- **状态管理**:我们选用了 [zustand](https://github.com/pmndrs/zustand),一款轻量级且易于使用的状态管理库。
|
||||
- **网络请求**:我们采用 [swr](https://swr.vercel.app/),这是一款用于数据获取的 React Hooks 库。
|
||||
- **路由**:路由管理我们直接使用 [Next.js](https://nextjs.org/) 自身提供的解决方案。
|
||||
- **国际化**:我们使用 [i18next](https://www.i18next.com/) 来实现应用的多语言支持。
|
||||
- **样式**:我们使用 [antd-style](https://github.com/ant-design/antd-style),这是一款与 Ant Design 配套的 CSS-in-JS 库。
|
||||
- **单元测试**:我们使用 [vitest](https://github.com/vitejs/vitest) 进行单元测试。
|
||||
|
||||
## 文件夹目录架构
|
||||
|
||||
LobeChat 的文件夹目录架构如下:
|
||||
|
||||
```bash
|
||||
src
|
||||
├── app # 应用主要逻辑和状态管理相关的代码
|
||||
├── components # 可复用的 UI 组件
|
||||
├── config # 应用的配置文件,包含客户端环境变量与服务端环境变量
|
||||
├── const # 用于定义常量,如 action 类型、路由名等
|
||||
├── features # 与业务功能相关的功能模块,如 Agent 设置、插件开发弹窗等
|
||||
├── hooks # 全应用复用自定义的工具 Hooks
|
||||
├── layout # 应用的布局组件,如导航栏、侧边栏等
|
||||
├── locales # 国际化的语言文件
|
||||
├── services # 封装的后端服务接口,如 HTTP 请求
|
||||
├── store # 用于状态管理的 zustand store
|
||||
├── types # TypeScript 的类型定义文件
|
||||
└── utils # 通用的工具函数
|
||||
```
|
||||
|
||||
有关目录架构的详细介绍,详见: [文件夹目录架构](Folder-Structure.zh-CN.md)
|
||||
@@ -0,0 +1,87 @@
|
||||
# Docker Deployment Guide
|
||||
|
||||
[![][docker-release-shield]][docker-release-link]
|
||||
[![][docker-size-shield]][docker-size-link]
|
||||
[![][docker-pulls-shield]][docker-pulls-link]
|
||||
|
||||
We provide [Docker Images][docker-release-link] for you to deploy LobeChat service on your private device.
|
||||
|
||||
## Install Docker container environment
|
||||
|
||||
If already installed, skip this step.
|
||||
|
||||
**Ubuntu:**
|
||||
|
||||
```fish
|
||||
$ apt install docker.io
|
||||
```
|
||||
|
||||
**CentOS:**
|
||||
|
||||
```fish
|
||||
$ yum install docker
|
||||
```
|
||||
|
||||
## Deploy container image
|
||||
|
||||
### `A` Command deployment (recommended)
|
||||
|
||||
Use the following command to start LobeChat service with one click:
|
||||
|
||||
```fish
|
||||
$ docker run -d -p 3210:3210 \
|
||||
-e OPENAI_API_KEY=sk-xxxx \
|
||||
-e ACCESS_CODE=lobe66 \
|
||||
lobehub/lobe-chat
|
||||
```
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> - The default mapped port is `3210`. Make sure it is not occupied or manually change the port mapping.
|
||||
> - Replace `sk-xxxx` in the above command with your own OpenAI API Key.
|
||||
> - The password set in the official Docker image is `lobe66` by default. Replace it with your own password to improve security.
|
||||
> - For a complete list of environment variables supported by LobeChat, please refer to the [Environment Variables](https://github.com/lobehub/lobe-chat/wiki/Environment-Variable.zh-CN) section.
|
||||
|
||||
#### Use a proxy address
|
||||
|
||||
If you need to use OpenAI service through a proxy, you can use the `OPENAI_PROXY_URL` environment variable to configure the proxy address:
|
||||
|
||||
```fish
|
||||
$ docker run -d -p 3210:3210 \
|
||||
-e OPENAI_API_KEY=sk-xxxx \
|
||||
-e OPENAI_PROXY_URL=https://api-proxy.com/v1 \
|
||||
-e ACCESS_CODE=lobe66 \
|
||||
lobehub/lobe-chat
|
||||
```
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> As the official Docker image build takes about half an hour, if there is a "update available" prompt after updating deployment, wait for the image to finish building before deploying again.
|
||||
|
||||
### `B` Docker Compose
|
||||
|
||||
The configuration file for using `docker-compose` is as follows:
|
||||
|
||||
```yml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
lobe-chat:
|
||||
image: lobehub/lobe-chat
|
||||
container_name: lobe-chat
|
||||
ports:
|
||||
- '3210:3210'
|
||||
environment:
|
||||
OPENAI_API_KEY: sk-xxxx
|
||||
OPENAI_PROXY_URL: https://api-proxy.com/v1
|
||||
ACCESS_CODE: lobe66
|
||||
```
|
||||
|
||||
<!-- LINK GROUP -->
|
||||
|
||||
[docker-pulls-link]: https://hub.docker.com/r/lobehub/lobe-chat
|
||||
[docker-pulls-shield]: https://img.shields.io/docker/pulls/lobehub/lobe-chat?color=45cc11&labelColor=black&style=flat-square
|
||||
[docker-release-link]: https://hub.docker.com/r/lobehub/lobe-chat
|
||||
[docker-release-shield]: https://img.shields.io/docker/v/lobehub/lobe-chat?color=369eff&label=docker&labelColor=black&logo=docker&logoColor=white&style=flat-square
|
||||
[docker-size-link]: https://hub.docker.com/r/lobehub/lobe-chat
|
||||
[docker-size-shield]: https://img.shields.io/docker/image-size/lobehub/lobe-chat?color=369eff&labelColor=black&style=flat-square
|
||||
@@ -0,0 +1,85 @@
|
||||
# Docker 部署指引
|
||||
|
||||
[![][docker-release-shield]][docker-release-link]
|
||||
[![][docker-size-shield]][docker-size-link]
|
||||
[![][docker-pulls-shield]][docker-pulls-link]
|
||||
|
||||
我们提供了 [Docker 镜像][docker-release-link],供你在自己的私有设备上部署 LobeChat 服务
|
||||
|
||||
## 安装 Docker 容器环境
|
||||
|
||||
如果已安装,请跳过此步
|
||||
|
||||
**Ubuntu**
|
||||
|
||||
```fish
|
||||
$ apt install docker.io
|
||||
```
|
||||
|
||||
**CentOS**
|
||||
|
||||
```fish
|
||||
$ yum install docker
|
||||
```
|
||||
|
||||
## 部署容器镜像
|
||||
|
||||
### `A` 指令部署(推荐)
|
||||
|
||||
使用以下命令即可使用一键启动 LobeChat 服务:
|
||||
|
||||
```fish
|
||||
$ docker run -d -p 3210:3210 \
|
||||
-e OPENAI_API_KEY=sk-xxxx \
|
||||
-e ACCESS_CODE=lobe66 \
|
||||
lobehub/lobe-chat
|
||||
```
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> - 默认映射端口为 `3210`, 请确保未被占用或手动更改端口映射
|
||||
> - 使用你的 OpenAI API Key 替换上述命令中的 `sk-xxxx`
|
||||
> - 官方 Docker 镜像中设定的密码默认为 `lobe66`,请将其替换为自己的密码以提升安全性
|
||||
> - LobeChat 支持的完整环境变量列表请参考 [环境变量](https://github.com/lobehub/lobe-chat/wiki/Environment-Variable.zh-CN) 部分
|
||||
|
||||
#### 使用代理地址
|
||||
|
||||
如果你需要通过代理使用 OpenAI 服务,你可以使用 `OPENAI_PROXY_URL` 环境变量来配置代理地址:
|
||||
|
||||
```fish
|
||||
$ docker run -d -p 3210:3210 \
|
||||
-e OPENAI_API_KEY=sk-xxxx \
|
||||
-e OPENAI_PROXY_URL=https://api-proxy.com/v1 \
|
||||
-e ACCESS_CODE=lobe66 \
|
||||
lobehub/lobe-chat
|
||||
```
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 由于官方的 Docker 镜像构建大约需要半小时左右,如果在更新部署后会出现「存在更新」的提示,可以等待镜像构建完成后再次部署。
|
||||
|
||||
### `B` Docker Compose
|
||||
|
||||
使用 `docker-compose` 时配置文件如下:
|
||||
|
||||
```yml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
lobe-chat:
|
||||
image: lobehub/lobe-chat
|
||||
container_name: lobe-chat
|
||||
ports:
|
||||
- '3210:3210'
|
||||
environment:
|
||||
OPENAI_API_KEY: sk-xxxx
|
||||
OPENAI_PROXY_URL: https://api-proxy.com/v1
|
||||
ACCESS_CODE: lobe66
|
||||
```
|
||||
|
||||
[docker-pulls-link]: https://hub.docker.com/r/lobehub/lobe-chat
|
||||
[docker-pulls-shield]: https://img.shields.io/docker/pulls/lobehub/lobe-chat?color=45cc11&labelColor=black&style=flat-square
|
||||
[docker-release-link]: https://hub.docker.com/r/lobehub/lobe-chat
|
||||
[docker-release-shield]: https://img.shields.io/docker/v/lobehub/lobe-chat?color=369eff&label=docker&labelColor=black&logo=docker&logoColor=white&style=flat-square
|
||||
[docker-size-link]: https://hub.docker.com/r/lobehub/lobe-chat
|
||||
[docker-size-shield]: https://img.shields.io/docker/image-size/lobehub/lobe-chat?color=369eff&labelColor=black&style=flat-square
|
||||
@@ -6,6 +6,7 @@ LobeChat provides additional configuration options during deployment, which can
|
||||
|
||||
- [General Variables](#general-variables)
|
||||
- [`ACCESS_CODE`](#access_code)
|
||||
- [`NEXT_PUBLIC_CUSTOM_MODELS`](#next_public_custom_models)
|
||||
- [OpenAI](#openai)
|
||||
- [`OPENAI_API_KEY`](#openai_api_key)
|
||||
- [`OPENAI_PROXY_URL`](#openai_proxy_url)
|
||||
@@ -18,6 +19,7 @@ LobeChat provides additional configuration options during deployment, which can
|
||||
- [Agent Service](#agent-service)
|
||||
- [`AGENTS_INDEX_URL`](#agents_index_url)
|
||||
- [Data Analytics](#data-analytics)
|
||||
- [Vercel Analytics](#vercel-analytics)
|
||||
- [Posthog Analytics](#posthog-analytics)
|
||||
|
||||
## General Variables
|
||||
@@ -26,10 +28,15 @@ LobeChat provides additional configuration options during deployment, which can
|
||||
|
||||
- Type: Optional
|
||||
- Description: Add a password to access the LobeChat service, the password should be 6 digits or letters
|
||||
- Default: -
|
||||
- Default: `-`
|
||||
- Example: `awCT74` or `e3@09!`
|
||||
|
||||
<br/>
|
||||
### `NEXT_PUBLIC_CUSTOM_MODELS`
|
||||
|
||||
- Type: Optional
|
||||
- Description: add your custom model name, multi model seperate by comma. for example: `gpt-3.5-1106,gpt-4-1106`
|
||||
- Default: `-`
|
||||
- Example: `model1,model2,model3`
|
||||
|
||||
## OpenAI
|
||||
|
||||
@@ -37,7 +44,7 @@ LobeChat provides additional configuration options during deployment, which can
|
||||
|
||||
- Type: Required
|
||||
- Description: This is the API key you apply for on the OpenAI account page, you can go [here][openai-api-page] to view
|
||||
- Default: -
|
||||
- Default: `-`
|
||||
- Example: `sk-xxxxxx...xxxxxx`
|
||||
|
||||
### `OPENAI_PROXY_URL`
|
||||
@@ -57,14 +64,14 @@ If you need to use Azure OpenAI to provide model services, you can refer to the
|
||||
|
||||
- Type: Optional
|
||||
- Description: Set this value to `1` to enable Azure OpenAI configuration
|
||||
- Default: -
|
||||
- Default: `-`
|
||||
- Example: `1`
|
||||
|
||||
### `AZURE_API_KEY`
|
||||
|
||||
- Type: Optional
|
||||
- Description: This is the API key you apply for on the Azure OpenAI account page
|
||||
- Default: -
|
||||
- Default: `-`
|
||||
- Example: `c55168be3874490ef0565d9779ecd5a6`
|
||||
|
||||
### `AZURE_API_VERSION`
|
||||
@@ -98,13 +105,29 @@ If you need to use Azure OpenAI to provide model services, you can refer to the
|
||||
|
||||
## Data Analytics
|
||||
|
||||
### Vercel Analytics
|
||||
|
||||
#### `NEXT_PUBLIC_ANALYTICS_VERCEL`
|
||||
|
||||
- Type: Optional
|
||||
- Description: Environment variable to enable [Vercel Analytics][vercel-analytics-url]. Set to `1` to enable Vercel Analytics.
|
||||
- Default: `-`
|
||||
- Example: `1`
|
||||
|
||||
#### `NEXT_PUBLIC_VERCEL_DEBUG`
|
||||
|
||||
- Type: Optional
|
||||
- Description: Enable debug mode for Vercel Analytics.
|
||||
- Default: `-`
|
||||
- Example: `1`
|
||||
|
||||
### Posthog Analytics
|
||||
|
||||
#### `NEXT_PUBLIC_ANALYTICS_POSTHOG`
|
||||
|
||||
- Type: Optional
|
||||
- Description: Environment variable to enable \[PostHog Analytics]\[posthog-analytics-url]. Set to `1` to enable PostHog Analytics.
|
||||
- Default: -
|
||||
- Description: Environment variable to enable [PostHog Analytics][posthog-analytics-url]. Set to `1` to enable PostHog Analytics.
|
||||
- Default: `-`
|
||||
- Example: `1`
|
||||
|
||||
#### `NEXT_PUBLIC_POSTHOG_KEY`
|
||||
@@ -130,3 +153,5 @@ If you need to use Azure OpenAI to provide model services, you can refer to the
|
||||
|
||||
[azure-api-verion-url]: https://docs.microsoft.com/zh-cn/azure/developer/javascript/api-reference/es-modules/azure-sdk/ai-translation/translationconfiguration?view=azure-node-latest#api-version
|
||||
[openai-api-page]: https://platform.openai.com/account/api-keys
|
||||
[posthog-analytics-url]: https://posthog.com
|
||||
[vercel-analytics-url]: https://vercel.com/analytics
|
||||
|
||||
@@ -6,6 +6,7 @@ LobeChat 在部署时提供了一些额外的配置项,使用环境变量进
|
||||
|
||||
- [通用变量](#通用变量)
|
||||
- [`ACCESS_CODE`](#access_code)
|
||||
- [`NEXT_PUBLIC_CUSTOM_MODELS`](#next_public_custom_models)
|
||||
- [OpenAI](#openai)
|
||||
- [`OPENAI_API_KEY`](#openai_api_key)
|
||||
- [`OPENAI_PROXY_URL`](#openai_proxy_url)
|
||||
@@ -19,7 +20,6 @@ LobeChat 在部署时提供了一些额外的配置项,使用环境变量进
|
||||
- [`AGENTS_INDEX_URL`](#agents_index_url)
|
||||
- [数据统计](#数据统计)
|
||||
- [Vercel Analytics](#vercel-analytics)
|
||||
- [Mixpanel Analytics](#mixpanel-analytics)
|
||||
- [Posthog Analytics](#posthog-analytics)
|
||||
|
||||
## 通用变量
|
||||
@@ -31,7 +31,12 @@ LobeChat 在部署时提供了一些额外的配置项,使用环境变量进
|
||||
- 默认值:-
|
||||
- 示例:`awCT74` 或 `e3@09!`
|
||||
|
||||
<br/>
|
||||
### `NEXT_PUBLIC_CUSTOM_MODELS`
|
||||
|
||||
- 类型:可选
|
||||
- 描述:添加自定义模型名称,多个模型需要使用逗号 `,` 隔开。 比如: `gpt-3.5-1106,gpt-4-1106`
|
||||
- 默认值:`-`
|
||||
- 示例:`model1,model2,model3`
|
||||
|
||||
## OpenAI
|
||||
|
||||
@@ -76,8 +81,6 @@ LobeChat 在部署时提供了一些额外的配置项,使用环境变量进
|
||||
- 默认值:`2023-08-01-preview`
|
||||
- 示例:`2023-05-15`,查阅[最新版本][azure-api-verion-url]
|
||||
|
||||
<br/>
|
||||
|
||||
## 插件服务
|
||||
|
||||
### `PLUGINS_INDEX_URL`
|
||||
@@ -86,8 +89,6 @@ LobeChat 在部署时提供了一些额外的配置项,使用环境变量进
|
||||
- 描述:LobeChat 插件市场的索引地址,如果你自行部署了插件市场的服务,可以使用该变量来覆盖默认的插件市场地址
|
||||
- 默认值:`https://chat-plugins.lobehub.com`
|
||||
|
||||
<br/>
|
||||
|
||||
## 角色服务
|
||||
|
||||
### `AGENTS_INDEX_URL`
|
||||
@@ -103,38 +104,15 @@ LobeChat 在部署时提供了一些额外的配置项,使用环境变量进
|
||||
#### `NEXT_PUBLIC_ANALYTICS_VERCEL`
|
||||
|
||||
- 类型:可选
|
||||
- 描述:用于配置 Vercel Analytics 的环境变量,当设为 `0` 则关闭 Vercel Analytics
|
||||
- 默认值: -
|
||||
- 示例:`0`
|
||||
- 描述:用于配置 Vercel Analytics 的环境变量,当设为 `1` 时开启 Vercel Analytics
|
||||
- 默认值: `-`
|
||||
- 示例:`1`
|
||||
|
||||
#### `NEXT_PUBLIC_VERCEL_DEBUG`
|
||||
|
||||
- 类型:可选
|
||||
- 描述:用于开启 Vercel Analytics 的调试模式
|
||||
- 默认值: -
|
||||
- 示例:`1`
|
||||
|
||||
### Mixpanel Analytics
|
||||
|
||||
#### `NEXT_PUBLIC_ANALYTICS_MIXPANEL`
|
||||
|
||||
- 类型:可选
|
||||
- 描述:用于开启 [Mixpanel Analytics][mixpanel-analytics-url] 的环境变量,设为 `1` 时开启 Mixpanel Analytics
|
||||
- 默认值: -
|
||||
- 示例:`1`
|
||||
|
||||
#### `NEXT_PUBLIC_MIXPANEL_PROJECT_TOKEN`
|
||||
|
||||
- 类型:可选
|
||||
- 描述:设置 Mixpanel 项目的识别 Token,可以在[这里][mixpanel-project-url]找到
|
||||
- 默认值: -
|
||||
- 示例:`60db2abae7fdd29961f4e8f91b074b3a`
|
||||
|
||||
#### `NEXT_PUBLIC_MIXPANEL_DEBUG`
|
||||
|
||||
- 类型:可选
|
||||
- 描述:开启 Mixpanel 的调试模式
|
||||
- 默认值: -
|
||||
- 默认值: `-`
|
||||
- 示例:`1`
|
||||
|
||||
### Posthog Analytics
|
||||
@@ -143,14 +121,14 @@ LobeChat 在部署时提供了一些额外的配置项,使用环境变量进
|
||||
|
||||
- 类型:可选
|
||||
- 描述:用于开启 [PostHog Analytics][posthog-analytics-url] 的环境变量,设为 `1` 时开启 PostHog Analytics
|
||||
- 默认值: -
|
||||
- 默认值: `-`
|
||||
- 示例:`1`
|
||||
|
||||
#### `NEXT_PUBLIC_POSTHOG_KEY`
|
||||
|
||||
- 类型:可选
|
||||
- 描述:设置 PostHog 项目 Key
|
||||
- 默认值: -
|
||||
- 默认值: `-`
|
||||
- 示例:`phc_xxxxxxxx`
|
||||
|
||||
#### `NEXT_PUBLIC_POSTHOG_HOST`
|
||||
@@ -164,11 +142,9 @@ LobeChat 在部署时提供了一些额外的配置项,使用环境变量进
|
||||
|
||||
- 类型:可选
|
||||
- 描述:开启 PostHog 的调试模式
|
||||
- 默认值: -
|
||||
- 默认值: `-`
|
||||
- 示例:`1`
|
||||
|
||||
[azure-api-verion-url]: https://docs.microsoft.com/zh-cn/azure/developer/javascript/api-reference/es-modules/azure-sdk/ai-translation/translationconfiguration?view=azure-node-latest#api-version
|
||||
[mixpanel-analytics-url]: https://mixpanel.com
|
||||
[mixpanel-project-url]: https://mixpanel.com/settings/project
|
||||
[openai-api-page]: https://platform.openai.com/account/api-keys
|
||||
[posthog-analytics-url]: https://posthog.com
|
||||
|
||||
+15
-1
@@ -12,11 +12,19 @@ LobeChat is a open-source, extensible ([Function Calling][fc-url]), high-perform
|
||||
|
||||

|
||||
|
||||
### 🤯 LobeChat
|
||||
### 🤯 LobeChat Usage
|
||||
|
||||
- [Custom Agents Guide](Usage-Agents) | [自定义助手指南](Usage-Agents.zh-CN)
|
||||
- [Topics Guide](Usage-Topics) | [话题指南](Usage-Topics.zh-CN)
|
||||
|
||||
---
|
||||
|
||||
#### 🛳 Self Hosting
|
||||
|
||||
- [Environment Variables](Environment-Variable) | [环境变量](Environment-Variable.zh-CN)
|
||||
- [Maintaining Updates with LobeChat Self-Deployment](Upstream-Sync) | [自部署保持更新](Upstream-Sync.zh-CN)
|
||||
- [Deploying with Azure OpenAI](Deploy-with-Azure-OpenAI) | [使用 Azure OpenAI 部署](Deploy-with-Azure-OpenAI.zh-CN)
|
||||
- [Docker Deployment Guide](Docker-Deployment) | [Docker 部署指引](Docker-Deployment.zh-CN)
|
||||
|
||||
---
|
||||
|
||||
@@ -34,6 +42,12 @@ LobeChat is a open-source, extensible ([Function Calling][fc-url]), high-perform
|
||||
|
||||
---
|
||||
|
||||
#### 📊 Other
|
||||
|
||||
- [Lighthouse Report](Lighthouse) | [性能测试](Lighthouse.zh-CN)
|
||||
|
||||
---
|
||||
|
||||
<details><summary><h4>📝 License</h4></summary>
|
||||
|
||||
[![][fossa-license-shield]][fossa-license-url]
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
# Lighthouse Reports
|
||||
|
||||
#### TOC
|
||||
|
||||
- [Welcome Page](#welcome-page)
|
||||
- [Chat Page](#chat-page)
|
||||
- [Market Page](#market-page)
|
||||
- [Settings Page](#settings-page)
|
||||
|
||||
## Welcome Page
|
||||
|
||||
> **Info**\
|
||||
> <https://chat-preview.lobehub.com/welcome>
|
||||
|
||||
| Desktop | Mobile |
|
||||
| :---------------------------------------------: | :--------------------------------------------: |
|
||||
| ![][welcome-desktop] | ![][welcome-mobile] |
|
||||
| [⚡️ Lighthouse Report][welcome-desktop-report] | [⚡️ Lighthouse Report][welcome-mobile-report] |
|
||||
|
||||
## Chat Page
|
||||
|
||||
> **Info**\
|
||||
> <https://chat-preview.lobehub.com/chat>
|
||||
|
||||
| Desktop | Mobile |
|
||||
| :------------------------------------------: | :-----------------------------------------: |
|
||||
| ![][chat-desktop] | ![][chat-mobile] |
|
||||
| [⚡️ Lighthouse Report][chat-desktop-report] | [⚡️ Lighthouse Report][chat-mobile-report] |
|
||||
|
||||
## Market Page
|
||||
|
||||
> **Info**\
|
||||
> <https://chat-preview.lobehub.com/market>
|
||||
|
||||
| Desktop | Mobile |
|
||||
| :--------------------------------------------: | :-------------------------------------------: |
|
||||
| ![][market-desktop] | ![][market-mobile] |
|
||||
| [⚡️ Lighthouse Report][market-desktop-report] | [⚡️ Lighthouse Report][market-mobile-report] |
|
||||
|
||||
## Settings Page
|
||||
|
||||
> **Info**\
|
||||
> <https://chat-preview.lobehub.com/settings>
|
||||
|
||||
| Desktop | Mobile |
|
||||
| :----------------------------------------------: | :---------------------------------------------: |
|
||||
| ![][settings-desktop] | ![][settings-mobile] |
|
||||
| [⚡️ Lighthouse Report][settings-desktop-report] | [⚡️ Lighthouse Report][settings-mobile-report] |
|
||||
|
||||
[chat-desktop]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/chat/desktop/pagespeed.svg
|
||||
[chat-desktop-report]: https://lobehub.github.io/lobe-chat/lighthouse/chat/desktop/chat_preview_lobehub_com_chat.html
|
||||
[chat-mobile]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/chat/mobile/pagespeed.svg
|
||||
[chat-mobile-report]: https://lobehub.github.io/lobe-chat/lighthouse/chat/mobile/chat_preview_lobehub_com_chat.html
|
||||
[market-desktop]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/market/desktop/pagespeed.svg
|
||||
[market-desktop-report]: https://lobehub.github.io/lobe-chat/lighthouse/market/desktop/chat_preview_lobehub_com_market.html
|
||||
[market-mobile]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/market/mobile/pagespeed.svg
|
||||
[market-mobile-report]: https://lobehub.github.io/lobe-chat/lighthouse/market/mobile/chat_preview_lobehub_com_market.html
|
||||
[settings-desktop]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/settings/desktop/pagespeed.svg
|
||||
[settings-desktop-report]: https://lobehub.github.io/lobe-chat/lighthouse/settings/desktop/chat_preview_lobehub_com_settings.html
|
||||
[settings-mobile]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/settings/mobile/pagespeed.svg
|
||||
[settings-mobile-report]: https://lobehub.github.io/lobe-chat/lighthouse/settings/mobile/chat_preview_lobehub_com_settings.html
|
||||
[welcome-desktop]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/welcome/desktop/pagespeed.svg
|
||||
[welcome-desktop-report]: https://lobehub.github.io/lobe-chat/lighthouse/welcome/desktop/chat_preview_lobehub_com_welcome.html
|
||||
[welcome-mobile]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/welcome/mobile/pagespeed.svg
|
||||
[welcome-mobile-report]: https://lobehub.github.io/lobe-chat/lighthouse/welcome/mobile/chat_preview_lobehub_com_welcome.html
|
||||
@@ -0,0 +1,65 @@
|
||||
# Lighthouse 测试报告
|
||||
|
||||
#### TOC
|
||||
|
||||
- [Welcome 欢迎页面](#welcome-欢迎页面)
|
||||
- [Chat 聊天页面](#chat-聊天页面)
|
||||
- [Market 市场页面](#market-市场页面)
|
||||
- [Settings 设置页面](#settings-设置页面)
|
||||
|
||||
## Welcome 欢迎页面
|
||||
|
||||
> **Info**\
|
||||
> <https://chat-preview.lobehub.com/welcome>
|
||||
|
||||
| Desktop | Mobile |
|
||||
| :---------------------------------------------: | :--------------------------------------------: |
|
||||
| ![][welcome-desktop] | ![][welcome-mobile] |
|
||||
| [⚡️ Lighthouse Report][welcome-desktop-report] | [⚡️ Lighthouse Report][welcome-mobile-report] |
|
||||
|
||||
## Chat 聊天页面
|
||||
|
||||
> **Info**\
|
||||
> <https://chat-preview.lobehub.com/chat>
|
||||
|
||||
| Desktop | Mobile |
|
||||
| :------------------------------------------: | :-----------------------------------------: |
|
||||
| ![][chat-desktop] | ![][chat-mobile] |
|
||||
| [⚡️ Lighthouse Report][chat-desktop-report] | [⚡️ Lighthouse Report][chat-mobile-report] |
|
||||
|
||||
## Market 市场页面
|
||||
|
||||
> **Info**\
|
||||
> <https://chat-preview.lobehub.com/market>
|
||||
|
||||
| Desktop | Mobile |
|
||||
| :--------------------------------------------: | :-------------------------------------------: |
|
||||
| ![][market-desktop] | ![][market-mobile] |
|
||||
| [⚡️ Lighthouse Report][market-desktop-report] | [⚡️ Lighthouse Report][market-mobile-report] |
|
||||
|
||||
## Settings 设置页面
|
||||
|
||||
> **Info**\
|
||||
> <https://chat-preview.lobehub.com/settings>
|
||||
|
||||
| Desktop | Mobile |
|
||||
| :----------------------------------------------: | :---------------------------------------------: |
|
||||
| ![][settings-desktop] | ![][settings-mobile] |
|
||||
| [⚡️ Lighthouse Report][settings-desktop-report] | [⚡️ Lighthouse Report][settings-mobile-report] |
|
||||
|
||||
[chat-desktop]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/chat/desktop/pagespeed.svg
|
||||
[chat-desktop-report]: https://lobehub.github.io/lobe-chat/lighthouse/chat/desktop/chat_preview_lobehub_com_chat.html
|
||||
[chat-mobile]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/chat/mobile/pagespeed.svg
|
||||
[chat-mobile-report]: https://lobehub.github.io/lobe-chat/lighthouse/chat/mobile/chat_preview_lobehub_com_chat.html
|
||||
[market-desktop]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/market/desktop/pagespeed.svg
|
||||
[market-desktop-report]: https://lobehub.github.io/lobe-chat/lighthouse/market/desktop/chat_preview_lobehub_com_market.html
|
||||
[market-mobile]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/market/mobile/pagespeed.svg
|
||||
[market-mobile-report]: https://lobehub.github.io/lobe-chat/lighthouse/market/mobile/chat_preview_lobehub_com_market.html
|
||||
[settings-desktop]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/settings/desktop/pagespeed.svg
|
||||
[settings-desktop-report]: https://lobehub.github.io/lobe-chat/lighthouse/settings/desktop/chat_preview_lobehub_com_settings.html
|
||||
[settings-mobile]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/settings/mobile/pagespeed.svg
|
||||
[settings-mobile-report]: https://lobehub.github.io/lobe-chat/lighthouse/settings/mobile/chat_preview_lobehub_com_settings.html
|
||||
[welcome-desktop]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/welcome/desktop/pagespeed.svg
|
||||
[welcome-desktop-report]: https://lobehub.github.io/lobe-chat/lighthouse/welcome/desktop/chat_preview_lobehub_com_welcome.html
|
||||
[welcome-mobile]: https://raw.githubusercontent.com/lobehub/lobe-chat/lighthouse/lighthouse/welcome/mobile/pagespeed.svg
|
||||
[welcome-mobile-report]: https://lobehub.github.io/lobe-chat/lighthouse/welcome/mobile/chat_preview_lobehub_com_welcome.html
|
||||
@@ -261,10 +261,10 @@ If you want more people to use your plugin, you are welcome to submit it for rev
|
||||
|
||||
### Plugin Shield
|
||||
|
||||
[](https://github.com/lobehub/lobe-chat-plugins)
|
||||
[](https://github.com/lobehub/lobe-chat-plugins)
|
||||
|
||||
```markdown
|
||||
[](https://github.com/lobehub/lobe-chat-plugins)
|
||||
[](https://github.com/lobehub/lobe-chat-plugins)
|
||||
```
|
||||
|
||||
<br/>
|
||||
@@ -283,5 +283,5 @@ If you want more people to use your plugin, you are welcome to submit it for rev
|
||||
[lobe-chat-plugin-template-url]: https://github.com/lobehub/chat-plugin-template
|
||||
[manifest-docs-url]: https://chat-plugin-sdk.lobehub.com/guides/plugin-manifest
|
||||
[plugin-error-type-url]: https://github.com/lobehub/chat-plugin-template
|
||||
[submit-plugin-shield]: https://img.shields.io/badge/🧩/🏪_submit_plugin-%E2%86%92-50E3C2?style=for-the-badge
|
||||
[submit-plugin-shield]: https://img.shields.io/badge/🧩/🏪_submit_plugin-%E2%86%92-95f3d9?labelColor=black&style=for-the-badge
|
||||
[submit-plugin-url]: https://github.com/lobehub/lobe-chat-plugins
|
||||
|
||||
@@ -260,10 +260,10 @@ export default Render;
|
||||
|
||||
### 插件 Shield
|
||||
|
||||
[](https://github.com/lobehub/lobe-chat-plugins)
|
||||
[](https://github.com/lobehub/lobe-chat-plugins)
|
||||
|
||||
```markdown
|
||||
[](https://github.com/lobehub/lobe-chat-plugins)
|
||||
[](https://github.com/lobehub/lobe-chat-plugins)
|
||||
```
|
||||
|
||||
<br/>
|
||||
@@ -282,5 +282,5 @@ export default Render;
|
||||
[lobe-chat-plugin-template-url]: https://github.com/lobehub/chat-plugin-template
|
||||
[manifest-docs-url]: https://chat-plugin-sdk.lobehub.com/guides/plugin-manifest
|
||||
[plugin-error-type-url]: https://github.com/lobehub/chat-plugin-template
|
||||
[submit-plugin-shield]: https://img.shields.io/badge/🧩/🏪_submit_plugin-%E2%86%92-50E3C2?style=for-the-badge
|
||||
[submit-plugin-shield]: https://img.shields.io/badge/🧩/🏪_submit_plugin-%E2%86%92-95f3d9?labelColor=black&style=for-the-badge
|
||||
[submit-plugin-url]: https://github.com/lobehub/lobe-chat-plugins
|
||||
|
||||
@@ -8,7 +8,8 @@ If you have deployed your own project following the one-click deployment steps i
|
||||
|
||||
## Enabling Automatic Updates
|
||||
|
||||
> **Note**\
|
||||
> \[!NOTE]
|
||||
>
|
||||
> If you encounter an error executing Upstream Sync, manually Sync Fork once
|
||||
|
||||
Once you have forked the project, due to Github restrictions, you will need to manually enable Workflows on the Actions page of your forked project and activate the Upstream Sync Action. Once enabled, you can set up hourly automatic updates.
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
|
||||
## 启动自动更新
|
||||
|
||||
> **Note**\
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 如果你在执行 `Upstream Sync` 时遇到错误,请手动执再行一次
|
||||
|
||||
当你 Fork 了项目后,由于 Github 的限制,你需要手动在你 Fork 的项目的 Actions 页面启用 Workflows,并启动 Upstream Sync Action。启用后,你可以设置每小时进行一次自动更新。
|
||||
|
||||
@@ -0,0 +1,201 @@
|
||||
# Custom Agents Guide
|
||||
|
||||
#### TOC
|
||||
|
||||
- [Adding Custom Agents](#adding-custom-agents)
|
||||
- [`A` Add through the Agent Marketplace](#a-add-through-the-agent-marketplace)
|
||||
- [`B` Create a Custom Agent](#b-create-a-custom-agent)
|
||||
- [Basic Concepts of Prompts](#basic-concepts-of-prompts)
|
||||
- [How to write a structured prompt](#how-to-write-a-structured-prompt)
|
||||
- [How to improve quality and effectiveness](#how-to-improve-quality-and-effectiveness)
|
||||
- [Model Concepts](#model-concepts)
|
||||
- [ChatGPT](#chatgpt)
|
||||
- [Model Parameter Concepts](#model-parameter-concepts)
|
||||
- [`temperature`](#temperature)
|
||||
- [`top_p`](#top_p)
|
||||
- [`presence_penalty`](#presence_penalty)
|
||||
- [`frequency_penalty`](#frequency_penalty)
|
||||
- [Further Reading](#further-reading)
|
||||
|
||||
## Adding Custom Agents
|
||||
|
||||
As the fundamental unit of LobeChat, adding and iterating on agents is crucial. Now you can add agents to your favorites list in two ways:
|
||||
|
||||
### `A` Add through the Agent Marketplace
|
||||
|
||||
If you're new to writing prompts, you might want to browse the Agent Marketplace in LobeChat. Here, you can find commonly used agents submitted by others and add them to your list with just one click, making it very convenient.
|
||||
|
||||

|
||||
|
||||
### `B` Create a Custom Agent
|
||||
|
||||
When you need to handle specific tasks, you'll want to consider creating a custom agent to help you solve the problem. You can add and configure the agent in detail using the following steps:
|
||||
|
||||

|
||||

|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> Quick setting tip: You can conveniently modify the prompt by using the quick edit button in the sidebar.
|
||||
|
||||

|
||||

|
||||
|
||||
Continue reading to understand the writing techniques and common model parameter settings for prompts.
|
||||
|
||||
<br/>
|
||||
|
||||
## Basic Concepts of Prompts
|
||||
|
||||
Generative AI is very useful, but it requires human guidance. In most cases, generative AI is like a capable intern who needs clear instructions to perform well. Being able to guide generative AI correctly is a powerful skill. You can guide generative AI by sending a prompt, which is typically a text instruction. The prompt is the input you provide to the agent, and it will influence the output. A good prompt should be structured, clear, concise, and directive.
|
||||
|
||||
### How to write a structured prompt
|
||||
|
||||
> \[!TIP]
|
||||
>
|
||||
> A structured prompt refers to the construction of the prompt having clear logic and structure. For example, if you want the model to generate an article, your prompt may need to include the topic of the article, its outline, and its style.
|
||||
|
||||
Let's look at a basic example of a discussion question:
|
||||
|
||||
> _"What are the most urgent environmental issues our planet faces, and what can individuals do to help address these problems?"_
|
||||
|
||||
We can turn this into a simple prompt by answering the following question upfront.
|
||||
|
||||
```
|
||||
Answer the following question:
|
||||
What are the most urgent environmental issues our planet faces, and what can individuals do to help address these problems?
|
||||
```
|
||||
|
||||
Since the results generated by this prompt are inconsistent, with some only consisting of one or two sentences, it is not ideal for a typical discussion answer that should have multiple paragraphs. A good prompt should provide specific formatting and content instructions. You need to eliminate ambiguity in the language to improve consistency and quality. Here's a better prompt:
|
||||
|
||||
```
|
||||
Write an in-depth essay that includes an introduction, body paragraphs, and a conclusion, answering the following question:
|
||||
What are the most urgent environmental issues our planet faces, and what can individuals do to help address these problems?
|
||||
```
|
||||
|
||||
The second prompt generates longer outputs with better structure. The use of the word "essay" in the prompt is intentional because agent can understand the definition of an essay, making it more likely to generate coherent and structured answers.
|
||||
|
||||
<br/>
|
||||
|
||||
### How to improve quality and effectiveness
|
||||
|
||||
> \[!TIP]
|
||||
>
|
||||
> There are several ways to improve the quality and effectiveness of prompts:
|
||||
>
|
||||
> - Be as clear as possible about your needs. The model will try to fulfill your requirements, so if your requirements are not clear, the output may not meet your expectations.
|
||||
> - Use correct grammar and spelling. The model will try to mimic your language style, so if your language style is problematic, the output may also be problematic.
|
||||
> - Provide sufficient contextual information. The model will generate output based on the contextual information you provide, so if you provide insufficient contextual information, it may not be able to generate the desired results.
|
||||
|
||||
After formulating effective prompts for discussion questions, you now need to refine the generated results. This may involve adjusting the output to fit constraints such as word count or combining concepts from different generated results.
|
||||
|
||||
A simple iteration method is to generate multiple outputs and examine them to understand the concepts and structure used by agent. Once the outputs have been evaluated, you can select the most suitable ones and combine them into a coherent answer. Another iterative approach is to start gradually and then expand step by step. This requires more than one prompt: an initial prompt for writing the first one or two paragraphs, followed by additional prompts to expand on the content already written. Here's a potential philosophical discussion prompt:
|
||||
|
||||
> _"Is mathematics invented or discovered? Explain your answer with careful reasoning."_
|
||||
|
||||
Add it to a simple prompt like this:
|
||||
|
||||
```
|
||||
Write an opening paragraph answering the following question:
|
||||
Is mathematics invented or discovered? Explain your answer with careful reasoning.
|
||||
```
|
||||
|
||||
I generated a few answers and found one that I liked:
|
||||
|
||||
```
|
||||
Philosophers and mathematicians have debated whether mathematics is invented or discovered.
|
||||
Some argue that the concepts and principles of mathematics exist independently of human thought, so they can be considered discovered rather than invented.
|
||||
For example, the concepts of numbers, ratios, and geometric shapes are observed in the natural world and can be abstracted and studied systematically.
|
||||
```
|
||||
|
||||
It's a good start. Then I used another prompt to expand:
|
||||
|
||||
```
|
||||
I'm writing a detailed essay answering the following prompt:
|
||||
Is mathematics invented or discovered? Explain your answer with careful reasoning. Here's where I'm at so far: Philosophers and mathematicians have debated whether mathematics is invented or discovered.
|
||||
Some argue that the concepts and principles of mathematics exist independently of human thought, so they can be considered discovered rather than invented.
|
||||
For example, the concepts of numbers, ratios, and geometric shapes are observed in the natural world and can be abstracted and studied systematically. Write the next paragraph of my essay.
|
||||
```
|
||||
|
||||
I used this prompt to generate several expansions and selected one that I liked, resulting in the following:
|
||||
|
||||
```
|
||||
Philosophers and mathematicians have debated whether mathematics is invented or discovered.
|
||||
Some argue that the concepts and principles of mathematics exist independently of human thought, so they can be considered discovered rather than invented.
|
||||
For example, the concepts of numbers, ratios, and geometric shapes are observed in the natural world and can be abstracted and studied systematically.
|
||||
On the other hand, some argue that mathematics is largely an invention of human thought.
|
||||
Mathematical principles are based on logical reasoning, which is a characteristic of human thought.
|
||||
For example, Euclidean geometry is based on abstract axioms and assumptions that are accepted as true without needing to be proven.
|
||||
Therefore, geometry can be seen as an invention of human thought rather than a discovery.
|
||||
Similarly, mathematical formulas and equations are used to model and predict physical phenomena, which are the result of human reasoning.
|
||||
```
|
||||
|
||||
Using expansion prompts, we can gradually write and iterate at each step. This is useful for situations where you need to generate higher-quality output and want to make incremental modifications.
|
||||
|
||||
<br/>
|
||||
|
||||
## Model Concepts
|
||||
|
||||
### ChatGPT
|
||||
|
||||
- **gpt-3.5-turbo**: The fastest generating chatgpt model currently available, but it may sacrifice some text quality. The context length is 4k.
|
||||
- **gpt-3.5-turbo-16k**: Same as gpt-4, but with an increased context limit of 16k tokens and a higher cost rate.
|
||||
- **gpt-4**: ChatGPT 4.0 has improved language understanding and generation capabilities compared to 3.5. It has a better understanding of context and can generate more accurate and natural responses. This is due to improvements in the GPT-4 model, including better language modeling and deeper semantic understanding, but it may be slower than other models. The context length is 8k.
|
||||
- **gpt-4-32k**: Same as gpt-4, but with an increased context limit of 32k tokens and a higher cost rate.
|
||||
|
||||
<br/>
|
||||
|
||||
## Model Parameter Concepts
|
||||
|
||||
LLM may seem magical, but it is essentially a probability problem. The neural network generates a set of candidate words from the pre-trained model based on the input text and selects the highest probability as the output. Most of the related parameters are about sampling (i.e., how to select the output from the candidate words).
|
||||
|
||||
### `temperature`
|
||||
|
||||
Controls the randomness of the model's output. Higher values increase randomness. In general, if you input the same prompt multiple times, the model's output will be different each time.
|
||||
|
||||
- Set to 0 for a fixed output for each prompt.
|
||||
- Lower values make the output more focused and deterministic.
|
||||
- Higher values make the output more random and creative.
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> Generally, the longer and clearer the prompt, the better the quality and confidence of the generated output. In this case, you can increase the temperature value. Conversely, if the prompt is short and ambiguous, setting a higher temperature value will make the model's output less stable.
|
||||
|
||||
<br/>
|
||||
|
||||
### `top_p`
|
||||
|
||||
Top-p nucleus sampling is another sampling parameter that is different from temperature. Before the model generates the output, it generates a set of tokens. In top-p sampling mode, the candidate word list is dynamic and selected from the tokens based on a percentage. Top-p introduces randomness to the selection of tokens, allowing other high-scoring tokens to have a chance of being selected instead of always choosing the highest-scoring one.
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> Top-p is similar to randomness. In general, it is not recommended to change it together with the randomness parameter, temperature.
|
||||
|
||||
<br/>
|
||||
|
||||
### `presence_penalty`
|
||||
|
||||
The presence penalty parameter can be seen as a punishment for repetitive content in the generated text. When this parameter is set high, the generative model will try to avoid generating repeated words, phrases, or sentences. Conversely, if the presence penalty parameter is low, the generated text may contain more repeated content. By adjusting the value of the presence penalty parameter, you can control the originality and diversity of the generated text. The importance of this parameter is mainly reflected in the following aspects:
|
||||
|
||||
- Increasing the originality and diversity of the generated text: In some application scenarios, such as creative writing or generating news headlines, it is desirable for the generated text to have high originality and diversity. By increasing the value of the presence penalty parameter, the probability of generating repeated content in the generated text can be effectively reduced, thereby improving its originality and diversity.
|
||||
- Preventing generation loops and meaningless content: In some cases, the generative model may produce repetitive and meaningless text that fails to convey useful information. By appropriately increasing the value of the presence penalty parameter, the probability of generating this type of meaningless content can be reduced, thereby improving the readability and usefulness of the generated text.
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> It is worth noting that the presence penalty parameter, along with other parameters such as temperature and top-p, collectively affect the quality of the generated text. Compared to other parameters, the presence penalty parameter focuses more on the originality and repetitiveness of the text, while the temperature and top-p parameters have a greater impact on the randomness and determinism of the generated text. By adjusting these parameters properly, comprehensive control of the quality of the generated text can be achieved.
|
||||
|
||||
<br/>
|
||||
|
||||
### `frequency_penalty`
|
||||
|
||||
Frequency penalty is a mechanism that penalizes frequent occurrences of new vocabulary in the generated text, reducing the likelihood of the model repeating the same words. The higher the value, the more likely it is to reduce repeated words.
|
||||
|
||||
- `-2.0` When the morning news starts playing, I noticed that my TV now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now _(The most frequent word is "now" with a percentage of 44.79%)_
|
||||
- `-1.0` He always watches the news in the morning, watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching watching _(The most frequent word is "watching" with a percentage of 57.69%)_
|
||||
- `0.0` When the morning sun shines into the small restaurant, a tired mailman appears at the door, holding a bag of mail in his hand. The owner warmly prepares breakfast for him, and he starts sorting the mail while enjoying his breakfast. **_(The most frequent word is "the" with a percentage of 8.45%)_**
|
||||
- `1.0` A deep sleep girl is awakened by a warm sunbeam. She sees the first ray of sunlight in the morning, surrounded by the sounds of birds and the fragrance of flowers, everything is full of vitality. _(The most frequent word is "the" with a percentage of 5.45%)_
|
||||
- `2.0` Every morning, he sits on the balcony to have breakfast. In the gentle sunset, everything looks very peaceful. However, one day, as he was about to pick up his breakfast, an optimistic little bird flew by, bringing him a good mood for the day. _(The most frequent word is "the" with a percentage of 4.94%)_
|
||||
|
||||
## Further Reading
|
||||
|
||||
- **Learn Prompting** - <https://learnprompting.org/docs/intro>
|
||||
@@ -0,0 +1,202 @@
|
||||
# 自定义助手指南
|
||||
|
||||
#### TOC
|
||||
|
||||
- [添加自定义助手](#添加自定义助手)
|
||||
- [`A` 通过角色市场添加](#a-通过角色市场添加)
|
||||
- [`B` 通过新建自定义助手](#b-通过新建自定义助手)
|
||||
- [Prompt 基本概念](#prompt-基本概念)
|
||||
- [如何写好一个结构化 prompt](#如何写好一个结构化-prompt)
|
||||
- [如何提升其质量和效果](#如何提升其质量和效果)
|
||||
- [模型的概念](#模型的概念)
|
||||
- [ChatGPT](#chatgpt)
|
||||
- [模型参数概念](#模型参数概念)
|
||||
- [`temperature`](#temperature)
|
||||
- [`top_p`](#top_p)
|
||||
- [`presence_penalty`](#presence_penalty)
|
||||
- [`frequency_penalty`](#frequency_penalty)
|
||||
- [扩展阅读](#扩展阅读)
|
||||
|
||||
## 添加自定义助手
|
||||
|
||||
作为 LobeChat 的基础职能单位,助手的添加和迭代是非常重要的。现在你可以通过两种方式将助手添加到你的常用列表中
|
||||
|
||||
### `A` 通过角色市场添加
|
||||
|
||||
如果你是一个 Prompt 编写的新手,不妨先浏览一下 LobeChat 的助手市场。在这里,你可以找到其他人提交的常用助手,并且只需一键添加到你的列表中,非常方便。
|
||||
|
||||

|
||||
|
||||
### `B` 通过新建自定义助手
|
||||
|
||||
当你需要处理一些特定的任务时,你就需要考虑创建一个自定义助手来帮助你解决问题。可以通过以下方式添加并进行助手的详细配置
|
||||
|
||||

|
||||

|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 快捷设置技巧:可以通过侧边栏的快捷编辑按钮进行 Prompt 的便捷修改
|
||||
|
||||

|
||||

|
||||
|
||||
请继续阅读下文,理解 Prompt 编写技巧和常见的模型参数设置
|
||||
|
||||
<br/>
|
||||
|
||||
## Prompt 基本概念
|
||||
|
||||
生成式 AI 非常有用,但它需要人类指导。通常情况下,生成式 AI 能就像公司新来的实习生一样,非常有能力,但需要清晰的指示才能做得好。能够正确地指导生成式 AI 是一项非常强大的技能。你可以通过发送一个 prompt 来指导生成式 AI,这通常是一个文本指令。Prompt 是向助手提供的输入,它会影响输出结果。一个好的 Prompt 应该是结构化的,清晰的,简洁的,并且具有指向性。
|
||||
|
||||
### 如何写好一个结构化 prompt
|
||||
|
||||
> \[!TIP]
|
||||
>
|
||||
> 结构化 prompt 是指 prompt 的构造应该有明确的逻辑和结构。例如,如果你想让模型生成一篇文章,你的 prompt 可能需要包括文章的主题,文章的大纲,文章的风格等信息。
|
||||
|
||||
让我们看一个基本的讨论问题的例子:
|
||||
|
||||
> _"我们星球面临的最紧迫的环境问题是什么,个人可以采取哪些措施来帮助解决这些问题?"_
|
||||
|
||||
我们可以将其转化为简单的助手提示,将回答以下问题:放在前面。
|
||||
|
||||
```
|
||||
回答以下问题:
|
||||
我们星球面临的最紧迫的环境问题是什么,个人可以采取哪些措施来帮助解决这些问题?
|
||||
```
|
||||
|
||||
由于这个提示生成的结果并不一致,有些只有一两个句子。一个典型的讨论回答应该有多个段落,因此这些结果并不理想。一个好的提示应该给出**具体的格式和内容指令**。您需要消除语言中的歧义以提高一致性和质量。这是一个更好的提示。
|
||||
|
||||
```
|
||||
写一篇高度详细的论文,包括引言、正文和结论段,回答以下问题:
|
||||
我们星球面临的最紧迫的环境问题是什么,
|
||||
个人可以采取哪些措施来帮助解决这些问题?
|
||||
```
|
||||
|
||||
第二个提示生成了更长的输出和更好的结构。提示中使用 “论文” 一词是有意的,因为助手可以理解论文的定义,因此更有可能生成连贯的、结构化的回答。
|
||||
|
||||
<br/>
|
||||
|
||||
### 如何提升其质量和效果
|
||||
|
||||
> \[!TIP]
|
||||
>
|
||||
> 提升 prompt 质量和效果的方法主要有以下几点:
|
||||
>
|
||||
> - 尽量明确你的需求。模型的输出会尽可能满足你的需求,所以如果你的需求不明确,输出可能会不如预期。
|
||||
> - 使用正确的语法和拼写。模型会尽可能模仿你的语言风格,所以如果你的语言风格有问题,输出可能也会有问题。
|
||||
> - 提供足够的上下文信息。模型会根据你提供的上下文信息生成输出,所以如果你提供的上下文信息不足,可能无法生成你想要的结果。
|
||||
|
||||
在为讨论问题制定有效的提示后,您现在需要细化生成的结果。这可能涉及到调整输出以符合诸如字数等限制,或将不同生成的结果的概念组合在一起。
|
||||
|
||||
迭代的一个简单方法是生成多个输出并查看它们,以了解正在使用的概念和结构。一旦评估了输出,您就可以选择最合适的输出并将它们组合成一个连贯的回答。另一种迭代的方法是逐步开始,然后**逐步扩展**。这需要不止一个提示:一个起始提示,用于撰写最初的一两段,然后是其他提示,以扩展已经写过的内容。以下是一个潜在的哲学讨论问题:
|
||||
|
||||
> _"数学是发明还是发现?用仔细的推理来解释你的答案。"_
|
||||
|
||||
将其添加到一个简单的提示中,如下所示:
|
||||
|
||||
```
|
||||
写一个起始段回答以下问题:
|
||||
数学是发明还是发现?用仔细的推理来解释你的答案。
|
||||
```
|
||||
|
||||
我生成了一些回答,找到了一个我喜欢的:
|
||||
|
||||
```
|
||||
哲学家和数学家之间争论不休,数学是发明还是发现。
|
||||
一些人认为,数学的概念和原则独立于人类思维存在,因此可以被认为是被发现而不是被发明的。
|
||||
例如,数字、比率和几何形状的概念在自然界中被观察到,可以被抽象化和系统化地研究。
|
||||
```
|
||||
|
||||
是一个不错的开端。然后我使用另一个提示来扩展:
|
||||
|
||||
```
|
||||
我正在撰写一篇详细的短文,回答以下提示:
|
||||
数学是发明还是发现?用仔细的推理来解释你的答案。这是我目前的情况: 哲学家和数学家之间争论不休,数学是发明还是发现。
|
||||
一些人认为,数学的概念和原则独立于人类思维存在,因此可以被认为是被发现而不是被发明的。
|
||||
例如,数字、比率和几何形状的概念在自然界中被观察到,可以被抽象化和系统化地研究。写下我文章的下一段。
|
||||
```
|
||||
|
||||
我使用此提示生成了几个扩展,并选择了一个我喜欢的,最终得到了以下结果:
|
||||
|
||||
```
|
||||
哲学家和数学家之间争论不休,数学是发明还是发现。
|
||||
一些人认为,数学的概念和原则独立于人类思维存在,因此可以被认为是被发现而不是被发明的。
|
||||
例如,数字、比率和几何形状的概念在自然界中被观察到,可以被抽象化和系统化地研究。
|
||||
另一方面,有人认为数学在很大程度上是人类思维的发明。
|
||||
数学原理基于逻辑推理,这是人类思维的一个特征。
|
||||
例如,欧几里德几何基于抽象的公理和前提,被接受为真实而无需证明。
|
||||
因此,可以认为几何是人类思维的发明,而不是一种发现。
|
||||
同样,数学公式和方程用于模拟和预测物理现象,这又是人类推理的结果。
|
||||
```
|
||||
|
||||
使用扩展提示,我们可以逐步地写作并在每个步骤上进行迭代。这对于需要**生成更高质量的输出并希望逐步修改**的情况非常有用。
|
||||
|
||||
<br/>
|
||||
|
||||
## 模型的概念
|
||||
|
||||
### ChatGPT
|
||||
|
||||
- **gpt-3.5-turbo**:目前最生成速度最快的 chatgpt 模型更快,但可能会牺牲一些生成文本的质量,上下文长度为 4k。
|
||||
- **gpt-3.5-turbo-16k**:同 gpt-4,上下文限制增加到 16k token,同时费率更高。
|
||||
- **gpt-4**:ChatGPT 4.0 在语言理解和生成能力方面相对于 3.5 有所提升。它可以更好地理解上下文和语境,并生成更准确、自然的回答。这得益于 GPT-4 模型的改进,包括更好的语言建模和更深入的语义理解,但它的速度可能比其他模型慢,上下文长度为 8k。
|
||||
- **gpt-4-32k**:同 gpt-4,上下文限制增加到 32k token,同时费率更高。
|
||||
|
||||
<br/>
|
||||
|
||||
## 模型参数概念
|
||||
|
||||
LLM 看似很神奇,但本质还是一个概率问题,神经网络根据输入的文本,从预训练的模型里面生成一堆候选词,选择概率高的作为输出,相关的参数,大多都是跟采样有关(也就是要如何从候选词里选择输出)。
|
||||
|
||||
### `temperature`
|
||||
|
||||
用于控制模型输出的结果的随机性,这个值越大随机性越大。一般我们多次输入相同的 prompt 之后,模型的每次输出都不一样。
|
||||
|
||||
- 设置为 0,对每个 prompt 都生成固定的输出
|
||||
- 较低的值,输出更集中,更有确定性
|
||||
- 较高的值,输出更随机(更有创意 )
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 一般来说,prompt 越长,描述得越清楚,模型生成的输出质量就越好,置信度越高,这时可以适当调高 temperature 的值;反过来,如果 prompt 很短,很含糊,这时再设置一个比较高的 temperature 值,模型的输出就很不稳定了。
|
||||
|
||||
<br/>
|
||||
|
||||
### `top_p`
|
||||
|
||||
核采样 top_p 也是采样参数,跟 temperature 不一样的采样方式。模型在输出之前,会生成一堆 token,这些 token 根据质量高低排名,核采样模式中候选词列表是动态的,从 tokens 里按百分比选择候选词。 top-p 为选择 token 引入了随机性,让其他高分的 token 有被选择的机会,不会总是选最高分的。
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> top_p 与随机性类似,一般来说不建议和随机性 temperature 一起更改
|
||||
|
||||
<br/>
|
||||
|
||||
### `presence_penalty`
|
||||
|
||||
Presence Penalty 参数可以看作是对生成文本中重复内容的一种惩罚。当该参数设置较高时,生成模型会尽量避免产生重复的词语、短语或句子。相反,如果 Presence Penalty 参数较低,则生成的文本可能会包含更多重复的内容。通过调整 Presence Penalty 参数的值,可以实现对生成文本的原创性和多样性的控制。参数的重要性主要体现在以下几个方面:
|
||||
|
||||
- 提高生成文本的独创性和多样性:在某些应用场景下,如创意写作、生成新闻标题等,需要生成的文本具有较高的独创性和多样性。通过增加 Presence Penalty 参数的值,可以有效减少生成文本中的重复内容,从而提高文本的独创性和多样性。
|
||||
- 防止生成循环和无意义的内容:在某些情况下,生成模型可能会产生循环、重复的文本,这些文本通常无法传达有效的信息。通过适当增加 Presence Penalty 参数的值,可以降低生成这类无意义内容的概率,提高生成文本的可读性和实用性。
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 值得注意的是,Presence Penalty 参数与其他参数(如 Temperature 和 top-p)共同影响着生成文本的质量。对比其他参数,Presence Penalty 参数主要关注文本的独创性和重复性,而 Temperature 和 top-p 参数则更多地影响着生成文本的随机性和确定性。通过合理地调整这些参数,可以实现对生成文本质量的综合控制
|
||||
|
||||
<br/>
|
||||
|
||||
### `frequency_penalty`
|
||||
|
||||
是一种机制,通过对文本中频繁出现的新词汇施加惩罚,以减少模型重复同一词语的可能性,值越大,越有可能降低重复字词。
|
||||
|
||||
- `-2.0` 当早间新闻开始播出,我发现我家电视现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在现在 _(频率最高的词是 “现在”,占比 44.79%)_
|
||||
- `-1.0` 他总是在清晨看新闻,在电视前看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看 _(频率最高的词是 “看”,占比 57.69%)_
|
||||
- `0.0` 当清晨的阳光洒进小餐馆时,一名疲倦的邮递员出现在门口,他的手中提着一袋信件。店主热情地为他准备了一份早餐,他在享用早餐的同时开始整理邮件。**(频率最高的词是 “的”,占比 8.45%)**
|
||||
- `1.0` 一个深度睡眠的女孩被一阵温暖的阳光唤醒,她看到了早晨的第一缕阳光,周围是鸟语花香,一切都充满了生机。_(频率最高的词是 “的”,占比 5.45%)_
|
||||
- `2.0` 每天早上,他都会在阳台上坐着吃早餐。在柔和的夕阳照耀下,一切看起来都非常宁静。然而有一天,当他准备端起早餐的时候,一只乐观的小鸟飞过,给他带来了一天的好心情。 _(频率最高的词是 “的”,占比 4.94%)_
|
||||
|
||||
## 扩展阅读
|
||||
|
||||
- **Learn Prompting** - <https://learnprompting.org/zh-Hans/docs/intro>
|
||||
@@ -0,0 +1,31 @@
|
||||
# Topic Guide
|
||||
|
||||
#### TOC
|
||||
|
||||
- [Explanation of Agent and Topic Concepts](#explanation-of-agent-and-topic-concepts)
|
||||
- [User Guide](#user-guide)
|
||||
|
||||
## Explanation of Agent and Topic Concepts
|
||||
|
||||
In the official ChatGPT app, there is only the concept of topics, as shown in the figure, the sidebar contains the user's historical conversation topic list.
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> However, in our use, we actually find that this mode has many problems, such as the information indexing of historical conversations is too scattered, and when dealing with some repetitive tasks, it is difficult to have a stable entrance. For example, I hope there is a stable entrance to allow ChatGPT to help me translate documents. In this mode, I need to constantly create new topics and then set the translation Prompt I created before. When there are high-frequency tasks, this will be a very low-efficiency interaction form.
|
||||
|
||||

|
||||
|
||||
Therefore, in LobeChat, we introduced the concept of `Agent`. The agent is a complete functional module, and each agent has its own responsibilities and tasks. The agent can help you handle various tasks and provide professional advice and guidance.
|
||||
|
||||
At the same time, we index the topic into each agent. The advantage of this is that each agent has an independent topic list, you can choose the corresponding agent according to the current task, and quickly switch historical conversation records. This way is more in line with the user's use habits of common chat software, and improves the interaction efficiency.
|
||||
|
||||

|
||||
|
||||
<br/>
|
||||
|
||||
## User Guide
|
||||
|
||||

|
||||
|
||||
- **Save Topic:** During the chat, if you want to save the current context and start a new topic, you can click the save button next to the send button.
|
||||
- **Topic List:** Clicking on the topic in the list can quickly switch historical conversation records and continue the conversation. You can also click the star icon <kbd>⭐️</kbd> to bookmark the topic to the top, or rename and delete the topic through the more button on the right.
|
||||
@@ -0,0 +1,31 @@
|
||||
# 话题指南
|
||||
|
||||
#### TOC
|
||||
|
||||
- [助手与话题概念解析](#助手与话题概念解析)
|
||||
- [使用指南](#使用指南)
|
||||
|
||||
## 助手与话题概念解析
|
||||
|
||||
在 ChatGPT 官方应用中,只存在话题的概念,如图所示,在侧边栏中是用户的历史对话话题列表。
|
||||
|
||||
> \[!NOTE]
|
||||
>
|
||||
> 但在我们的使用过程中其实会发现这种模式存在很多问题,比如历史对话的信息索引过于分散问题,同时当处理一些重复任务时很难有一个稳定的入口,比如我希望有一个稳定的入口可以让 ChatGPT 帮助我翻译文档,在这个模式下,我需要不断新建新的话题同时再设置我之前创建好的翻译 Prompt 设定,当有高频任务存在时,这将是一个效率很低的交互形式。
|
||||
|
||||

|
||||
|
||||
因此在 LobeChat 中,我们引入了 **助手** 的概念。助手是一个完整的功能模块,每个助手都有自己的职责和任务。助手可以帮助你处理各种任务,并提供专业的建议和指导。
|
||||
|
||||
与此同时,我们将话题索引到每个助手内部。这样做的好处是,每个助手都有一个独立的话题列表,你可以根据当前任务选择对应的助手,并快速切换历史对话记录。这种方式更符合用户对常见聊天软件的使用习惯,提高了交互的效率。
|
||||
|
||||

|
||||
|
||||
<br/>
|
||||
|
||||
## 使用指南
|
||||
|
||||

|
||||
|
||||
- **保存话题:** 在聊天过程中,如果想要保存当前上下文并开启新的话题,可以点击发送按钮旁边的保存按钮。
|
||||
- **话题列表:** 点击列表中的话题可以快速切换历史对话记录,并继续对话。你还可以通过点击星标图标 <kbd>⭐️</kbd> 将话题收藏置顶,或者通过右侧更多按钮对话题进行重命名和删除操作。
|
||||
+11
-1
@@ -4,11 +4,17 @@
|
||||
|
||||
- [TOC](Home) | [目录](Home)
|
||||
|
||||
#### 🤯 LobeChat
|
||||
#### 🤯 LobeChat Usage
|
||||
|
||||
- [Custom Agents Guide](Usage-Agents) | [中文](Usage-Agents.zh-CN)
|
||||
- [Topics Guide](Usage-Topics) | [中文](Usage-Topics.zh-CN)
|
||||
|
||||
#### 🛳 Self Hosting
|
||||
|
||||
- [Environment Variables](Environment-Variable) | [中文](Environment-Variable.zh-CN)
|
||||
- [Upstream Sync](Upstream-Sync) | [中文](Upstream-Sync.zh-CN)
|
||||
- [Deploying with Azure OpenAI](Deploy-with-Azure-OpenAI) | [中文](Deploy-with-Azure-OpenAI.zh-CN)
|
||||
- [Docker Deployment Guide](Docker-Deployment) | [中文](Docker-Deployment.zh-CN)
|
||||
|
||||
#### 🤖 Agents
|
||||
|
||||
@@ -20,6 +26,10 @@
|
||||
- [Plugin Development](Plugin-Development) | [中文](Plugin-Development.zh-CN)
|
||||
- [Plugin SDK Docs][plugin-sdk] | [中文][plugin-skd-cn]
|
||||
|
||||
#### 📊 Other
|
||||
|
||||
- [Lighthouse Report](Lighthouse) | [中文](Lighthouse.zh-CN)
|
||||
|
||||
<!-- LINK GROUP -->
|
||||
|
||||
[agent-index]: https://github.com/lobehub/lobe-chat-agents
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"agentDefaultMessage": "Hello, I'm **{{name}}**. You can start chatting with me right away or go to [Agent Settings](/chat/settings#session={{id}}) to improve my information.",
|
||||
"agentDefaultMessageWithSystemRole": "Hello, I'm **{{name}}**, {{systemRole}}. Let's start the conversation!",
|
||||
"backToBottom": "Go to Latest Messages",
|
||||
"clearCurrentMessages": "Clear Current Session Messages",
|
||||
"confirmClearCurrentMessages": "You are about to clear the current session messages. Once cleared, they cannot be recovered. Please confirm your operation.",
|
||||
"confirmRemoveSessionItemAlert": "You are about to delete this agent. Once deleted, it cannot be recovered. Please confirm your operation.",
|
||||
"defaultAgent": "Custom Agent",
|
||||
"defaultSession": "Custom Agent",
|
||||
"historyRange": "History Range",
|
||||
"inbox": {
|
||||
"defaultMessage": "Hello, I'm your intelligent agent. You can ask me any questions, and I will do my best to answer you. If you need a more professional or customized agent, you can click on `+` to create a custom agent.",
|
||||
"desc": "Activate brain clusters and spark thinking. Your intelligent agent is here to communicate with you about everything.",
|
||||
"title": "Chat Randomly"
|
||||
},
|
||||
"newAgent": "Create New Agent",
|
||||
"noDescription": "No description available",
|
||||
"pin": "Pin",
|
||||
"pinOff": "Unpin",
|
||||
"regenerate": "Regenerate",
|
||||
"roleAndArchive": "Roles and Archives",
|
||||
"searchAgentPlaceholder": "Search agents and conversations...",
|
||||
"send": "Send",
|
||||
"sendPlaceholder": "Enter chat content...",
|
||||
"sessionList": "Agent List",
|
||||
"shareModal": {
|
||||
"download": "Download Screenshot",
|
||||
"imageType": "Image Format",
|
||||
"screenshot": "Screenshot",
|
||||
"settings": "Export Settings",
|
||||
"shareToShareGPT": "Generate ShareGPT Sharing Link",
|
||||
"withBackground": "Include Background Image",
|
||||
"withFooter": "Include Footer",
|
||||
"withPluginInfo": "Include Plugin Information",
|
||||
"withSystemRole": "Include Agent Role Setting"
|
||||
},
|
||||
"stop": "Stop",
|
||||
"stt": {
|
||||
"action": "Voice Input",
|
||||
"loading": "Recognizing...",
|
||||
"prettifying": "Prettifying..."
|
||||
},
|
||||
"temp": "Temporary",
|
||||
"tokenDetail": "Role Setting: {{systemRoleToken}} · Chat History: {{chatsToken}}",
|
||||
"tokenTag": {
|
||||
"overload": "Exceeded Limit",
|
||||
"remained": "Remaining",
|
||||
"used": "Used"
|
||||
},
|
||||
"topic": {
|
||||
"confirmRemoveTopic": "You are about to delete this topic. Once deleted, it cannot be recovered. Please proceed with caution.",
|
||||
"defaultTitle": "Default Topic",
|
||||
"saveCurrentMessages": "Save Current Session as Topic",
|
||||
"searchPlaceholder": "Search topics...",
|
||||
"deleteAll": "Delete All Topics",
|
||||
"deleteUnstarred": "Delete Unstarred Topics",
|
||||
"title": "Topic List",
|
||||
"confirmRemoveAll": "All topics will be deleted and cannot be recovered. Please proceed with caution.",
|
||||
"confirmRemoveUnstarred": "All unstarred topics will be deleted and cannot be recovered. Please proceed with caution.",
|
||||
"removeAll": "Remove All Topics",
|
||||
"removeUnstarred": "Remove Unstarred Topics",
|
||||
"openNewTopic": "Open a new topic"
|
||||
},
|
||||
"translate": {
|
||||
"clear": "Clear Translation",
|
||||
"action": "Translate"
|
||||
},
|
||||
"translateTo": "Translate",
|
||||
"tts": {
|
||||
"action": "Text to Speech",
|
||||
"clear": "Clear Speech"
|
||||
},
|
||||
"updateAgent": "Update Agent Information",
|
||||
"upload": {
|
||||
"actionTooltip": "Upload Image",
|
||||
"dragDesc": "Drag and drop files here, supports uploading multiple images. Hold Shift to send images directly",
|
||||
"dragTitle": "Upload Image"
|
||||
},
|
||||
"warp": "Line Break"
|
||||
}
|
||||
+20
-48
@@ -1,24 +1,19 @@
|
||||
{
|
||||
"about": "About",
|
||||
"advanceSettings": "Advanced Settings",
|
||||
"agentDefaultMessage": "Hello, I'm **{{name}}**. You can start chatting with me right away or go to [Agent Settings](/chat/settings#session={{id}}) to complete my information.",
|
||||
"agentDefaultMessageWithSystemRole": "Hello, I'm **{{name}}**, {{systemRole}}. Let's start chatting!",
|
||||
"agentMaxToken": "Max Session Length",
|
||||
"agentModel": "Model",
|
||||
"agentProfile": "Agent Information",
|
||||
"agentProfile": "Agent Profile",
|
||||
"appInitializing": "LobeChat is initializing, please wait...",
|
||||
"archive": "Archive",
|
||||
"autoGenerate": "Auto Generate",
|
||||
"autoGenerateTooltip": "Auto generate agent description based on prompts",
|
||||
"backToBottom": "Go to Latest Messages",
|
||||
"cancel": "Cancel",
|
||||
"changelog": "Changelog",
|
||||
"clearCurrentMessages": "Clear Current Session Messages",
|
||||
"close": "Close",
|
||||
"confirmClearCurrentMessages": "You are about to clear the current session messages. Once cleared, they cannot be recovered. Please confirm your operation.",
|
||||
"confirmRemoveSessionItemAlert": "You are about to delete this agent. Once deleted, it cannot be recovered. Please confirm your operation.",
|
||||
"confirmRemoveSessionItemAlert": "You are about to delete this agent. Once deleted, it cannot be recovered. Please confirm your action.",
|
||||
"copy": "Copy",
|
||||
"copySuccess": "Copy Success",
|
||||
"copySuccess": "Copy Successful",
|
||||
"defaultAgent": "Custom Agent",
|
||||
"defaultSession": "Custom Agent",
|
||||
"delete": "Delete",
|
||||
@@ -35,17 +30,18 @@
|
||||
"feedback": "Feedback",
|
||||
"historyRange": "History Range",
|
||||
"import": "Import Configuration",
|
||||
"inbox": {
|
||||
"defaultMessage": "Hello, I'm your intelligent agent. You can ask me any questions and I will do my best to answer you. If you need a more professional or customized agent, you can click `+` to create a custom agent.",
|
||||
"desc": "Activate the brain cluster and spark your thinking. Your intelligent agent is here to communicate with you about everything.",
|
||||
"title": "Chat Freely"
|
||||
"lang": {
|
||||
"en": "English",
|
||||
"en-US": "English",
|
||||
"ja-JP": "Japanese",
|
||||
"ko-KR": "Korean",
|
||||
"ru-RU": "Russian",
|
||||
"zh": "Simplified Chinese",
|
||||
"zh-CN": "Simplified Chinese",
|
||||
"zh-TW": "Traditional Chinese"
|
||||
},
|
||||
"message": {
|
||||
"function_loading": "Plugin request in progress..."
|
||||
},
|
||||
"moreSetting": "More Settings...",
|
||||
"newAgent": "New Agent",
|
||||
"noDescription": "No Description",
|
||||
"layoutInitializing": "Loading layout...",
|
||||
"noDescription": "No description",
|
||||
"ok": "OK",
|
||||
"password": "Password",
|
||||
"pin": "Pin",
|
||||
@@ -54,24 +50,10 @@
|
||||
"rename": "Rename",
|
||||
"reset": "Reset",
|
||||
"retry": "Retry",
|
||||
"roleAndArchive": "Roles and Archives",
|
||||
"searchAgentPlaceholder": "Search Agents and Conversations...",
|
||||
"send": "Send",
|
||||
"sendPlaceholder": "Enter chat content...",
|
||||
"sessionList": "Agent List",
|
||||
"setting": "Settings",
|
||||
"share": "Share",
|
||||
"shareModal": {
|
||||
"download": "Download Screenshot",
|
||||
"imageType": "Image Type",
|
||||
"screenshot": "Screenshot",
|
||||
"settings": "Export Settings",
|
||||
"withBackground": "Include Background Image",
|
||||
"withPluginInfo": "Include Plugin Information",
|
||||
"withSystemRole": "Include Agent Role Setting",
|
||||
"withFooter": "Including footer",
|
||||
"shareToShareGPT": "Generate ShareGPT sharing link"
|
||||
},
|
||||
"stop": "Stop",
|
||||
"tab": {
|
||||
"chat": "Chat",
|
||||
@@ -79,20 +61,10 @@
|
||||
"setting": "Settings"
|
||||
},
|
||||
"temp": "Temporary",
|
||||
"tokenDetail": "Role Setting: {{systemRoleToken}} · Message History: {{chatsToken}}",
|
||||
"tokenTag": {
|
||||
"overload": "Exceeded Limit",
|
||||
"remained": "Remaining",
|
||||
"used": "Used"
|
||||
},
|
||||
"topic": {
|
||||
"confirmRemoveTopic": "You are about to delete this topic. Once deleted, it cannot be recovered. Please proceed with caution.",
|
||||
"defaultTitle": "Default Topic",
|
||||
"saveCurrentMessages": "Save the current session as a topic",
|
||||
"searchPlaceholder": "Search Topics...",
|
||||
"title": "Topic"
|
||||
},
|
||||
"updateAgent": "Update Agent Information",
|
||||
"updatePrompt": "Update Prompts",
|
||||
"warp": "Line break"
|
||||
"updateAgent": "Update Agent Profile",
|
||||
"upgradeVersion": {
|
||||
"action": "Upgrade Now",
|
||||
"hasNew": "Update available",
|
||||
"newVersion": "New version available: {{version}}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"pluginSettings": {
|
||||
"desc": "Complete the following configuration to start using this plugin",
|
||||
"title": "{{name}} Plugin Configuration"
|
||||
"title": "{{name}} Plugin Settings"
|
||||
},
|
||||
"response": {
|
||||
"400": "Sorry, the server does not understand your request. Please make sure your request parameters are correct.",
|
||||
@@ -25,17 +25,26 @@
|
||||
"PluginApiNotFound": "Sorry, the API does not exist in the plugin's manifest. Please check if your request method matches the plugin manifest API",
|
||||
"PluginApiParamsError": "Sorry, the input parameter validation for the plugin request failed. Please check if the input parameters match the API description",
|
||||
"PluginSettingsInvalid": "This plugin needs to be correctly configured before it can be used. Please check if your configuration is correct",
|
||||
"PluginServerError": "Plugin server request returned an error. Please check your plugin manifest file, plugin configuration, or server implementation based on the error information below"
|
||||
"PluginServerError": "Plugin server request returned an error. Please check your plugin manifest file, plugin configuration, or server implementation based on the error information below",
|
||||
"NoAPIKey": "OpenAI API Key is empty, please add a custom OpenAI API Key"
|
||||
},
|
||||
"stt": {
|
||||
"responseError": "Service request failed, please check the configuration or try again"
|
||||
},
|
||||
"tts": {
|
||||
"responseError": "Service request failed, please check the configuration or try again"
|
||||
},
|
||||
"unlock": {
|
||||
"apikey": {
|
||||
"description": "Enter your OpenAI API Key to bypass password verification. The application will not record your API Key.",
|
||||
"title": "Use Custom API Key"
|
||||
"title": "Use Custom API Key",
|
||||
"description": "Enter your OpenAI API Key to start the conversation. The application will not record your API Key.",
|
||||
"addProxyUrl": "Add OpenAI Proxy URL (optional)"
|
||||
},
|
||||
"confirm": "Confirm and Retry",
|
||||
"password": {
|
||||
"description": "The application encryption has been enabled by the administrator. Enter the application password to unlock the application. The password only needs to be filled in once.",
|
||||
"title": "Enter Password to Unlock Application"
|
||||
"title": "Enter Password to Unlock Application",
|
||||
"placeholder": "Please enter password"
|
||||
},
|
||||
"closeMessage": "Close message"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
{
|
||||
"addAgent": "Add Agent",
|
||||
"guide": {
|
||||
"func1": {
|
||||
"desc1": "Enter the settings page you want to submit to the assistant by clicking on the settings icon in the upper right corner of the chat window.",
|
||||
"desc2": "Click on the 'Submit to Assistant Market' button in the upper right corner.",
|
||||
"tag": "Method 1",
|
||||
"title": "Submit via LobeChat"
|
||||
},
|
||||
"func2": {
|
||||
"button": "Go to Github Assistant Repository",
|
||||
"desc": "If you want to add the assistant to the index, create an entry in the plugins directory using agent-template.json or agent-template-full.json, write a brief description and appropriate tags, and then create a pull request.",
|
||||
"tag": "Method 2",
|
||||
"title": "Submit via Github"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "Search agent name, description or keywords..."
|
||||
},
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
"debug": {
|
||||
"arguments": "Arguments",
|
||||
"function_call": "Function Call",
|
||||
"response": "Response"
|
||||
"response": "Response",
|
||||
"off": "Turn off debug",
|
||||
"on": "View plugin invocation information"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Are you sure you want to delete this local plugin? Once deleted, it cannot be recovered.",
|
||||
@@ -89,8 +91,8 @@
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "Loading...",
|
||||
"plugin": "Plugin is running..."
|
||||
"plugin": "Plugin is running...",
|
||||
"content": "Calling plugin..."
|
||||
},
|
||||
"pluginList": "Plugin List",
|
||||
"plugins": {
|
||||
|
||||
@@ -75,6 +75,11 @@
|
||||
"fetch": "Get list",
|
||||
"title": "Azure OpenAI",
|
||||
"serverConfig": "The administrator has enabled Azure OpenAI on the server side, switching is prohibited"
|
||||
},
|
||||
"customModelName": {
|
||||
"desc": "Add custom models, separate multiple models with commas (,)",
|
||||
"placeholder": "model1,model2,model3",
|
||||
"title": "Custom Model Name"
|
||||
}
|
||||
},
|
||||
"waitingForMore": "<1>Access to other models is planned</1>, so stay tuned ✨"
|
||||
@@ -202,6 +207,44 @@
|
||||
},
|
||||
"title": "System Settings"
|
||||
},
|
||||
"settingTTS": {
|
||||
"showAllLocaleVoice": {
|
||||
"desc": "If disabled, only voices for the current language will be displayed",
|
||||
"title": "Show all locale voices"
|
||||
},
|
||||
"sttService": {
|
||||
"desc": "The 'browser' option refers to the native speech recognition service in the browser",
|
||||
"title": "Speech-to-Text Service"
|
||||
},
|
||||
"title": "Speech Services",
|
||||
"ttsService": {
|
||||
"desc": "If using the OpenAI text-to-speech service, ensure that the OpenAI model service is enabled",
|
||||
"title": "Text-to-Speech Service"
|
||||
},
|
||||
"voice": {
|
||||
"title": "Text-to-Speech Voices",
|
||||
"desc": "Select a voice for the current assistant, different TTS services support different voices",
|
||||
"preview": "Preview Voice"
|
||||
},
|
||||
"openai": {
|
||||
"sttModel": "OpenAI Speech Recognition Model",
|
||||
"ttsModel": "OpenAI Text-to-Speech Model"
|
||||
},
|
||||
"stt": "Speech Recognition Settings",
|
||||
"sttLocale": {
|
||||
"desc": "The language of the speech input, this option can improve the accuracy of speech recognition",
|
||||
"title": "Speech Recognition Language"
|
||||
},
|
||||
"sttPersisted": {
|
||||
"desc": "When enabled, speech recognition will not automatically end and requires manual click on the end button",
|
||||
"title": "Manually End Speech Recognition"
|
||||
},
|
||||
"tts": "Text-to-Speech Settings",
|
||||
"sttAutoStop": {
|
||||
"desc": "When disabled, speech recognition will not automatically stop and will require manual intervention to end the process.",
|
||||
"title": "Automatic Speech Recognition Termination"
|
||||
}
|
||||
},
|
||||
"settingTheme": {
|
||||
"avatar": {
|
||||
"title": "Avatar"
|
||||
@@ -230,9 +273,17 @@
|
||||
},
|
||||
"title": "Theme Settings"
|
||||
},
|
||||
"submitAgentModal": {
|
||||
"tooltips": "Share to Assistant Market",
|
||||
"button": "Submit Assistant",
|
||||
"identifier": "Identifier",
|
||||
"metaMiss": "Please complete the assistant information before submitting. It should include name, description, and tags.",
|
||||
"placeholder": "Please enter a unique identifier for the assistant, such as web-development."
|
||||
},
|
||||
"tab": {
|
||||
"agent": "Default Agent",
|
||||
"common": "Common Settings",
|
||||
"llm": "Custom LLM API"
|
||||
"llm": "Custom LLM API",
|
||||
"tts": "Speech Services"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
"pickAgent": "Or choose from the following agent templates",
|
||||
"skip": "Skip Creation",
|
||||
"slogan": {
|
||||
"desc1": "Unlock the power of your brain and ignite your creativity. Your intelligent agent is always here.",
|
||||
"desc1": "Pioneering the new age of thinking and creating. Built for you, the Super Individual.",
|
||||
"desc2": "Create your first agent and let's get started~",
|
||||
"title": "Give yourself a smarter brain"
|
||||
"title": "Unlock the superpower of your brain"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"agentDefaultMessage": "こんにちは、私は **{{name}}** です。すぐに会話を始めることができますし、[エージェント設定](/chat/settings#session={{id}}) に移動して私の情報を充実させることもできます。",
|
||||
"agentDefaultMessageWithSystemRole": "こんにちは、私は **{{name}}** です、{{systemRole}}、さあ、会話を始めましょう!",
|
||||
"backToBottom": "最新のメッセージを表示",
|
||||
"clearCurrentMessages": "現在の会話メッセージをクリア",
|
||||
"confirmClearCurrentMessages": "現在の会話メッセージをクリアします。クリア後は元に戻すことはできませんので、操作を確認してください",
|
||||
"confirmRemoveSessionItemAlert": "このエージェントを削除します。削除後は元に戻すことはできませんので、操作を確認してください",
|
||||
"defaultAgent": "デフォルトエージェント",
|
||||
"defaultSession": "デフォルトエージェント",
|
||||
"historyRange": "履歴範囲",
|
||||
"inbox": {
|
||||
"defaultMessage": "こんにちは、私はあなたのインテリジェントアシスタントです。何でも質問してください、できる限りお答えします。より専門的またはカスタマイズされたアシスタントが必要な場合は、`+` をクリックしてカスタムエージェントを作成できます",
|
||||
"desc": "ブレインクラスタを起動し、思考の火花を引き起こします。あなたのインテリジェントアシスタントは、ここであなたとすべてを話します",
|
||||
"title": "ちょっとおしゃべりしましょう"
|
||||
},
|
||||
"newAgent": "新しいエージェントを作成",
|
||||
"noDescription": "説明はありません",
|
||||
"pin": "ピン留め",
|
||||
"pinOff": "ピン留め解除",
|
||||
"regenerate": "再生成",
|
||||
"roleAndArchive": "役割とアーカイブ",
|
||||
"searchAgentPlaceholder": "エージェントと会話を検索...",
|
||||
"send": "送信",
|
||||
"sendPlaceholder": "チャット内容を入力...",
|
||||
"sessionList": "セッションリスト",
|
||||
"shareModal": {
|
||||
"download": "スクリーンショットをダウンロード",
|
||||
"imageType": "画像形式",
|
||||
"screenshot": "スクリーンショット",
|
||||
"settings": "エクスポート設定",
|
||||
"shareToShareGPT": "ShareGPT共有リンクを生成",
|
||||
"withBackground": "背景画像を含む",
|
||||
"withFooter": "フッターを含む",
|
||||
"withPluginInfo": "プラグイン情報を含む",
|
||||
"withSystemRole": "エージェントの役割設定を含む"
|
||||
},
|
||||
"stop": "停止",
|
||||
"stt": {
|
||||
"action": "音声入力",
|
||||
"loading": "読み取り中...",
|
||||
"prettifying": "美化中..."
|
||||
},
|
||||
"temp": "一時",
|
||||
"tokenDetail": "役割設定: {{systemRoleToken}} · チャット履歴: {{chatsToken}}",
|
||||
"tokenTag": {
|
||||
"overload": "制限を超えています",
|
||||
"remained": "残り",
|
||||
"used": "使用済み"
|
||||
},
|
||||
"topic": {
|
||||
"confirmRemoveTopic": "このトピックを削除します。削除後は元に戻すことはできませんので、注意して操作してください",
|
||||
"defaultTitle": "デフォルトトピック",
|
||||
"saveCurrentMessages": "現在の会話をトピックとして保存",
|
||||
"searchPlaceholder": "トピックを検索...",
|
||||
"deleteAll": "すべてのトピックを削除する",
|
||||
"deleteUnstarred": "スターを付けていないトピックを削除する",
|
||||
"title": "トピックリスト",
|
||||
"confirmRemoveAll": "すべてのトピックを削除します。削除後は元に戻すことはできませんので、注意して操作してください。",
|
||||
"confirmRemoveUnstarred": "スターをつけていないトピックを削除します。削除後は元に戻すことはできませんので、注意して操作してください。",
|
||||
"removeAll": "すべてのトピックを削除",
|
||||
"removeUnstarred": "スターをつけていないトピックを削除",
|
||||
"openNewTopic": "新しいトピックを開く"
|
||||
},
|
||||
"translate": {
|
||||
"clear": "翻訳をクリア",
|
||||
"action": "翻訳"
|
||||
},
|
||||
"translateTo": "翻訳",
|
||||
"tts": {
|
||||
"action": "音声読み上げ",
|
||||
"clear": "音声削除"
|
||||
},
|
||||
"updateAgent": "エージェント情報を更新",
|
||||
"upload": {
|
||||
"actionTooltip": "画像をアップロード",
|
||||
"dragDesc": "ファイルをここにドラッグして複数の画像をアップロードできます。Shift キーを押しながら画像を直接送信できます",
|
||||
"dragTitle": "画像をアップロード"
|
||||
},
|
||||
"warp": "改行"
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"about": "について",
|
||||
"advanceSettings": "詳細設定",
|
||||
"agentMaxToken": "セッションの最大トークン数",
|
||||
"agentModel": "モデル",
|
||||
"agentProfile": "エージェント情報",
|
||||
"appInitializing": "LobeChatを起動中です。お待ちください...",
|
||||
"archive": "アーカイブ",
|
||||
"autoGenerate": "自動生成",
|
||||
"autoGenerateTooltip": "ヒントワードに基づいてエージェントの説明を自動生成します",
|
||||
"cancel": "キャンセル",
|
||||
"changelog": "更新履歴",
|
||||
"close": "閉じる",
|
||||
"confirmRemoveSessionItemAlert": "このエージェントを削除します。削除後は元に戻すことはできません。操作を確認してください",
|
||||
"copy": "コピー",
|
||||
"copySuccess": "コピーが成功しました",
|
||||
"defaultAgent": "デフォルトエージェント",
|
||||
"defaultSession": "デフォルトセッション",
|
||||
"delete": "削除",
|
||||
"edit": "編集",
|
||||
"export": "設定のエクスポート",
|
||||
"exportType": {
|
||||
"agent": "エージェント設定のエクスポート",
|
||||
"agentWithMessage": "エージェントとメッセージのエクスポート",
|
||||
"all": "グローバル設定とすべてのエージェントデータのエクスポート",
|
||||
"allAgent": "すべてのエージェント設定のエクスポート",
|
||||
"allAgentWithMessage": "すべてのエージェントとメッセージのエクスポート",
|
||||
"globalSetting": "グローバル設定のエクスポート"
|
||||
},
|
||||
"feedback": "フィードバック",
|
||||
"historyRange": "履歴範囲",
|
||||
"import": "設定のインポート",
|
||||
"lang": {
|
||||
"en": "英語",
|
||||
"en-US": "英語",
|
||||
"ja-JP": "日本語",
|
||||
"ko-KR": "韓国語",
|
||||
"ru-RU": "ロシア語",
|
||||
"zh": "簡体中国語",
|
||||
"zh-CN": "簡体中国語",
|
||||
"zh-TW": "繁体中国語"
|
||||
},
|
||||
"layoutInitializing": "レイアウトを読み込んでいます...",
|
||||
"noDescription": "説明はありません",
|
||||
"ok": "OK",
|
||||
"password": "パスワード",
|
||||
"pin": "ピン留め",
|
||||
"pinOff": "ピン留め解除",
|
||||
"regenerate": "再生成",
|
||||
"rename": "名前の変更",
|
||||
"reset": "リセット",
|
||||
"retry": "再試行",
|
||||
"send": "送信",
|
||||
"sessionList": "エージェントリスト",
|
||||
"setting": "設定",
|
||||
"share": "共有",
|
||||
"stop": "停止",
|
||||
"tab": {
|
||||
"chat": "チャット",
|
||||
"market": "発見",
|
||||
"setting": "設定"
|
||||
},
|
||||
"temp": "一時的な",
|
||||
"updateAgent": "エージェント情報の更新",
|
||||
"upgradeVersion": {
|
||||
"action": "今すぐアップグレード",
|
||||
"hasNew": "利用可能な更新があります",
|
||||
"newVersion": "新しいバージョンが利用可能です:{{version}}"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"topic": {
|
||||
"desc": "左側のボタンをクリックして、現在の会話を履歴トピックとして保存し、新しい会話を開始します",
|
||||
"title": "トピックリスト"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"pluginSettings": {
|
||||
"desc": "以下の設定を完了すると、プラグインを使用することができます",
|
||||
"title": "{{name}} プラグイン設定"
|
||||
},
|
||||
"response": {
|
||||
"400": "申し訳ありませんが、サーバーはリクエストを理解できません。リクエストパラメータが正しいかどうか確認してください",
|
||||
"401": "申し訳ありませんが、サーバーはリクエストを拒否しました。権限が不足しているか、有効な認証情報が提供されていない可能性があります",
|
||||
"403": "申し訳ありませんが、サーバーはリクエストを拒否しました。このコンテンツにアクセスする権限がありません",
|
||||
"404": "申し訳ありませんが、サーバーはリクエストしたページやリソースを見つけることができません。URLが正しいかどうか確認してください",
|
||||
"405": "申し訳ありませんが、サーバーは使用されたリクエストメソッドをサポートしていません。リクエストメソッドが正しいかどうか確認してください",
|
||||
"429": "申し訳ありませんが、リクエストが多すぎてサーバーが忙しいため、しばらくしてから再試行してください",
|
||||
"500": "申し訳ありませんが、サーバーに一時的な問題が発生し、リクエストを完了できません。しばらくしてから再試行してください",
|
||||
"502": "申し訳ありませんが、サーバーは一時的にサービスを提供できません。しばらくしてから再試行してください",
|
||||
"503": "申し訳ありませんが、サーバーは現在、リクエストを処理できません。オーバーロードまたはメンテナンス中の可能性があります。しばらくしてから再試行してください",
|
||||
"504": "申し訳ありませんが、サーバーは上位サーバーからの応答を待っていません。しばらくしてから再試行してください",
|
||||
"PluginMarketIndexNotFound": "申し訳ありませんが、プラグインのインデックスが見つかりませんでした。インデックスのアドレスが正しいかどうか確認してください",
|
||||
"PluginMetaNotFound": "申し訳ありませんが、インデックスでプラグインが見つかりませんでした。プラグインの設定情報をインデックスで確認してください",
|
||||
"PluginMetaInvalid": "申し訳ありませんが、プラグインのメタ情報の検証に失敗しました。プラグインのメタ情報の形式が正しいかどうか確認してください",
|
||||
"PluginApiParamsError": "申し訳ありませんが、プラグインのリクエストパラメータの検証に失敗しました。パラメータとAPIの説明が一致しているかどうか確認してください",
|
||||
"PluginSettingsInvalid": "このプラグインを使用するには、正しい設定が必要です。設定が正しいかどうか確認してください",
|
||||
"PluginServerError": "プラグインサーバーのリクエストエラーが発生しました。以下のエラーメッセージを参考に、プラグインのマニフェストファイル、設定、サーバー実装を確認してください",
|
||||
"InvalidAccessCode": "パスワードが正しくないか空です。正しいアクセスパスワードを入力するか、カスタムのOpenAI APIキーを追加してください",
|
||||
"OpenAIBizError": "OpenAIサービスのリクエストエラーが発生しました。以下の情報に基づいて問題を解決したり、再試行したりしてください",
|
||||
"PluginMarketIndexInvalid": "申し訳ありませんが、プラグインのインデックスの検証に失敗しました。インデックスファイルの形式が正しいかどうかを確認してください",
|
||||
"PluginManifestNotFound": "申し訳ありませんが、サーバーでプラグインのマニフェストファイル (manifest.json) が見つかりませんでした。プラグインのマニフェストファイルのアドレスが正しいかどうかを確認してください",
|
||||
"PluginManifestInvalid": "申し訳ありませんが、このプラグインのマニフェストの検証に失敗しました。マニフェストの形式が正しいかどうかを確認してください",
|
||||
"PluginApiNotFound": "申し訳ありませんが、プラグインのマニフェストに指定されたAPIが見つかりませんでした。リクエストメソッドとプラグインのマニフェストのAPIが一致しているかどうかを確認してください",
|
||||
"NoAPIKey": "OpenAI APIキーが空です。カスタムOpenAI APIキーを追加してください。"
|
||||
},
|
||||
"stt": {
|
||||
"responseError": "サービスリクエストが失敗しました。設定を確認するか、もう一度お試しください"
|
||||
},
|
||||
"tts": {
|
||||
"responseError": "サービスリクエストが失敗しました。設定を確認するか、もう一度お試しください"
|
||||
},
|
||||
"unlock": {
|
||||
"apikey": {
|
||||
"title": "カスタムAPIキーの使用",
|
||||
"description": "OpenAI APIキーを入力すると、会話を開始できます。アプリはあなたのAPIキーを記録しません。",
|
||||
"addProxyUrl": "OpenAIプロキシURLを追加(オプション)"
|
||||
},
|
||||
"closeMessage": "ヒントを閉じる",
|
||||
"confirm": "確認して再試行",
|
||||
"password": {
|
||||
"description": "管理者によってアプリが暗号化されました。アプリをロック解除するには、アプリのパスワードを入力してください。パスワードは1回だけ入力すればよいです",
|
||||
"title": "パスワードを入力してアプリをロック解除",
|
||||
"placeholder": "パスワードを入力してください"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"addAgent": "助手を追加する",
|
||||
"guide": {
|
||||
"func1": {
|
||||
"desc1": "セッションウィンドウで右上隅の設定にアクセスして、アシスタントの設定ページに移動します。",
|
||||
"desc2": "右上隅の「アシスタントマーケットに送信」ボタンをクリックします。",
|
||||
"tag": "方法1",
|
||||
"title": "LobeChatを使用して送信する"
|
||||
},
|
||||
"func2": {
|
||||
"button": "GitHubのアシスタントリポジトリに移動する",
|
||||
"desc": "アシスタントをインデックスに追加したい場合は、agent-template.jsonまたはagent-template-full.jsonを使用して、pluginsディレクトリにエントリを作成し、簡単な説明と適切なタグを付けてプルリクエストを作成します。",
|
||||
"tag": "方法2",
|
||||
"title": "GitHubを使用して送信する"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "助手の名前、説明、またはキーワードを検索..."
|
||||
},
|
||||
"sidebar": {
|
||||
"comment": "コメント",
|
||||
"prompt": "プロンプト",
|
||||
"title": "助手の詳細"
|
||||
},
|
||||
"submitAgent": "助手を提出する",
|
||||
"title": {
|
||||
"allAgents": "すべての助手",
|
||||
"recentSubmits": "最近の追加"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
{
|
||||
"debug": {
|
||||
"arguments": "引数",
|
||||
"function_call": "関数呼び出し",
|
||||
"response": "レスポンス",
|
||||
"off": "デバッグをオフにする",
|
||||
"on": "プラグイン呼び出し情報を表示する"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "このローカルプラグインを削除しますか?削除後は元に戻せません。",
|
||||
"deleteSuccess": "プラグインが正常に削除されました",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "プラグインの一意の識別子",
|
||||
"label": "識別子"
|
||||
},
|
||||
"mode": {
|
||||
"local": "ビジュアル設定",
|
||||
"local-tooltip": "ビジュアル設定は一時的にサポートされていません",
|
||||
"url": "オンラインリンク"
|
||||
},
|
||||
"name": {
|
||||
"desc": "プラグインのタイトル",
|
||||
"label": "タイトル",
|
||||
"placeholder": "検索エンジン"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"author": {
|
||||
"desc": "プラグインの作者",
|
||||
"label": "作者"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "プラグインのアイコン、絵文字やURLを使用できます",
|
||||
"label": "アイコン"
|
||||
},
|
||||
"description": {
|
||||
"desc": "プラグインの説明",
|
||||
"label": "説明",
|
||||
"placeholder": "検索エンジンで情報を取得します"
|
||||
},
|
||||
"formFieldRequired": "このフィールドは必須です",
|
||||
"homepage": {
|
||||
"desc": "プラグインのホームページ",
|
||||
"label": "ホームページ"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "プラグインの一意の識別子、マニフェストから自動的に識別されます",
|
||||
"errorDuplicate": "識別子が既存のプラグインと重複しています。識別子を変更してください",
|
||||
"label": "識別子",
|
||||
"pattenErrorMessage": "英数字、-、_ のみ入力できます"
|
||||
},
|
||||
"manifest": {
|
||||
"desc": "LobeChatはこのリンクを使用してプラグインをインストールします",
|
||||
"jsonInvalid": "マニフェストが規格に準拠していません。検証結果:\n\n{{error}}",
|
||||
"label": "プラグインのマニフェストURL",
|
||||
"preview": "マニフェストのプレビュー",
|
||||
"refresh": "更新",
|
||||
"requestError": "リンクのリクエストに失敗しました。有効なリンクを入力し、クロスオリジンリクエストが許可されているか確認してください",
|
||||
"urlError": "このリンクはJSON形式のコンテンツを返していません。有効なリンクを入力してください"
|
||||
},
|
||||
"title": {
|
||||
"desc": "プラグインのタイトル",
|
||||
"label": "タイトル",
|
||||
"placeholder": "検索エンジン"
|
||||
}
|
||||
},
|
||||
"metaConfig": "プラグインのメタ情報の設定",
|
||||
"modalDesc": "カスタムプラグインを追加すると、プラグインの開発検証やセッションで直接使用できます。プラグインの開発ドキュメントについては、参照してください",
|
||||
"preview": {
|
||||
"card": "プラグインのプレビュー表示",
|
||||
"desc": "プラグインの説明のプレビュー",
|
||||
"title": "プラグイン名のプレビュー"
|
||||
},
|
||||
"save": "保存",
|
||||
"saveSuccess": "プラグインの設定が正常に保存されました",
|
||||
"tabs": {
|
||||
"manifest": "機能のマニフェスト",
|
||||
"meta": "プラグインのメタ情報"
|
||||
},
|
||||
"title": "カスタムプラグインの追加",
|
||||
"update": "更新",
|
||||
"updateSuccess": "プラグインの設定が正常に更新されました"
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "削除済み",
|
||||
"local.config": "設定",
|
||||
"local.title": "カスタム"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"plugin": "プラグインの実行中...",
|
||||
"content": "プラグインを呼び出しています..."
|
||||
},
|
||||
"pluginList": "プラグインリスト",
|
||||
"plugins": {
|
||||
"unknown": "プラグインの検出中..."
|
||||
},
|
||||
"setting": "プラグインの設定",
|
||||
"settings": {
|
||||
"indexUrl": {
|
||||
"title": "マーケットインデックス",
|
||||
"tooltip": "オンライン編集は現在サポートされていません。デプロイ時の環境変数を使用して設定してください"
|
||||
},
|
||||
"modalDesc": "プラグインマーケットのアドレスを設定すると、カスタムのプラグインマーケットを使用できます",
|
||||
"title": "プラグインマーケットの設定"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,276 @@
|
||||
{
|
||||
"danger": {
|
||||
"clear": {
|
||||
"action": "クリア",
|
||||
"confirm": "すべてのチャットデータをクリアしますか?",
|
||||
"desc": "すべてのセッションデータをクリアします",
|
||||
"success": "すべてのセッションメッセージがクリアされました",
|
||||
"title": "すべてのセッションメッセージをクリア"
|
||||
},
|
||||
"reset": {
|
||||
"action": "リセット",
|
||||
"confirm": "すべての設定をリセットしますか?",
|
||||
"currentVersion": "現在のバージョン",
|
||||
"desc": "すべての設定項目をデフォルト値にリセットします",
|
||||
"title": "すべての設定をリセット"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"global": "グローバル設定",
|
||||
"session": "セッション設定",
|
||||
"sessionWithName": "セッション設定 · {{name}}"
|
||||
},
|
||||
"llm": {
|
||||
"AzureOpenAI": {
|
||||
"endpoint": {
|
||||
"desc": "Azureポータルでリソースを確認すると、この値は「キーとエンドポイント」セクションで見つけることができます",
|
||||
"placeholder": "https://docs-test-001.openai.azure.com",
|
||||
"title": "Azure APIアドレス"
|
||||
},
|
||||
"models": {
|
||||
"desc": "サポートされているモデル",
|
||||
"title": "モデルリスト"
|
||||
},
|
||||
"title": "Azure OpenAI設定",
|
||||
"token": {
|
||||
"desc": "Azureポータルでリソースを確認すると、この値は「キーとエンドポイント」セクションで見つけることができます。KEY1またはKEY2を使用できます",
|
||||
"placeholder": "Azure APIキー",
|
||||
"title": "APIキー"
|
||||
}
|
||||
},
|
||||
"OpenAI": {
|
||||
"azureApiVersion": {
|
||||
"desc": "AzureのAPIバージョンは、YYYY-MM-DD形式に従います。[最新バージョン](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)を参照してください",
|
||||
"fetch": "リストを取得",
|
||||
"title": "Azure APIバージョン"
|
||||
},
|
||||
"check": {
|
||||
"button": "チェック",
|
||||
"desc": "APIキーとプロキシアドレスが正しく入力されているかをテストします",
|
||||
"pass": "チェックに合格しました",
|
||||
"title": "接続性のチェック"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "デフォルトのアドレス以外に、http(s)://を含める必要があります",
|
||||
"placeholder": "https://api.openai.com/v1",
|
||||
"title": "エンドポイントプロキシアドレス"
|
||||
},
|
||||
"models": {
|
||||
"count": "{{count}}モデルがサポートされています",
|
||||
"desc": "サポートされているモデル",
|
||||
"fetch": "モデルリストを取得",
|
||||
"notSupport": "Azure OpenAIではモデルリストの表示はサポートされていません",
|
||||
"notSupportTip": "デプロイ名とモデル名が一致していることを確認する必要があります",
|
||||
"refetch": "モデルリストを再取得",
|
||||
"title": "モデルリスト"
|
||||
},
|
||||
"title": "OpenAI設定",
|
||||
"token": {
|
||||
"desc": "独自のOpenAIキーを使用します",
|
||||
"placeholder": "OpenAI APIキー",
|
||||
"title": "APIキー"
|
||||
},
|
||||
"useAzure": {
|
||||
"desc": "Azureが提供するOpenAIサービスを使用します",
|
||||
"fetch": "リストを取得",
|
||||
"serverConfig": "管理者がサーバー側でAzure OpenAIを設定しており、切り替えが禁止されています",
|
||||
"title": "Azure OpenAI"
|
||||
},
|
||||
"customModelName": {
|
||||
"desc": "カスタムモデルを追加します。複数のモデルはカンマ(,)で区切ってください",
|
||||
"placeholder": "model1,model2,model3",
|
||||
"title": "カスタムモデル名"
|
||||
}
|
||||
},
|
||||
"waitingForMore": "他のモデルは現在 <1>計画中</1> です。お楽しみに ✨"
|
||||
},
|
||||
"settingAgent": {
|
||||
"avatar": {
|
||||
"title": "アバター"
|
||||
},
|
||||
"backgroundColor": {
|
||||
"title": "背景色"
|
||||
},
|
||||
"description": {
|
||||
"placeholder": "アシスタントの説明を入力してください",
|
||||
"title": "説明"
|
||||
},
|
||||
"name": {
|
||||
"placeholder": "アシスタントの名前を入力してください",
|
||||
"title": "名前"
|
||||
},
|
||||
"prompt": {
|
||||
"placeholder": "キャラクタープロンプトを入力してください",
|
||||
"title": "キャラクター設定"
|
||||
},
|
||||
"tag": {
|
||||
"placeholder": "タグを入力してください",
|
||||
"title": "タグ"
|
||||
},
|
||||
"title": "アシスタント情報"
|
||||
},
|
||||
"settingChat": {
|
||||
"chatStyleType": {
|
||||
"title": "チャットウィンドウのスタイル",
|
||||
"type": {
|
||||
"chat": "対話モード",
|
||||
"docs": "ドキュメントモード"
|
||||
}
|
||||
},
|
||||
"compressThreshold": {
|
||||
"desc": "非圧縮の履歴メッセージがこの値を超えると、圧縮されます",
|
||||
"title": "履歴メッセージの圧縮閾値"
|
||||
},
|
||||
"enableCompressThreshold": {
|
||||
"title": "履歴メッセージの圧縮閾値を有効にする"
|
||||
},
|
||||
"enableHistoryCount": {
|
||||
"alias": "制限なし",
|
||||
"limited": "{{number}}件の会話メッセージのみ含む",
|
||||
"title": "履歴メッセージ数の制限",
|
||||
"unlimited": "履歴メッセージ数の制限なし"
|
||||
},
|
||||
"historyCount": {
|
||||
"desc": "リクエストごとに含まれる履歴メッセージ数",
|
||||
"title": "履歴メッセージ数"
|
||||
},
|
||||
"inputTemplate": {
|
||||
"desc": "ユーザーの最新のメッセージがこのテンプレートに埋め込まれます",
|
||||
"placeholder": "プリプロセステンプレート {{text}} はリアルタイムの入力情報に置き換えられます",
|
||||
"title": "ユーザー入力のプリプロセス"
|
||||
},
|
||||
"title": "チャット設定"
|
||||
},
|
||||
"settingModel": {
|
||||
"enableMaxTokens": {
|
||||
"title": "単一応答制限を有効にする"
|
||||
},
|
||||
"frequencyPenalty": {
|
||||
"desc": "値が大きいほど、重複する単語が減少する可能性が高くなります",
|
||||
"title": "頻度ペナルティ"
|
||||
},
|
||||
"maxTokens": {
|
||||
"desc": "単一の対話で使用される最大トークン数",
|
||||
"title": "単一応答制限"
|
||||
},
|
||||
"model": {
|
||||
"desc": "ChatGPTモデル",
|
||||
"list": {
|
||||
"gpt-3.5-turbo": "GPT 3.5",
|
||||
"gpt-3.5-turbo-16k": "GPT 3.5 (16K)",
|
||||
"gpt-4": "GPT 4",
|
||||
"gpt-4-32k": "GPT 4 (32K)"
|
||||
},
|
||||
"title": "モデル"
|
||||
},
|
||||
"presencePenalty": {
|
||||
"desc": "値が大きいほど、新しいトピックに展開する可能性が高くなります",
|
||||
"title": "トピックの新鮮さ"
|
||||
},
|
||||
"temperature": {
|
||||
"desc": "値が大きいほど、応答がよりランダムになります",
|
||||
"title": "ランダム性",
|
||||
"titleWithValue": "ランダム性 {{value}}"
|
||||
},
|
||||
"title": "モデル設定",
|
||||
"topP": {
|
||||
"desc": "ランダム性と同様ですが、ランダム性とは同時に変更しないでください",
|
||||
"title": "トップPサンプリング"
|
||||
}
|
||||
},
|
||||
"settingPlugin": {
|
||||
"add": "追加",
|
||||
"addTooltip": "カスタムプラグインを追加",
|
||||
"clearDeprecated": "無効なプラグインを削除",
|
||||
"config": "{{id}}プラグインの設定",
|
||||
"settings": "プラグインマーケットの設定",
|
||||
"title": "プラグインリスト"
|
||||
},
|
||||
"settingSystem": {
|
||||
"accessCode": {
|
||||
"desc": "管理者が暗号化アクセスを有効にしています",
|
||||
"placeholder": "アクセスコードを入力してください",
|
||||
"title": "アクセスコード"
|
||||
},
|
||||
"title": "システム設定"
|
||||
},
|
||||
"settingTTS": {
|
||||
"showAllLocaleVoice": {
|
||||
"desc": "关闭すると、現在の言語の音声のみが表示されます",
|
||||
"title": "すべての言語の音声を表示"
|
||||
},
|
||||
"sttService": {
|
||||
"desc": "ブラウザはブラウザのネイティブ音声認識サービスです",
|
||||
"title": "音声認識サービス"
|
||||
},
|
||||
"title": "音声サービス",
|
||||
"ttsService": {
|
||||
"desc": "OpenAIの音声合成サービスを使用する場合、OpenAIモデルサービスが有効になっていることを確認する必要があります",
|
||||
"title": "音声合成サービス"
|
||||
},
|
||||
"voice": {
|
||||
"title": "音声合成音声源",
|
||||
"desc": "現在のアシスタントに適した音声を選択します。異なるTTSサービスは異なる音声をサポートしています",
|
||||
"preview": "プレビュー"
|
||||
},
|
||||
"openai": {
|
||||
"sttModel": "OpenAI 音声認識モデル",
|
||||
"ttsModel": "OpenAI 音声合成モデル"
|
||||
},
|
||||
"stt": "音声認識設定",
|
||||
"sttLocale": {
|
||||
"desc": "音声入力の言語、このオプションを選択すると音声認識の精度が向上します",
|
||||
"title": "音声認識言語"
|
||||
},
|
||||
"sttPersisted": {
|
||||
"desc": "有効にすると、音声認識が自動的に終了せず、手動で終了ボタンをクリックする必要があります",
|
||||
"title": "音声認識の手動終了"
|
||||
},
|
||||
"tts": "音声合成設定",
|
||||
"sttAutoStop": {
|
||||
"desc": "オフにすると、音声認識が自動的に終了せず、手動で終了ボタンをクリックする必要があります",
|
||||
"title": "音声認識の自動終了"
|
||||
}
|
||||
},
|
||||
"settingTheme": {
|
||||
"avatar": {
|
||||
"title": "アバター"
|
||||
},
|
||||
"fontSize": {
|
||||
"desc": "チャットのテキストサイズ",
|
||||
"title": "フォントサイズ"
|
||||
},
|
||||
"lang": {
|
||||
"autoMode": "システムに従う",
|
||||
"title": "言語"
|
||||
},
|
||||
"neutralColor": {
|
||||
"desc": "異なる色調のグレースケールのカスタマイズ",
|
||||
"title": "中立色"
|
||||
},
|
||||
"primaryColor": {
|
||||
"desc": "カスタムテーマカラー",
|
||||
"title": "テーマカラー"
|
||||
},
|
||||
"themeMode": {
|
||||
"auto": "自動",
|
||||
"dark": "ダーク",
|
||||
"light": "ライト",
|
||||
"title": "テーマ"
|
||||
},
|
||||
"title": "テーマ設定"
|
||||
},
|
||||
"submitAgentModal": {
|
||||
"tooltips": "アシスタントマーケットに共有する",
|
||||
"button": "助手を提出する",
|
||||
"identifier": "識別子 エージェントの識別子",
|
||||
"metaMiss": "エージェント情報を入力してから提出してください。名前、説明、およびタグが必要です",
|
||||
"placeholder": "エージェントの識別子を入力してください。一意である必要があります。例:web-development"
|
||||
},
|
||||
"tab": {
|
||||
"agent": "デフォルトのアシスタント",
|
||||
"common": "一般設定",
|
||||
"llm": "言語モデル",
|
||||
"tts": "音声サービス"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"button": {
|
||||
"import": "設定をインポート",
|
||||
"start": "すぐに開始"
|
||||
},
|
||||
"header": "ようこそ",
|
||||
"pickAgent": "または以下のアシスタントテンプレートから選択してください",
|
||||
"skip": "作成をスキップ",
|
||||
"slogan": {
|
||||
"desc1": "脳のクラスターを開始し、思考の火花を引き起こします。あなたのスマートアシスタントは常にそこにあります。",
|
||||
"desc2": "最初のアシスタントを作成して、始めましょう〜",
|
||||
"title": "より賢い脳を自分に与える"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"agentDefaultMessage": "안녕하세요, 저는 **{{name}}**입니다. 바로 대화를 시작하거나 [도우미 설정](/chat/settings#session={{id}})으로 이동하여 제 정보를 완성할 수 있습니다.",
|
||||
"agentDefaultMessageWithSystemRole": "안녕하세요, 저는 **{{name}}**입니다. {{systemRole}}입니다. 대화를 시작해보세요!",
|
||||
"backToBottom": "최신 메시지 보기",
|
||||
"clearCurrentMessages": "현재 대화 지우기",
|
||||
"confirmClearCurrentMessages": "현재 대화를 지우시겠습니까? 지우면 복구할 수 없습니다. 작업을 확인하세요.",
|
||||
"confirmRemoveSessionItemAlert": "도우미를 삭제하시겠습니까? 삭제하면 복구할 수 없습니다. 작업을 확인하세요.",
|
||||
"defaultAgent": "사용자 정의 도우미",
|
||||
"defaultSession": "사용자 정의 도우미",
|
||||
"historyRange": "기록 범위",
|
||||
"inbox": {
|
||||
"defaultMessage": "안녕하세요, 저는 여러분의 인공지능 도우미입니다. 궁금한 점이 있으면 물어보세요. 더 전문적이거나 맞춤화된 도우미가 필요하다면 `+`를 클릭하여 사용자 정의 도우미를 생성할 수 있습니다.",
|
||||
"desc": "뇌 클러스터를 활성화하여 창의적인 생각을 이끌어내는 인공지능 도우미입니다. 모든 것에 대해 여기에서 대화하세요.",
|
||||
"title": "잡담하기"
|
||||
},
|
||||
"newAgent": "새 도우미 만들기",
|
||||
"noDescription": "설명 없음",
|
||||
"pin": "고정",
|
||||
"pinOff": "고정 해제",
|
||||
"regenerate": "재생성",
|
||||
"roleAndArchive": "역할 및 아카이브",
|
||||
"searchAgentPlaceholder": "도우미 및 대화 검색...",
|
||||
"send": "보내기",
|
||||
"sendPlaceholder": "대화 내용 입력...",
|
||||
"sessionList": "도우미 목록",
|
||||
"shareModal": {
|
||||
"download": "스크린샷 다운로드",
|
||||
"imageType": "이미지 형식",
|
||||
"screenshot": "스크린샷",
|
||||
"settings": "내보내기 설정",
|
||||
"shareToShareGPT": "ShareGPT 공유 링크 생성",
|
||||
"withBackground": "배경 이미지 포함",
|
||||
"withFooter": "푸터 포함",
|
||||
"withPluginInfo": "플러그인 정보 포함",
|
||||
"withSystemRole": "도우미 역할 포함"
|
||||
},
|
||||
"stop": "정지",
|
||||
"stt": {
|
||||
"action": "음성 입력",
|
||||
"loading": "인식 중...",
|
||||
"prettifying": "미화 중..."
|
||||
},
|
||||
"temp": "임시",
|
||||
"tokenDetail": "역할 설정: {{systemRoleToken}} · 대화 기록: {{chatsToken}}",
|
||||
"tokenTag": {
|
||||
"overload": "한도 초과",
|
||||
"remained": "남음",
|
||||
"used": "사용"
|
||||
},
|
||||
"topic": {
|
||||
"confirmRemoveTopic": "해당 주제를 삭제하시겠습니까? 삭제하면 복구할 수 없습니다. 신중하게 작업하세요.",
|
||||
"defaultTitle": "기본 주제",
|
||||
"saveCurrentMessages": "현재 대화를 주제로 저장",
|
||||
"searchPlaceholder": "주제 검색...",
|
||||
"deleteAll": "모든 주제 삭제",
|
||||
"deleteUnstarred": "스타가 없는 주제 삭제",
|
||||
"title": "주제 목록",
|
||||
"confirmRemoveAll": "모든 주제를 삭제하려고 합니다. 삭제 후에는 복구할 수 없으므로 신중하게 작업하십시오.",
|
||||
"confirmRemoveUnstarred": "스타를 지정하지 않은 주제를 삭제하려고 합니다. 삭제 후에는 복구할 수 없으므로 신중하게 작업하십시오.",
|
||||
"removeAll": "모든 주제 삭제",
|
||||
"removeUnstarred": "스타를 지정하지 않은 주제 삭제",
|
||||
"openNewTopic": "새로운 주제 열기"
|
||||
},
|
||||
"translate": {
|
||||
"clear": "번역 지우기",
|
||||
"action": "번역"
|
||||
},
|
||||
"translateTo": "번역",
|
||||
"tts": {
|
||||
"action": "음성 읽기",
|
||||
"clear": "음성 삭제"
|
||||
},
|
||||
"updateAgent": "도우미 정보 업데이트",
|
||||
"upload": {
|
||||
"actionTooltip": "이미지 업로드",
|
||||
"dragDesc": "여기로 파일을 끌어다 놓으세요. 여러 이미지를 업로드할 수 있습니다. Shift를 누른 채로 이미지를 직접 보내세요.",
|
||||
"dragTitle": "이미지 업로드"
|
||||
},
|
||||
"warp": "줄바꿈"
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"about": "소개",
|
||||
"advanceSettings": "고급 설정",
|
||||
"agentMaxToken": "세션 최대 길이",
|
||||
"agentModel": "모델",
|
||||
"agentProfile": "에이전트 정보",
|
||||
"appInitializing": "LobeChat이 시작 중입니다. 잠시 기다려주세요...",
|
||||
"archive": "보관",
|
||||
"autoGenerate": "자동 생성",
|
||||
"autoGenerateTooltip": "힌트 단어를 기반으로 에이전트 설명을 자동으로 생성합니다.",
|
||||
"cancel": "취소",
|
||||
"changelog": "변경 내역",
|
||||
"close": "닫기",
|
||||
"confirmRemoveSessionItemAlert": "에이전트를 삭제하려고 합니다. 삭제 후에는 복구할 수 없습니다. 작업을 확인하세요.",
|
||||
"copy": "복사",
|
||||
"copySuccess": "복사 완료",
|
||||
"defaultAgent": "기본 에이전트",
|
||||
"defaultSession": "기본 세션",
|
||||
"delete": "삭제",
|
||||
"edit": "편집",
|
||||
"export": "설정 내보내기",
|
||||
"exportType": {
|
||||
"agent": "에이전트 설정 내보내기",
|
||||
"agentWithMessage": "에이전트 및 메시지 내보내기",
|
||||
"all": "전역 설정 및 모든 에이전트 데이터 내보내기",
|
||||
"allAgent": "모든 에이전트 설정 내보내기",
|
||||
"allAgentWithMessage": "모든 에이전트 및 메시지 내보내기",
|
||||
"globalSetting": "전역 설정 내보내기"
|
||||
},
|
||||
"feedback": "피드백",
|
||||
"historyRange": "기록 범위",
|
||||
"import": "설정 가져오기",
|
||||
"lang": {
|
||||
"en": "영어",
|
||||
"en-US": "영어",
|
||||
"ja-JP": "일본어",
|
||||
"ko-KR": "한국어",
|
||||
"ru-RU": "러시아어",
|
||||
"zh": "중국어 간체",
|
||||
"zh-CN": "중국어 간체",
|
||||
"zh-TW": "중국어 번체"
|
||||
},
|
||||
"layoutInitializing": "레이아웃을 로드 중입니다...",
|
||||
"noDescription": "설명 없음",
|
||||
"ok": "확인",
|
||||
"password": "비밀번호",
|
||||
"pin": "고정",
|
||||
"pinOff": "고정 해제",
|
||||
"regenerate": "재생성",
|
||||
"rename": "이름 변경",
|
||||
"reset": "재설정",
|
||||
"retry": "재시도",
|
||||
"send": "보내기",
|
||||
"sessionList": "에이전트 목록",
|
||||
"setting": "설정",
|
||||
"share": "공유",
|
||||
"stop": "중지",
|
||||
"tab": {
|
||||
"chat": "채팅",
|
||||
"market": "탐색",
|
||||
"setting": "설정"
|
||||
},
|
||||
"temp": "임시",
|
||||
"updateAgent": "에이전트 정보 업데이트",
|
||||
"upgradeVersion": {
|
||||
"action": "지금 업그레이드",
|
||||
"hasNew": "사용 가능한 업데이트가 있습니다",
|
||||
"newVersion": "새 버전 사용 가능: {{version}}"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"topic": {
|
||||
"desc": "현재 대화를 히스토리 토픽으로 저장하고 새로운 대화를 시작하려면 왼쪽 버튼을 클릭하세요.",
|
||||
"title": "토픽 목록"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"pluginSettings": {
|
||||
"desc": "다음 구성을 완료하면 플러그인을 사용할 수 있습니다.",
|
||||
"title": "{{name}} 플러그인 설정"
|
||||
},
|
||||
"response": {
|
||||
"400": "죄송합니다. 서버가 요청을 이해하지 못했습니다. 요청 매개변수가 올바른지 확인해주세요.",
|
||||
"401": "죄송합니다. 서버가 요청을 거부했습니다. 권한이 부족하거나 유효한 인증 정보를 제공하지 않았을 수 있습니다.",
|
||||
"403": "죄송합니다. 서버가 요청을 거부했습니다. 이 콘텐츠에 대한 액세스 권한이 없습니다.",
|
||||
"404": "죄송합니다. 서버가 요청한 페이지나 리소스를 찾을 수 없습니다. URL이 올바른지 확인해주세요.",
|
||||
"405": "죄송합니다. 서버가 사용한 요청 메서드를 지원하지 않습니다. 요청 메서드가 올바른지 확인해주세요.",
|
||||
"429": "죄송합니다. 요청이 너무 많아 서버가 약간 지친 상태입니다. 잠시 후에 다시 시도해주세요.",
|
||||
"500": "죄송합니다. 서버에 문제가 발생하여 요청을 완료할 수 없습니다. 잠시 후에 다시 시도해주세요.",
|
||||
"502": "죄송합니다. 서버가 잠시 서비스를 제공할 수 없는 상태입니다. 잠시 후에 다시 시도해주세요.",
|
||||
"503": "죄송합니다. 서버가 현재 요청을 처리할 수 없습니다. 과부하 또는 유지 보수 중일 수 있습니다. 잠시 후에 다시 시도해주세요.",
|
||||
"504": "죄송합니다. 서버가 상위 서버의 응답을 기다리지 못했습니다. 잠시 후에 다시 시도해주세요.",
|
||||
"PluginMarketIndexNotFound": "죄송합니다. 서버에서 플러그인 인덱스를 찾을 수 없습니다. 인덱스 주소가 올바른지 확인해주세요.",
|
||||
"PluginMarketIndexInvalid": "죄송합니다. 플러그인 인덱스 유효성 검사에 실패했습니다. 인덱스 파일 형식이 올바른지 확인해주세요.",
|
||||
"PluginMetaNotFound": "죄송합니다. 인덱스에서 해당 플러그인을 찾을 수 없습니다. 플러그인의 구성 정보를 인덱스에서 확인해주세요.",
|
||||
"PluginMetaInvalid": "죄송합니다. 해당 플러그인의 메타 정보 유효성 검사에 실패했습니다. 플러그인 메타 정보 형식이 올바른지 확인해주세요.",
|
||||
"PluginManifestNotFound": "죄송합니다. 서버에서 해당 플러그인의 설명서 (manifest.json)를 찾을 수 없습니다. 플러그인 설명 파일 주소가 올바른지 확인해주세요.",
|
||||
"PluginManifestInvalid": "죄송합니다. 해당 플러그인의 설명서 유효성 검사에 실패했습니다. 설명서 형식이 올바른지 확인해주세요.",
|
||||
"PluginApiNotFound": "죄송합니다. 플러그인 설명서에 해당 API가 없습니다. 요청 메서드와 플러그인 설명서 API가 일치하는지 확인해주세요.",
|
||||
"PluginApiParamsError": "죄송합니다. 플러그인 요청의 입력 매개변수 유효성 검사에 실패했습니다. 입력 매개변수와 API 설명 정보가 일치하는지 확인해주세요.",
|
||||
"PluginSettingsInvalid": "플러그인을 사용하려면 올바른 구성이 필요합니다. 구성이 올바른지 확인해주세요.",
|
||||
"PluginServerError": "플러그인 서버 요청이 오류로 반환되었습니다. 플러그인 설명 파일, 플러그인 구성 또는 서버 구현을 확인해주세요.",
|
||||
"InvalidAccessCode": "암호가 올바르지 않거나 비어 있습니다. 올바른 액세스 암호를 입력하거나 사용자 지정 OpenAI API 키를 추가해주세요.",
|
||||
"OpenAIBizError": "OpenAI 서비스 요청 중 오류가 발생했습니다. 아래 정보를 확인하고 문제를 해결하거나 다시 시도해주세요.",
|
||||
"NoAPIKey": "OpenAI API 키가 비어 있습니다. 사용자 정의 OpenAI API 키를 추가해주세요."
|
||||
},
|
||||
"stt": {
|
||||
"responseError": "서비스 요청이 실패했습니다. 구성을 확인하거나 다시 시도해주세요."
|
||||
},
|
||||
"tts": {
|
||||
"responseError": "서비스 요청이 실패했습니다. 구성을 확인하거나 다시 시도해주세요."
|
||||
},
|
||||
"unlock": {
|
||||
"apikey": {
|
||||
"title": "사용자 정의 API 키 사용",
|
||||
"description": "OpenAI API 키를 입력하면 대화를 시작할 수 있습니다. 애플리케이션은 API 키를 기록하지 않습니다.",
|
||||
"addProxyUrl": "OpenAI 프록시 주소 추가하기 (선택 사항)"
|
||||
},
|
||||
"closeMessage": "알림 닫기",
|
||||
"confirm": "확인 및 다시 시도",
|
||||
"password": {
|
||||
"description": "관리자가 애플리케이션 암호화를 활성화했습니다. 애플리케이션을 잠금 해제하려면 애플리케이션 비밀번호를 입력하십시오. 비밀번호는 한 번만 입력하면 됩니다.",
|
||||
"title": "암호 입력하여 애플리케이션 잠금 해제",
|
||||
"placeholder": "비밀번호를 입력하세요"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"addAgent": "보조 프로그램 추가",
|
||||
"guide": {
|
||||
"func1": {
|
||||
"desc1": "세션 창에서 오른쪽 상단 설정으로 이동하여 도우미를 제출할 설정 페이지로 이동합니다.",
|
||||
"desc2": "도우미 마켓에 제출 버튼을 클릭합니다.",
|
||||
"tag": "방법 1",
|
||||
"title": "LobeChat을 통해 제출하기"
|
||||
},
|
||||
"func2": {
|
||||
"button": "Github 도우미 저장소로 이동",
|
||||
"desc": "도우미를 색인에 추가하려면 agent-template.json 또는 agent-template-full.json을 사용하여 plugins 디렉토리에 항목을 작성하고 간단한 설명과 적절한 태그를 추가한 다음 풀 리퀘스트를 생성하십시오.",
|
||||
"tag": "방법 2",
|
||||
"title": "Github을 통해 제출하기"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "보조 프로그램 이름, 설명 또는 키워드 검색..."
|
||||
},
|
||||
"sidebar": {
|
||||
"comment": "의견",
|
||||
"prompt": "프롬프트",
|
||||
"title": "보조 프로그램 세부 정보"
|
||||
},
|
||||
"submitAgent": "보조 프로그램 제출",
|
||||
"title": {
|
||||
"allAgents": "모든 보조 프로그램",
|
||||
"recentSubmits": "최근 추가"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
{
|
||||
"debug": {
|
||||
"arguments": "함수 호출 인수",
|
||||
"function_call": "함수 호출",
|
||||
"response": "응답",
|
||||
"off": "디버그 끄기",
|
||||
"on": "플러그인 호출 정보 보기"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "로컬 플러그인을 삭제하시겠습니까? 삭제 후에는 복구할 수 없습니다.",
|
||||
"deleteSuccess": "플러그인이 성공적으로 삭제되었습니다.",
|
||||
"manifest": {
|
||||
"identifier": {
|
||||
"desc": "플러그인의 고유 식별자",
|
||||
"label": "식별자"
|
||||
},
|
||||
"mode": {
|
||||
"local": "시각적 구성",
|
||||
"local-tooltip": "시각적 구성은 일시적으로 지원되지 않습니다.",
|
||||
"url": "온라인 링크"
|
||||
},
|
||||
"name": {
|
||||
"desc": "플러그인 제목",
|
||||
"label": "제목",
|
||||
"placeholder": "검색 엔진"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"author": {
|
||||
"desc": "플러그인 작성자",
|
||||
"label": "작성자"
|
||||
},
|
||||
"avatar": {
|
||||
"desc": "플러그인 아이콘으로는 Emoji 또는 URL을 사용할 수 있습니다.",
|
||||
"label": "아이콘"
|
||||
},
|
||||
"description": {
|
||||
"desc": "플러그인 설명",
|
||||
"label": "설명",
|
||||
"placeholder": "검색 엔진에서 정보 가져오기"
|
||||
},
|
||||
"formFieldRequired": "이 필드는 필수 입력 사항입니다.",
|
||||
"homepage": {
|
||||
"desc": "플러그인 홈페이지",
|
||||
"label": "홈페이지"
|
||||
},
|
||||
"identifier": {
|
||||
"desc": "플러그인의 고유 식별자는 manifest에서 자동으로 인식됩니다.",
|
||||
"errorDuplicate": "식별자가 이미 있는 플러그인과 중복되었습니다. 식별자를 수정해주세요.",
|
||||
"label": "식별자",
|
||||
"pattenErrorMessage": "영문자, 숫자, - 및 _만 입력할 수 있습니다."
|
||||
},
|
||||
"manifest": {
|
||||
"desc": "LobeChat은 이 링크를 통해 플러그인을 설치합니다.",
|
||||
"jsonInvalid": "manifest가 규칙에 맞지 않습니다. 유효성 검사 결과: \n\n {{error}}",
|
||||
"label": "플러그인 설명 파일 URL 주소",
|
||||
"preview": "Manifest 미리보기",
|
||||
"refresh": "새로 고침",
|
||||
"requestError": "이 링크를 요청하는 중에 오류가 발생했습니다. 유효한 링크를 입력하고 링크가 크로스 도메인 액세스를 허용하는지 확인해주세요.",
|
||||
"urlError": "이 링크는 JSON 형식의 내용을 반환하지 않습니다. 유효한 링크를 입력해주세요."
|
||||
},
|
||||
"title": {
|
||||
"desc": "플러그인 제목",
|
||||
"label": "제목",
|
||||
"placeholder": "검색 엔진"
|
||||
}
|
||||
},
|
||||
"metaConfig": "플러그인 메타 정보 구성",
|
||||
"modalDesc": "사용자 정의 플러그인을 추가하면 플러그인 개발 검증 및 세션에서 직접 사용할 수 있습니다. 플러그인 개발 문서는 참조해주세요.",
|
||||
"preview": {
|
||||
"card": "플러그인 미리보기",
|
||||
"desc": "플러그인 설명 미리보기",
|
||||
"title": "플러그인 이름 미리보기"
|
||||
},
|
||||
"save": "저장",
|
||||
"saveSuccess": "플러그인 설정이 성공적으로 저장되었습니다.",
|
||||
"tabs": {
|
||||
"manifest": "기능 설명 목록 (Manifest)",
|
||||
"meta": "플러그인 메타 정보"
|
||||
},
|
||||
"title": "사용자 정의 플러그인 추가",
|
||||
"update": "업데이트",
|
||||
"updateSuccess": "플러그인 설정이 성공적으로 업데이트되었습니다."
|
||||
},
|
||||
"list": {
|
||||
"item": {
|
||||
"deprecated.title": "삭제됨",
|
||||
"local.config": "구성",
|
||||
"local.title": "사용자 정의"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"plugin": "플러그인 실행 중...",
|
||||
"content": "플러그인 호출 중..."
|
||||
},
|
||||
"pluginList": "플러그인 목록",
|
||||
"plugins": {
|
||||
"unknown": "플러그인 검사 중..."
|
||||
},
|
||||
"setting": "플러그인 설정",
|
||||
"settings": {
|
||||
"indexUrl": {
|
||||
"title": "마켓 인덱스",
|
||||
"tooltip": "온라인 편집은 지원되지 않습니다. 배포 환경 변수를 통해 설정해주세요."
|
||||
},
|
||||
"modalDesc": "플러그인 마켓의 주소를 구성하면 사용자 정의 플러그인 마켓을 사용할 수 있습니다.",
|
||||
"title": "플러그인 마켓 설정"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,276 @@
|
||||
{
|
||||
"danger": {
|
||||
"clear": {
|
||||
"action": "지금 지우기",
|
||||
"confirm": "모든 채팅 데이터를 지우시겠습니까?",
|
||||
"desc": "모든 대화 데이터를 지웁니다.",
|
||||
"success": "모든 대화 메시지가 지워졌습니다.",
|
||||
"title": "모든 대화 메시지 지우기"
|
||||
},
|
||||
"reset": {
|
||||
"action": "지금 재설정",
|
||||
"confirm": "모든 설정을 재설정하시겠습니까?",
|
||||
"currentVersion": "현재 버전",
|
||||
"desc": "모든 설정 항목을 기본값으로 재설정합니다.",
|
||||
"title": "모든 설정 재설정"
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"global": "전역 설정",
|
||||
"session": "세션 설정",
|
||||
"sessionWithName": "세션 설정 · {{name}}"
|
||||
},
|
||||
"llm": {
|
||||
"AzureOpenAI": {
|
||||
"endpoint": {
|
||||
"desc": "Azure 포털에서 리소스를 확인할 때 이 값을 '키 및 엔드포인트' 섹션에서 찾을 수 있습니다.",
|
||||
"placeholder": "https://docs-test-001.openai.azure.com",
|
||||
"title": "Azure API 주소"
|
||||
},
|
||||
"models": {
|
||||
"desc": "지원되는 모델",
|
||||
"title": "모델 목록"
|
||||
},
|
||||
"title": "Azure OpenAI 설정",
|
||||
"token": {
|
||||
"desc": "Azure 포털에서 리소스를 확인할 때 이 값을 '키 및 엔드포인트' 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.",
|
||||
"placeholder": "Azure API 키",
|
||||
"title": "API 키"
|
||||
}
|
||||
},
|
||||
"OpenAI": {
|
||||
"azureApiVersion": {
|
||||
"desc": "Azure의 API 버전입니다. YYYY-MM-DD 형식을 따릅니다. [최신 버전](https://learn.microsoft.com/ko-kr/azure/ai-services/openai/reference#chat-completions)을 확인하세요.",
|
||||
"fetch": "목록 가져오기",
|
||||
"title": "Azure API 버전"
|
||||
},
|
||||
"check": {
|
||||
"button": "확인",
|
||||
"desc": "API 키와 프록시 주소가 올바르게 입력되었는지 테스트합니다.",
|
||||
"pass": "확인 완료",
|
||||
"title": "연결성 확인"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "기본 주소 외에도 반드시 http(s)://를 포함해야 합니다.",
|
||||
"placeholder": "https://api.openai.com/v1",
|
||||
"title": "인터페이스 프록시 주소"
|
||||
},
|
||||
"models": {
|
||||
"count": "총 {{count}}개의 모델 지원",
|
||||
"desc": "지원되는 모델",
|
||||
"fetch": "모델 목록 가져오기",
|
||||
"notSupport": "Azure OpenAI에서 모델 목록을 볼 수 없습니다.",
|
||||
"notSupportTip": "배포 이름과 모델 이름이 일치하는지 확인해야 합니다.",
|
||||
"refetch": "모델 목록 다시 가져오기",
|
||||
"title": "모델 목록"
|
||||
},
|
||||
"title": "OpenAI 설정",
|
||||
"token": {
|
||||
"desc": "자체 OpenAI 키 사용",
|
||||
"placeholder": "OpenAI API 키",
|
||||
"title": "API 키"
|
||||
},
|
||||
"useAzure": {
|
||||
"desc": "Azure에서 제공하는 OpenAI 서비스 사용",
|
||||
"fetch": "목록 가져오기",
|
||||
"serverConfig": "관리자가 서버에서 Azure OpenAI를 구성했으므로 변경이 금지되었습니다.",
|
||||
"title": "Azure OpenAI"
|
||||
},
|
||||
"customModelName": {
|
||||
"desc": "사용자 정의 모델 추가, 여러 모델은 쉼표(,)로 구분합니다",
|
||||
"placeholder": "model1,model2,model3",
|
||||
"title": "사용자 정의 모델 이름"
|
||||
}
|
||||
},
|
||||
"waitingForMore": "더 많은 모델이 <1>계획 중</1>에 있으니 기대해주세요 ✨"
|
||||
},
|
||||
"settingAgent": {
|
||||
"avatar": {
|
||||
"title": "아바타"
|
||||
},
|
||||
"backgroundColor": {
|
||||
"title": "배경색"
|
||||
},
|
||||
"description": {
|
||||
"placeholder": "도우미 설명을 입력하세요.",
|
||||
"title": "도우미 설명"
|
||||
},
|
||||
"name": {
|
||||
"placeholder": "도우미 이름을 입력하세요.",
|
||||
"title": "이름"
|
||||
},
|
||||
"prompt": {
|
||||
"placeholder": "역할 프롬프트 힌트를 입력하세요.",
|
||||
"title": "역할 설정"
|
||||
},
|
||||
"tag": {
|
||||
"placeholder": "태그를 입력하세요.",
|
||||
"title": "태그"
|
||||
},
|
||||
"title": "도우미 정보"
|
||||
},
|
||||
"settingChat": {
|
||||
"chatStyleType": {
|
||||
"title": "채팅 창 스타일",
|
||||
"type": {
|
||||
"chat": "대화 모드",
|
||||
"docs": "문서 모드"
|
||||
}
|
||||
},
|
||||
"compressThreshold": {
|
||||
"desc": "압축되지 않은 이전 메시지가이 값보다 크면 압축됩니다.",
|
||||
"title": "압축 임계값"
|
||||
},
|
||||
"enableCompressThreshold": {
|
||||
"title": "이전 메시지 길이 압축 사용"
|
||||
},
|
||||
"enableHistoryCount": {
|
||||
"alias": "제한 없음",
|
||||
"limited": "대화 메시지 {{number}} 개만 포함",
|
||||
"title": "대화 메시지 제한",
|
||||
"unlimited": "대화 메시지 제한 없음"
|
||||
},
|
||||
"historyCount": {
|
||||
"desc": "요청당 포함되는 이전 메시지 수",
|
||||
"title": "포함된 이전 메시지 수"
|
||||
},
|
||||
"inputTemplate": {
|
||||
"desc": "사용자의 최신 메시지가이 템플릿에 채워집니다.",
|
||||
"placeholder": "사전 처리 템플릿 {{text}}은(는) 실시간 입력 정보로 대체됩니다.",
|
||||
"title": "사용자 입력 사전 처리"
|
||||
},
|
||||
"title": "채팅 설정"
|
||||
},
|
||||
"settingModel": {
|
||||
"enableMaxTokens": {
|
||||
"title": "단일 응답 제한 사용"
|
||||
},
|
||||
"frequencyPenalty": {
|
||||
"desc": "값이 클수록 반복 단어가 줄어듭니다.",
|
||||
"title": "빈도 패널티"
|
||||
},
|
||||
"maxTokens": {
|
||||
"desc": "단일 상호 작용에 사용되는 최대 토큰 수",
|
||||
"title": "단일 응답 제한"
|
||||
},
|
||||
"model": {
|
||||
"desc": "ChatGPT 모델",
|
||||
"list": {
|
||||
"gpt-3.5-turbo": "GPT 3.5",
|
||||
"gpt-3.5-turbo-16k": "GPT 3.5 (16K)",
|
||||
"gpt-4": "GPT 4",
|
||||
"gpt-4-32k": "GPT 4 (32K)"
|
||||
},
|
||||
"title": "모델"
|
||||
},
|
||||
"presencePenalty": {
|
||||
"desc": "값이 클수록 새로운 주제로 확장될 가능성이 높아집니다.",
|
||||
"title": "주제 신선도"
|
||||
},
|
||||
"temperature": {
|
||||
"desc": "값이 클수록 응답이 더 무작위 해집니다.",
|
||||
"title": "랜덤성",
|
||||
"titleWithValue": "랜덤성 {{value}}"
|
||||
},
|
||||
"title": "모델 설정",
|
||||
"topP": {
|
||||
"desc": "랜덤성과 유사하지만 함께 변경하지 마십시오.",
|
||||
"title": "상위 P 샘플링"
|
||||
}
|
||||
},
|
||||
"settingPlugin": {
|
||||
"add": "추가",
|
||||
"addTooltip": "사용자 정의 플러그인 추가",
|
||||
"clearDeprecated": "사용되지 않는 플러그인 제거",
|
||||
"config": "{{id}} 플러그인 구성",
|
||||
"settings": "플러그인 마켓 설정",
|
||||
"title": "플러그인 목록"
|
||||
},
|
||||
"settingSystem": {
|
||||
"accessCode": {
|
||||
"desc": "관리자가 암호 액세스를 활성화했습니다.",
|
||||
"placeholder": "액세스 코드를 입력하세요.",
|
||||
"title": "액세스 코드"
|
||||
},
|
||||
"title": "시스템 설정"
|
||||
},
|
||||
"settingTTS": {
|
||||
"showAllLocaleVoice": {
|
||||
"desc": "현재 언어의 음성만 표시하려면 닫으십시오",
|
||||
"title": "모든 언어 음성 표시"
|
||||
},
|
||||
"sttService": {
|
||||
"desc": "브라우저는 브라우저 기본 음성 인식 서비스입니다",
|
||||
"title": "음성 인식 서비스"
|
||||
},
|
||||
"title": "음성 서비스",
|
||||
"ttsService": {
|
||||
"desc": "OpenAI 음성 합성 서비스를 사용하는 경우 OpenAI 모델 서비스가 열려 있어야 합니다",
|
||||
"title": "음성 합성 서비스"
|
||||
},
|
||||
"voice": {
|
||||
"title": "음성 합성 음성",
|
||||
"desc": "현재 어시스턴트에 대한 음성을 선택하십시오. 각기 다른 TTS 서비스는 다른 음성을 지원합니다.",
|
||||
"preview": "프리뷰 음성"
|
||||
},
|
||||
"openai": {
|
||||
"sttModel": "OpenAI 음성 인식 모델",
|
||||
"ttsModel": "OpenAI 음성 합성 모델"
|
||||
},
|
||||
"stt": "음성 인식 설정",
|
||||
"sttLocale": {
|
||||
"desc": "음성 입력의 언어, 이 옵션을 통해 음성 인식 정확도를 높일 수 있습니다.",
|
||||
"title": "음성 인식 언어"
|
||||
},
|
||||
"sttPersisted": {
|
||||
"desc": "활성화하면 음성 인식이 자동으로 종료되지 않고, 수동으로 종료 버튼을 클릭해야 합니다.",
|
||||
"title": "음성 인식 수동 종료"
|
||||
},
|
||||
"tts": "음성 합성 설정",
|
||||
"sttAutoStop": {
|
||||
"desc": "자동으로 종료되지 않고 수동으로 종료 버튼을 클릭해야 하는 음성 인식을 사용하지 않습니다.",
|
||||
"title": "음성 인식 자동 종료"
|
||||
}
|
||||
},
|
||||
"settingTheme": {
|
||||
"avatar": {
|
||||
"title": "아바타"
|
||||
},
|
||||
"fontSize": {
|
||||
"desc": "채팅 콘텐츠의 글꼴 크기",
|
||||
"title": "글꼴 크기"
|
||||
},
|
||||
"lang": {
|
||||
"autoMode": "시스템에 따름",
|
||||
"title": "언어"
|
||||
},
|
||||
"neutralColor": {
|
||||
"desc": "다양한 색상 경향의 중립적인 사용자 정의",
|
||||
"title": "중립 색상"
|
||||
},
|
||||
"primaryColor": {
|
||||
"desc": "사용자 정의 테마 색상",
|
||||
"title": "테마 색상"
|
||||
},
|
||||
"themeMode": {
|
||||
"auto": "자동",
|
||||
"dark": "다크",
|
||||
"light": "라이트",
|
||||
"title": "테마"
|
||||
},
|
||||
"title": "테마 설정"
|
||||
},
|
||||
"submitAgentModal": {
|
||||
"tooltips": "도우미 마켓에 공유",
|
||||
"button": "도우미 제출",
|
||||
"identifier": "식별자 도우미 식별자",
|
||||
"metaMiss": "도우미 정보를 입력한 후 제출하세요. 이름, 설명 및 태그를 포함해야 합니다.",
|
||||
"placeholder": "도우미의 식별자를 입력하세요. 고유해야 하며, 예를 들어 web-development과 같은 형식이어야 합니다."
|
||||
},
|
||||
"tab": {
|
||||
"agent": "기본 도우미",
|
||||
"common": "일반 설정",
|
||||
"llm": "언어 모델",
|
||||
"tts": "음성 서비스"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"button": {
|
||||
"import": "구성 가져오기",
|
||||
"start": "지금 시작"
|
||||
},
|
||||
"header": "환영합니다",
|
||||
"pickAgent": "또는 다음 도우미 템플릿 중 하나를 선택하세요",
|
||||
"skip": "생성 건너뛰기",
|
||||
"slogan": {
|
||||
"desc1": "뇌 클러스터를 시작하여 아이디어를 자극하세요. 당신의 지능형 어시스턴트가 항상 여기에 있습니다.",
|
||||
"desc2": "첫 번째 어시스턴트를 만들어 보세요. 시작해 봅시다~",
|
||||
"title": "더 똑똑한 뇌를 위해 스스로에게 선물하세요"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"agentDefaultMessage": "Привет, я **{{name}}**, ты можешь начать разговор со мной прямо сейчас или перейти к [настройкам помощника](/chat/settings#session={{id}}), чтобы улучшить мою информацию.",
|
||||
"agentDefaultMessageWithSystemRole": "Привет, я **{{name}}**, {{systemRole}}, давай начнем разговор!",
|
||||
"backToBottom": "К последнему сообщению",
|
||||
"clearCurrentMessages": "Очистить текущий разговор",
|
||||
"confirmClearCurrentMessages": "Вы собираетесь очистить текущий разговор, после этого его нельзя будет восстановить. Подтвердите свое действие.",
|
||||
"confirmRemoveSessionItemAlert": "Вы собираетесь удалить этого помощника, после этого его нельзя будет восстановить. Подтвердите свое действие.",
|
||||
"defaultAgent": "Пользовательский помощник",
|
||||
"defaultSession": "Пользовательский помощник",
|
||||
"historyRange": "История сообщений",
|
||||
"inbox": {
|
||||
"defaultMessage": "Привет, я твой интеллектуальный помощник. Ты можешь задать мне любой вопрос, и я постараюсь ответить на него. Если тебе нужен более профессиональный или настроенный помощник, нажми на `+`, чтобы создать пользовательского помощника.",
|
||||
"desc": "Включи кластер мозгов и разгори искру мысли. Твой интеллектуальный помощник, готовый общаться о всем здесь",
|
||||
"title": "Просто поболтаем"
|
||||
},
|
||||
"newAgent": "Создать помощника",
|
||||
"noDescription": "Нет описания",
|
||||
"pin": "Закрепить",
|
||||
"pinOff": "Открепить",
|
||||
"regenerate": "Сгенерировать заново",
|
||||
"roleAndArchive": "Роль и архив",
|
||||
"searchAgentPlaceholder": "Поиск помощников и разговоров...",
|
||||
"send": "Отправить",
|
||||
"sendPlaceholder": "Введите текст сообщения...",
|
||||
"sessionList": "Список помощников",
|
||||
"shareModal": {
|
||||
"download": "Скачать скриншот",
|
||||
"imageType": "Тип изображения",
|
||||
"screenshot": "Скриншот",
|
||||
"settings": "Настройки экспорта",
|
||||
"shareToShareGPT": "Создать ссылку ShareGPT для обмена",
|
||||
"withBackground": "С фоновым изображением",
|
||||
"withFooter": "С нижним колонтитулом",
|
||||
"withPluginInfo": "С информацией о плагине",
|
||||
"withSystemRole": "С указанием роли помощника"
|
||||
},
|
||||
"stop": "Остановить",
|
||||
"stt": {
|
||||
"action": "Голосовой ввод",
|
||||
"loading": "Идет распознавание...",
|
||||
"prettifying": "Форматирование..."
|
||||
},
|
||||
"temp": "Временный",
|
||||
"tokenDetail": "Роль помощника: {{systemRoleToken}} · История сообщений: {{chatsToken}}",
|
||||
"tokenTag": {
|
||||
"overload": "Превышение лимита",
|
||||
"remained": "Осталось",
|
||||
"used": "Использовано"
|
||||
},
|
||||
"topic": {
|
||||
"confirmRemoveTopic": "Вы собираетесь удалить эту тему, после этого ее нельзя будет восстановить. Подтвердите свое действие.",
|
||||
"defaultTitle": "Стандартная тема",
|
||||
"saveCurrentMessages": "Сохранить текущий разговор как тему",
|
||||
"searchPlaceholder": "Поиск темы...",
|
||||
"deleteAll": "Удалить все темы",
|
||||
"deleteUnstarred": "Удалить неотмеченные темы",
|
||||
"title": "Список тем",
|
||||
"confirmRemoveAll": "Вы собираетесь удалить все темы. После удаления их будет невозможно восстановить. Пожалуйста, будьте осторожны.",
|
||||
"confirmRemoveUnstarred": "Вы собираетесь удалить неотмеченные темы. После удаления их будет невозможно восстановить. Пожалуйста, будьте осторожны.",
|
||||
"removeAll": "Удалить все темы",
|
||||
"removeUnstarred": "Удалить неотмеченные темы",
|
||||
"openNewTopic": "Открыть новую тему"
|
||||
},
|
||||
"translate": {
|
||||
"clear": "Очистить перевод",
|
||||
"action": "перевести"
|
||||
},
|
||||
"translateTo": "Перевести на",
|
||||
"tts": {
|
||||
"action": "воспроизвести речь",
|
||||
"clear": "очистить речь"
|
||||
},
|
||||
"updateAgent": "Обновить информацию о помощнике",
|
||||
"upload": {
|
||||
"actionTooltip": "Загрузить изображение",
|
||||
"dragDesc": "Перетащите файлы сюда, поддерживается загрузка нескольких изображений. Удерживайте клавишу Shift для прямой отправки изображений",
|
||||
"dragTitle": "Загрузить изображение"
|
||||
},
|
||||
"warp": "Перенос строки"
|
||||
}
|
||||
+17
-44
@@ -1,21 +1,17 @@
|
||||
{
|
||||
"about": "Наш Github",
|
||||
"advanceSettings": "Дополнительные настройки",
|
||||
"agentDefaultMessage": "Здравствуйте, я **{{name}}**. Вы можете начать общаться со мной прямо сейчас или перейти на [Assistant Settings](/chat/settings#session={{id}}) для моей настройки.",
|
||||
"agentDefaultMessageWithSystemRole": "Здравствуйте, Я **{{name}}**, {{systemRole}}. Давайте начнем общаться!",
|
||||
"agentMaxToken": "Максимальная длина запроса",
|
||||
"agentDefaultMessage": "Здравствуйте, я **{{name}}**. Вы можете начать общаться со мной прямо сейчас или перейти на [Agent Settings](/chat/settings#session={{id}}) для моей настройки.",
|
||||
"agentMaxToken": "Максимальная длина сессии",
|
||||
"agentModel": "Модель",
|
||||
"agentProfile": "Информация о помощнике",
|
||||
"appInitializing": "LobeChat запускается, пожалуйста, подождите...",
|
||||
"archive": "Архив",
|
||||
"autoGenerate": "Автогенерация",
|
||||
"autoGenerateTooltip": "Автогенерация описания помощника на основе подсказок",
|
||||
"backToBottom": "Перейти к последним сообщениям",
|
||||
"cancel": "Отмена",
|
||||
"changelog": "Журнал изменений",
|
||||
"clearCurrentMessages": "Очистить сообщения текущего сеанса",
|
||||
"close": "Закрывать",
|
||||
"confirmClearCurrentMessages": "Вы собираетесь удалить сообщения текущего сеанса? После очистки их невозможно восстановить. Пожалуйста, подтвердите вашу операцию.",
|
||||
"confirmRemoveSessionItemAlert": "Вы собираетесь удалить этого помощника? После удаления его невозможно восстановить. Пожалуйста, подтвердите вашу операцию.",
|
||||
"copy": "Копировать",
|
||||
"copySuccess": "Скопировано",
|
||||
@@ -35,16 +31,17 @@
|
||||
"feedback": "Обратная связь",
|
||||
"historyRange": "Исторический диапазон",
|
||||
"import": "Импорт конфига",
|
||||
"inbox": {
|
||||
"defaultMessage": "Hello, I'm your intelligent assistant. You can ask me any questions and I will do my best to answer you. If you need a more professional or customized assistant, you can click `+` to create a custom assistant.",
|
||||
"desc": "Activate the brain cluster and spark your thinking. Your intelligent assistant is here to communicate with you about everything.",
|
||||
"title": "Chat Freely"
|
||||
"lang": {
|
||||
"en": "Английский",
|
||||
"en-US": "Английский",
|
||||
"ja-JP": "Японский",
|
||||
"ko-KR": "Корейский",
|
||||
"ru-RU": "Русский",
|
||||
"zh": "Китайский (упрощенный)",
|
||||
"zh-CN": "Китайский (упрощенный)",
|
||||
"zh-TW": "Китайский (традиционный)"
|
||||
},
|
||||
"message": {
|
||||
"function_loading": "Запрос плагина в процессе..."
|
||||
},
|
||||
"moreSetting": "Больше настроек...",
|
||||
"newAgent": "Новый ассистент",
|
||||
"layoutInitializing": "Идет загрузка макета...",
|
||||
"noDescription": "Нет описания",
|
||||
"ok": "ОК",
|
||||
"password": "пароль",
|
||||
@@ -54,24 +51,10 @@
|
||||
"rename": "Переименовать",
|
||||
"reset": "Сброс",
|
||||
"retry": "Повторить",
|
||||
"roleAndArchive": "Роли и архивы",
|
||||
"searchAgentPlaceholder": "Поисковые помощники и беседы...",
|
||||
"send": "Отправить",
|
||||
"sendPlaceholder": "Введите ваше сообщение...",
|
||||
"sessionList": "Список помощников",
|
||||
"setting": "Настройки",
|
||||
"share": "Поделиться",
|
||||
"shareModal": {
|
||||
"download": "Скачать скриншот",
|
||||
"imageType": "Тип изображения",
|
||||
"screenshot": "Скриншот",
|
||||
"settings": "Настройки экспорта",
|
||||
"withBackground": "С фоновым изображением",
|
||||
"withPluginInfo": "С информацией о плагине",
|
||||
"withSystemRole": "С настройками роли помощника",
|
||||
"withFooter": "с подвалом",
|
||||
"shareToShareGPT": "Создать ссылку для обмена ShareGPT"
|
||||
},
|
||||
"stop": "Остановить",
|
||||
"tab": {
|
||||
"chat": "Чат",
|
||||
@@ -79,20 +62,10 @@
|
||||
"setting": "Настройки"
|
||||
},
|
||||
"temp": "Временный",
|
||||
"tokenDetail": "Установление ролей: {{systemRoleToken}} · История сообщений: {{chatsToken}}",
|
||||
"tokenTag": {
|
||||
"overload": "Превышение лимита",
|
||||
"remained": "Осталось",
|
||||
"used": "Использовано"
|
||||
},
|
||||
"topic": {
|
||||
"confirmRemoveTopic": "Вы собираетесь удалить эту тему? После удаления он не может быть восстановлен. Пожалуйста, действуйте с осторожностью.",
|
||||
"defaultTitle": "Default",
|
||||
"saveCurrentMessages": "Сохранить текущую сессию в качестве темы",
|
||||
"searchPlaceholder": "Поиск тем...",
|
||||
"title": "Тема"
|
||||
},
|
||||
"updateAgent": "Обновление информации о помощнике",
|
||||
"updatePrompt": "Обновление подсказок",
|
||||
"warp": "Разрыв строки"
|
||||
"upgradeVersion": {
|
||||
"action": "Обновить сейчас",
|
||||
"hasNew": "Доступно обновление",
|
||||
"newVersion": "Доступна новая версия: {{version}}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"pluginSettings": {
|
||||
"desc": "Чтобы начать использовать этот плагин, выполните следующую конфигурацию",
|
||||
"title": "{{name}} Конфигурация плагина"
|
||||
"title": "{{name}} Настройки плагина"
|
||||
},
|
||||
"response": {
|
||||
"400": "Извините, сервер не понимает ваш запрос. Убедитесь в правильности параметров запроса",
|
||||
@@ -25,17 +25,26 @@
|
||||
"PluginApiNotFound": "К сожалению, API не существует в манифесте плагина. Пожалуйста, проверьте, соответствует ли ваш метод запроса API манифеста плагина",
|
||||
"PluginApiParamsError": "К сожалению, проверка входных параметров для запроса плагина не удалась. Пожалуйста, проверьте, соответствуют ли входные параметры описанию API",
|
||||
"PluginSettingsInvalid": "Этот плагин необходимо правильно настроить, прежде чем его можно будет использовать. Пожалуйста, проверьте правильность вашей конфигурации",
|
||||
"PluginServerError": "Запрос сервера плагина возвратил ошибку. Проверьте файл манифеста плагина, конфигурацию плагина или реализацию сервера на основе информации об ошибке ниже"
|
||||
"PluginServerError": "Запрос сервера плагина возвратил ошибку. Проверьте файл манифеста плагина, конфигурацию плагина или реализацию сервера на основе информации об ошибке ниже",
|
||||
"NoAPIKey": "Ключ OpenAI API пуст, пожалуйста, добавьте свой собственный ключ OpenAI API"
|
||||
},
|
||||
"stt": {
|
||||
"responseError": "Ошибка запроса сервиса. Пожалуйста, проверьте конфигурацию или повторите попытку"
|
||||
},
|
||||
"tts": {
|
||||
"responseError": "Ошибка запроса сервиса. Пожалуйста, проверьте конфигурацию или повторите попытку"
|
||||
},
|
||||
"unlock": {
|
||||
"apikey": {
|
||||
"description": "Введите свой ключ API OpenAI, чтобы обойти проверку пароля. Приложение не будет записывать ваш ключ API.",
|
||||
"title": "Использовать собственный ключ API"
|
||||
"title": "Использовать собственный ключ API",
|
||||
"description": "Введите свой ключ API OpenAI, чтобы начать сеанс. Приложение не будет сохранять ваш ключ API.",
|
||||
"addProxyUrl": "Добавить адрес прокси OpenAI (необязательно)"
|
||||
},
|
||||
"confirm": "Подтвердить и повторить попытку",
|
||||
"password": {
|
||||
"description": "Шифрование приложения включено администратором. Введите пароль приложения, чтобы разблокировать приложение. Пароль необходимо ввести только один раз.",
|
||||
"title": "Введите пароль для разблокировки приложения"
|
||||
"title": "Введите пароль для разблокировки приложения",
|
||||
"placeholder": "Введите пароль"
|
||||
},
|
||||
"closeMessage": "Закрыть сообщение"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
{
|
||||
"addAgent": "Добавить агента",
|
||||
"guide": {
|
||||
"func1": {
|
||||
"desc1": "Перейдите на страницу настроек, нажав на значок в правом верхнем углу окна сеанса.",
|
||||
"desc2": "Нажмите кнопку \"Отправить в магазин помощников\" в правом верхнем углу.",
|
||||
"tag": "Метод 1",
|
||||
"title": "Отправка через LobeChat"
|
||||
},
|
||||
"func2": {
|
||||
"button": "Перейти в репозиторий помощника на Github",
|
||||
"desc": "Если вы хотите добавить помощник в индекс, создайте запись в файле agent-template.json или agent-template-full.json в каталоге плагинов, напишите краткое описание и соответствующие теги, а затем создайте запрос на извлечение.",
|
||||
"tag": "Метод 2",
|
||||
"title": "Отправка через Github"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "Введите название или ключевое слово помощника..."
|
||||
},
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
"debug": {
|
||||
"arguments": "Аргументы вызова",
|
||||
"function_call": "Вызов функции",
|
||||
"response": "Ответ"
|
||||
"response": "Ответ",
|
||||
"off": "Выключить отладку",
|
||||
"on": "Просмотр информации о вызове плагина"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "Вы собираетесь удалить этот локальный плагин. После удаления его будет невозможно восстановить. Вы уверены, что хотите удалить этот плагин?",
|
||||
@@ -88,8 +90,8 @@
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "Получение данных...",
|
||||
"plugin": "Выполнение плагина..."
|
||||
"plugin": "Выполнение плагина...",
|
||||
"content": "Вызов плагина..."
|
||||
},
|
||||
"pluginList": "Список плагинов",
|
||||
"plugins": {
|
||||
|
||||
@@ -75,6 +75,11 @@
|
||||
"fetch": "Получить список",
|
||||
"title": "Azure OpenAI",
|
||||
"serverConfig": "Администратор настроил сервер для использования Azure OpenAI. Переключение запрещено."
|
||||
},
|
||||
"customModelName": {
|
||||
"desc": "Добавьте пользовательскую модель, разделяя их запятыми (,)",
|
||||
"placeholder": "model1,model2,model3",
|
||||
"title": "Название пользовательской модели"
|
||||
}
|
||||
},
|
||||
"waitingForMore": "<1>Планируется доступ к другим моделям</1>, так что следите за обновлениями ✨"
|
||||
@@ -202,6 +207,44 @@
|
||||
},
|
||||
"title": "Настройки системы"
|
||||
},
|
||||
"settingTTS": {
|
||||
"showAllLocaleVoice": {
|
||||
"desc": "Если отключено, отображаются только голоса текущего языка",
|
||||
"title": "Показать все голоса локали"
|
||||
},
|
||||
"sttService": {
|
||||
"desc": "где broswer - это встроенная в браузер служба распознавания речи",
|
||||
"title": "Служба распознавания речи"
|
||||
},
|
||||
"title": "Служба речи",
|
||||
"ttsService": {
|
||||
"desc": "Если используется услуга синтеза речи OpenAI, убедитесь, что услуга модели OpenAI включена",
|
||||
"title": "Служба синтеза речи"
|
||||
},
|
||||
"voice": {
|
||||
"title": "Голосовой синтез",
|
||||
"desc": "Выберите голос для текущего помощника, различные службы TTS поддерживают разные источники звука",
|
||||
"preview": "Предварительный просмотр голоса"
|
||||
},
|
||||
"openai": {
|
||||
"sttModel": "Модель распознавания речи OpenAI",
|
||||
"ttsModel": "Модель синтеза речи OpenAI"
|
||||
},
|
||||
"stt": "Настройки распознавания речи",
|
||||
"sttLocale": {
|
||||
"desc": "Язык речи для ввода речи, этот параметр может повысить точность распознавания речи",
|
||||
"title": "Язык распознавания речи"
|
||||
},
|
||||
"sttPersisted": {
|
||||
"desc": "При включении распознавание речи не будет автоматически завершаться, необходимо вручную нажать кнопку завершения",
|
||||
"title": "Вручную завершить распознавание речи"
|
||||
},
|
||||
"tts": "Настройки синтеза речи",
|
||||
"sttAutoStop": {
|
||||
"desc": "После отключения распознавания речи оно не будет автоматически останавливаться, вам нужно будет вручную нажать кнопку завершения",
|
||||
"title": "Автоматическое завершение распознавания речи"
|
||||
}
|
||||
},
|
||||
"settingTheme": {
|
||||
"avatar": {
|
||||
"title": "Аватар"
|
||||
@@ -230,9 +273,17 @@
|
||||
},
|
||||
"title": "Настройки темы"
|
||||
},
|
||||
"submitAgentModal": {
|
||||
"tooltips": "Поделиться на рынке помощников",
|
||||
"button": "Отправить агента",
|
||||
"identifier": "Идентификатор агента",
|
||||
"metaMiss": "Пожалуйста, заполните информацию об агенте перед отправкой. Необходимо указать имя, описание и метки",
|
||||
"placeholder": "Введите идентификатор агента, который должен быть уникальным, например, web-development"
|
||||
},
|
||||
"tab": {
|
||||
"agent": "Помощник по умолчанию",
|
||||
"common": "Общие настройки",
|
||||
"llm": "Пользовательский API GPT"
|
||||
"llm": "Пользовательский API GPT",
|
||||
"tts": "Сервис речи"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"agentDefaultMessage": "你好,我是 **{{name}}**,你可以立即与我开始对话,也可以前往 [助手设置](/chat/settings#session={{id}}) 完善我的信息。",
|
||||
"agentDefaultMessageWithSystemRole": "你好,我是 **{{name}}**,{{systemRole}},让我们开始对话吧!",
|
||||
"backToBottom": "查看最新消息",
|
||||
"clearCurrentMessages": "清空当前会话消息",
|
||||
"confirmClearCurrentMessages": "即将清空当前会话消息,清空后将无法找回,请确认你的操作",
|
||||
"confirmRemoveSessionItemAlert": "即将删除该助手,删除后该将无法找回,请确认你的操作",
|
||||
"defaultAgent": "自定义助手",
|
||||
"defaultSession": "自定义助手",
|
||||
"historyRange": "历史范围",
|
||||
"inbox": {
|
||||
"defaultMessage": "你好,我是你的智能助手,你可以问我任何问题,我会尽力回答你。如果需要获得更加专业或定制的助手,可以点击`+`创建自定义助手",
|
||||
"desc": "开启大脑集群,激发思维火花。你的智能助理,在这里与你交流一切",
|
||||
"title": "随便聊聊"
|
||||
},
|
||||
"newAgent": "新建助手",
|
||||
"noDescription": "暂无描述",
|
||||
"pin": "置顶",
|
||||
"pinOff": "取消置顶",
|
||||
"regenerate": "重新生成",
|
||||
"roleAndArchive": "角色与记录",
|
||||
"searchAgentPlaceholder": "搜索助手和对话...",
|
||||
"send": "发送",
|
||||
"sendPlaceholder": "输入聊天内容...",
|
||||
"sessionList": "助手列表",
|
||||
"shareModal": {
|
||||
"download": "下载截图",
|
||||
"imageType": "图片格式",
|
||||
"screenshot": "截图",
|
||||
"settings": "导出设置",
|
||||
"shareToShareGPT": "生成 ShareGPT 分享链接",
|
||||
"withBackground": "包含背景图片",
|
||||
"withFooter": "包含页脚",
|
||||
"withPluginInfo": "包含插件信息",
|
||||
"withSystemRole": "包含助手角色设定"
|
||||
},
|
||||
"stop": "停止",
|
||||
"stt": {
|
||||
"action": "语音输入",
|
||||
"loading": "识别中...",
|
||||
"prettifying": "润色中..."
|
||||
},
|
||||
"temp": "临时",
|
||||
"tokenDetail": "角色设定: {{systemRoleToken}} · 历史消息: {{chatsToken}}",
|
||||
"tokenTag": {
|
||||
"overload": "超过限制",
|
||||
"remained": "剩余",
|
||||
"used": "使用"
|
||||
},
|
||||
"topic": {
|
||||
"confirmRemoveAll": "即将删除全部话题,删除后将不可恢复,请谨慎操作。",
|
||||
"confirmRemoveTopic": "即将删除该话题,删除后将不可恢复,请谨慎操作。",
|
||||
"confirmRemoveUnstarred": "即将删除未收藏话题,删除后将不可恢复,请谨慎操作。",
|
||||
"defaultTitle": "默认话题",
|
||||
"openNewTopic": "开启新话题",
|
||||
"removeAll": "删除全部话题",
|
||||
"removeUnstarred": "删除未收藏话题",
|
||||
"saveCurrentMessages": "将当前会话保存为话题",
|
||||
"searchPlaceholder": "搜索话题...",
|
||||
"title": "话题列表"
|
||||
},
|
||||
"translate": {
|
||||
"action": "翻译",
|
||||
"clear": "删除翻译"
|
||||
},
|
||||
"tts": {
|
||||
"action": "语音朗读",
|
||||
"clear": "删除语音"
|
||||
},
|
||||
"updateAgent": "更新助理信息",
|
||||
"upload": {
|
||||
"actionTooltip": "上传图片",
|
||||
"dragDesc": "拖拽文件到这里,支持上传多个图片。按住 Shift 直接发送图片",
|
||||
"dragTitle": "上传图片"
|
||||
},
|
||||
"warp": "换行"
|
||||
}
|
||||
+15
-44
@@ -1,8 +1,6 @@
|
||||
{
|
||||
"about": "关于",
|
||||
"advanceSettings": "高级设置",
|
||||
"agentDefaultMessage": "你好,我是 **{{name}}**,你可以立即与我开始对话,也可以前往 [助手设置](/chat/settings#session={{id}}) 完善我的信息。",
|
||||
"agentDefaultMessageWithSystemRole": "你好,我是 **{{name}}**,{{systemRole}},让我们开始对话吧!",
|
||||
"agentMaxToken": "会话最大长度",
|
||||
"agentModel": "模型",
|
||||
"agentProfile": "助手信息",
|
||||
@@ -10,12 +8,9 @@
|
||||
"archive": "归档",
|
||||
"autoGenerate": "自动补全",
|
||||
"autoGenerateTooltip": "基于提示词自动补全助手描述",
|
||||
"backToBottom": "查看最新消息",
|
||||
"cancel": "取消",
|
||||
"changelog": "更新日志",
|
||||
"clearCurrentMessages": "清空当前会话消息",
|
||||
"close": "关闭",
|
||||
"confirmClearCurrentMessages": "即将清空当前会话消息,清空后将无法找回,请确认你的操作",
|
||||
"confirmRemoveSessionItemAlert": "即将删除该助手,删除后该将无法找回,请确认你的操作",
|
||||
"copy": "复制",
|
||||
"copySuccess": "复制成功",
|
||||
@@ -35,16 +30,17 @@
|
||||
"feedback": "反馈与建议",
|
||||
"historyRange": "历史范围",
|
||||
"import": "导入配置",
|
||||
"inbox": {
|
||||
"defaultMessage": "你好,我是你的智能助手,你可以问我任何问题,我会尽力回答你。如果需要获得更加专业或定制的助手,可以点击`+`创建自定义助手",
|
||||
"desc": "开启大脑集群,激发思维火花。你的智能助理,在这里与你交流一切",
|
||||
"title": "随便聊聊"
|
||||
"lang": {
|
||||
"en": "英语",
|
||||
"en-US": "英语",
|
||||
"ja-JP": "日语",
|
||||
"ko-KR": "韩语",
|
||||
"ru-RU": "俄语",
|
||||
"zh": "简体中文",
|
||||
"zh-CN": "简体中文",
|
||||
"zh-TW": "繁体中文"
|
||||
},
|
||||
"message": {
|
||||
"function_loading": "插件请求中..."
|
||||
},
|
||||
"moreSetting": "更多设置...",
|
||||
"newAgent": "新建助手",
|
||||
"layoutInitializing": "正在加载布局...",
|
||||
"noDescription": "暂无描述",
|
||||
"ok": "确定",
|
||||
"password": "密码",
|
||||
@@ -54,24 +50,9 @@
|
||||
"rename": "重命名",
|
||||
"reset": "重置",
|
||||
"retry": "重试",
|
||||
"roleAndArchive": "角色与记录",
|
||||
"searchAgentPlaceholder": "搜索助手和对话...",
|
||||
"send": "发送",
|
||||
"sendPlaceholder": "输入聊天内容...",
|
||||
"sessionList": "助手列表",
|
||||
"setting": "设置",
|
||||
"share": "分享",
|
||||
"shareModal": {
|
||||
"download": "下载截图",
|
||||
"imageType": "图片格式",
|
||||
"screenshot": "截图",
|
||||
"settings": "导出设置",
|
||||
"shareToShareGPT": "生成 ShareGPT 分享链接",
|
||||
"withBackground": "包含背景图片",
|
||||
"withFooter": "包含页脚",
|
||||
"withPluginInfo": "包含插件信息",
|
||||
"withSystemRole": "包含助手角色设定"
|
||||
},
|
||||
"stop": "停止",
|
||||
"tab": {
|
||||
"chat": "会话",
|
||||
@@ -79,20 +60,10 @@
|
||||
"setting": "设置"
|
||||
},
|
||||
"temp": "临时",
|
||||
"tokenDetail": "角色设定: {{systemRoleToken}} · 历史消息: {{chatsToken}}",
|
||||
"tokenTag": {
|
||||
"overload": "超过限制",
|
||||
"remained": "剩余",
|
||||
"used": "使用"
|
||||
},
|
||||
"topic": {
|
||||
"confirmRemoveTopic": "即将删除该话题,删除后将不可恢复,请谨慎操作。",
|
||||
"defaultTitle": "默认话题",
|
||||
"saveCurrentMessages": "将当前会话保存为话题",
|
||||
"searchPlaceholder": "搜索话题...",
|
||||
"title": "话题"
|
||||
},
|
||||
"updateAgent": "更新助理信息",
|
||||
"updatePrompt": "更新提示词",
|
||||
"warp": "换行"
|
||||
"upgradeVersion": {
|
||||
"action": "立即升级",
|
||||
"hasNew": "有可用更新",
|
||||
"newVersion": "有新版本可用:{{version}}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"pluginSettings": {
|
||||
"desc": "完成以下配置,即可开始使用该插件",
|
||||
"title": "{{name}}插件配置"
|
||||
"title": "{{name}} 插件配置"
|
||||
},
|
||||
"response": {
|
||||
"400": "很抱歉,服务器不明白您的请求,请确认您的请求参数是否正确",
|
||||
@@ -25,17 +25,26 @@
|
||||
"PluginSettingsInvalid": "该插件需要正确配置后才可以使用,请检查你的配置是否正确",
|
||||
"PluginServerError": "插件服务端请求返回出错,请检查根据下面的报错信息检查你的插件描述文件、插件配置或服务端实现",
|
||||
"InvalidAccessCode": "密码不正确或为空,请输入正确的访问密码,或者添加自定义 OpenAI API Key",
|
||||
"OpenAIBizError": "请求 OpenAI 服务出错,请根据以下信息排查或重试"
|
||||
"OpenAIBizError": "请求 OpenAI 服务出错,请根据以下信息排查或重试",
|
||||
"NoAPIKey": "OpenAI API Key 为空,请添加自定义 OpenAI API Key"
|
||||
},
|
||||
"stt": {
|
||||
"responseError": "服务请求失败,请检查配置或重试"
|
||||
},
|
||||
"tts": {
|
||||
"responseError": "服务请求失败,请检查配置或重试"
|
||||
},
|
||||
"unlock": {
|
||||
"apikey": {
|
||||
"description": "输入你的 OpenAI API Key 即可绕过密码验证。应用不会记录你的 API Key",
|
||||
"addProxyUrl": "添加 OpenAI 代理地址(可选)",
|
||||
"description": "输入你的 OpenAI API Key 即可开始会话。应用不会记录你的 API Key",
|
||||
"title": "使用自定义 API Key"
|
||||
},
|
||||
"closeMessage": "关闭提示",
|
||||
"confirm": "确认并重试",
|
||||
"password": {
|
||||
"description": "管理员已开启应用加密,输入应用密码后即可解锁应用。密码只需填写一次",
|
||||
"placeholder": "请输入密码",
|
||||
"title": "输入密码解锁应用"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
{
|
||||
"addAgent": "添加助手",
|
||||
"guide": {
|
||||
"func1": {
|
||||
"desc1": "在会话窗口中通过右上角设置进入你想提交助手的设置页面;",
|
||||
"desc2": "点击右上角提交到助手市场按钮。",
|
||||
"tag": "方法一",
|
||||
"title": "通过 LobeChat 提交"
|
||||
},
|
||||
"func2": {
|
||||
"button": "前往 Github 助手仓库",
|
||||
"desc": "如果您想将助手添加到索引中,请使用 agent-template.json 或 agent-template-full.json 在 plugins 目录中创建一个条目,编写简短的描述并适当标记,然后创建一个拉取请求。",
|
||||
"tag": "方法二",
|
||||
"title": "通过 Github 提交"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "搜索助手名称介绍或关键词..."
|
||||
},
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
"debug": {
|
||||
"arguments": "调用参数",
|
||||
"function_call": "函数调用",
|
||||
"off": "关闭调试",
|
||||
"on": "查看插件调用信息",
|
||||
"response": "返回结果"
|
||||
},
|
||||
"dev": {
|
||||
@@ -88,7 +90,7 @@
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "数据获取中...",
|
||||
"content": "调用插件中...",
|
||||
"plugin": "插件运行中..."
|
||||
},
|
||||
"pluginList": "插件列表",
|
||||
|
||||
@@ -50,6 +50,11 @@
|
||||
"pass": "检查通过",
|
||||
"title": "连通性检查"
|
||||
},
|
||||
"customModelName": {
|
||||
"desc": "增加自定义模型,多个模型使用逗号(,) 隔开",
|
||||
"placeholder": "model1,model2,model3",
|
||||
"title": "自定义模型名称"
|
||||
},
|
||||
"endpoint": {
|
||||
"desc": "除默认地址外,必须包含 http(s)://",
|
||||
"placeholder": "https://api.openai.com/v1",
|
||||
@@ -189,6 +194,40 @@
|
||||
},
|
||||
"title": "系统设置"
|
||||
},
|
||||
"settingTTS": {
|
||||
"openai": {
|
||||
"sttModel": "OpenAI 语音识别模型",
|
||||
"ttsModel": "OpenAI 语音合成模型"
|
||||
},
|
||||
"showAllLocaleVoice": {
|
||||
"desc": "关闭则只显示当前语种的声源",
|
||||
"title": "显示所有语种声源"
|
||||
},
|
||||
"stt": "语音识别设置",
|
||||
"sttAutoStop": {
|
||||
"desc": "关闭后,语音识别将不会自动结束,需要手动点击结束按钮",
|
||||
"title": "自动结束语音识别"
|
||||
},
|
||||
"sttLocale": {
|
||||
"desc": "语音输入的语种,此选项可提高语音识别准确率",
|
||||
"title": "语音识别语种"
|
||||
},
|
||||
"sttService": {
|
||||
"desc": "其中 broswer 为浏览器原生的语音识别服务",
|
||||
"title": "语音识别服务"
|
||||
},
|
||||
"title": "语音服务",
|
||||
"tts": "语音合成设置",
|
||||
"ttsService": {
|
||||
"desc": "如使用 OpenAI 语音合成服务,需要保证 OpenAI 模型服务已开启",
|
||||
"title": "语音合成服务"
|
||||
},
|
||||
"voice": {
|
||||
"desc": "为当前助手挑选一个声音,不同 TTS 服务支持的声源不同",
|
||||
"preview": "试听声源",
|
||||
"title": "语音合成声源"
|
||||
}
|
||||
},
|
||||
"settingTheme": {
|
||||
"avatar": {
|
||||
"title": "头像"
|
||||
@@ -217,9 +256,17 @@
|
||||
},
|
||||
"title": "主题设置"
|
||||
},
|
||||
"submitAgentModal": {
|
||||
"button": "提交助手",
|
||||
"identifier": "identifier 助手标识符",
|
||||
"metaMiss": "请补全助手信息后提交,需要包含名称、描述和标签",
|
||||
"placeholder": "请输入助手的标识符,需要是唯一的,比如 web-development",
|
||||
"tooltips": "分享到助手市场"
|
||||
},
|
||||
"tab": {
|
||||
"agent": "默认助手",
|
||||
"common": "通用设置",
|
||||
"llm": "语言模型"
|
||||
"llm": "语言模型",
|
||||
"tts": "语音服务"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"agentDefaultMessage": "妳好,我是 **{{name}}**,妳可以立即與我開始對話,也可以前往 [助手設定](/chat/settings#session={{id}}) 完善我的資訊。",
|
||||
"agentDefaultMessageWithSystemRole": "妳好,我是 **{{name}}**,{{systemRole}},讓我們開始對話吧!",
|
||||
"backToBottom": "查看最新訊息",
|
||||
"clearCurrentMessages": "清空當前會話訊息",
|
||||
"confirmClearCurrentMessages": "即將清空當前會話訊息,清空後將無法找回,請確認妳的操作",
|
||||
"confirmRemoveSessionItemAlert": "即將刪除該助手,刪除後該將無法找回,請確認妳的操作",
|
||||
"defaultAgent": "自定義助手",
|
||||
"defaultSession": "自定義助手",
|
||||
"historyRange": "歷史範圍",
|
||||
"inbox": {
|
||||
"defaultMessage": "妳好,我是妳的智能助手,妳可以問我任何問題,我會盡力回答妳。如果需要獲得更加專業或定制的助手,可以點擊`+`創建自定義助手",
|
||||
"desc": "開啟大腦集群,激發思維火花。妳的智能助理,在這裡與妳交流一切",
|
||||
"title": "隨便聊聊"
|
||||
},
|
||||
"newAgent": "新建助手",
|
||||
"noDescription": "暫無描述",
|
||||
"pin": "置頂",
|
||||
"pinOff": "取消置頂",
|
||||
"regenerate": "重新生成",
|
||||
"roleAndArchive": "角色與記錄",
|
||||
"searchAgentPlaceholder": "搜索助手和對話...",
|
||||
"send": "發送",
|
||||
"sendPlaceholder": "輸入聊天內容...",
|
||||
"sessionList": "助手列表",
|
||||
"shareModal": {
|
||||
"download": "下載截圖",
|
||||
"imageType": "圖片格式",
|
||||
"screenshot": "截圖",
|
||||
"settings": "導出設定",
|
||||
"shareToShareGPT": "生成 ShareGPT 分享鏈接",
|
||||
"withBackground": "包含背景圖片",
|
||||
"withFooter": "包含頁腳",
|
||||
"withPluginInfo": "包含插件信息",
|
||||
"withSystemRole": "包含助手角色設定"
|
||||
},
|
||||
"stop": "停止",
|
||||
"stt": {
|
||||
"action": "語音輸入",
|
||||
"loading": "辨識中...",
|
||||
"prettifying": "美化中..."
|
||||
},
|
||||
"temp": "臨時",
|
||||
"tokenDetail": "角色設定: {{systemRoleToken}} · 歷史訊息: {{chatsToken}}",
|
||||
"tokenTag": {
|
||||
"overload": "超過限制",
|
||||
"remained": "剩餘",
|
||||
"used": "使用"
|
||||
},
|
||||
"topic": {
|
||||
"confirmRemoveTopic": "即將刪除該話題,刪除後將不可恢復,請謹慎操作。",
|
||||
"defaultTitle": "默認話題",
|
||||
"saveCurrentMessages": "將當前會話保存為話題",
|
||||
"searchPlaceholder": "搜索話題...",
|
||||
"deleteAll": "刪除所有話題",
|
||||
"deleteUnstarred": "刪除未收藏話題",
|
||||
"title": "話題列表",
|
||||
"confirmRemoveAll": "即將刪除全部話題,刪除後將無法恢復,請謹慎操作。",
|
||||
"confirmRemoveUnstarred": "即將刪除未收藏話題,刪除後將無法恢復,請謹慎操作。",
|
||||
"removeAll": "刪除全部話題",
|
||||
"removeUnstarred": "刪除未收藏話題",
|
||||
"openNewTopic": "開啟新話題"
|
||||
},
|
||||
"translate": {
|
||||
"clear": "刪除翻譯",
|
||||
"action": "翻譯"
|
||||
},
|
||||
"translateTo": "翻譯",
|
||||
"tts": {
|
||||
"action": "語音朗讀",
|
||||
"clear": "清除語音"
|
||||
},
|
||||
"updateAgent": "更新助理資訊",
|
||||
"upload": {
|
||||
"actionTooltip": "上傳圖片",
|
||||
"dragDesc": "拖曳檔案到這裡,支援上傳多張圖片。按住 Shift 直接發送圖片",
|
||||
"dragTitle": "上傳圖片"
|
||||
},
|
||||
"warp": "換行"
|
||||
}
|
||||
+34
-62
@@ -1,77 +1,59 @@
|
||||
{
|
||||
"about": "關於",
|
||||
"advanceSettings": "進階設定",
|
||||
"agentDefaultMessage": "嗨,我是 **{{name}}**。您可以立即與我開始對話,或是前往 [助理設定](/chat/settings#session={{id}}) 完善我的資訊。",
|
||||
"agentDefaultMessageWithSystemRole": "嗨,我是 **{{name}}**,{{systemRole}}。讓我們開始對話吧!",
|
||||
"agentMaxToken": "最大對話長度",
|
||||
"agentModel": "模型",
|
||||
"agentProfile": "助理資訊",
|
||||
"appInitializing": "LobeChat 正在初始化,請稍候...",
|
||||
"agentProfile": "助手資訊",
|
||||
"appInitializing": "LobeChat 正在啟動,請稍候...",
|
||||
"archive": "歸檔",
|
||||
"autoGenerate": "自動產生",
|
||||
"autoGenerateTooltip": "根據提示自動產生助理描述",
|
||||
"backToBottom": "回到最新訊息",
|
||||
"autoGenerate": "自動生成",
|
||||
"autoGenerateTooltip": "基於提示詞自動生成助手描述",
|
||||
"cancel": "取消",
|
||||
"changelog": "更新日誌",
|
||||
"clearCurrentMessages": "清除目前的對話訊息",
|
||||
"close": "關閉",
|
||||
"confirmClearCurrentMessages": "您將清除目前的對話訊息。一旦清除,將無法恢復。請確認您的操作。",
|
||||
"confirmRemoveSessionItemAlert": "您將刪除此助理。一旦刪除,將無法恢復。請確認您的操作。",
|
||||
"confirmRemoveSessionItemAlert": "即將刪除該助手,刪除後將無法找回,請確認您的操作",
|
||||
"copy": "複製",
|
||||
"copySuccess": "複製成功",
|
||||
"defaultAgent": "自訂助理",
|
||||
"defaultSession": "自訂助理",
|
||||
"defaultAgent": "自定義助手",
|
||||
"defaultSession": "自定義助手",
|
||||
"delete": "刪除",
|
||||
"edit": "編輯",
|
||||
"export": "匯出設定",
|
||||
"exportType": {
|
||||
"agent": "匯出助理設定",
|
||||
"agentWithMessage": "匯出助理與訊息",
|
||||
"all": "匯出全域設定與所有助理資料",
|
||||
"allAgent": "匯出所有助理設定",
|
||||
"allAgentWithMessage": "匯出所有助理與訊息",
|
||||
"agent": "匯出助手設定",
|
||||
"agentWithMessage": "匯出助手和訊息",
|
||||
"all": "匯出全域設定和所有助手資料",
|
||||
"allAgent": "匯出所有助手設定",
|
||||
"allAgentWithMessage": "匯出所有助手和訊息",
|
||||
"globalSetting": "匯出全域設定"
|
||||
},
|
||||
"feedback": "意見回饋",
|
||||
"feedback": "回饋與建議",
|
||||
"historyRange": "歷史範圍",
|
||||
"import": "匯入設定",
|
||||
"inbox": {
|
||||
"defaultMessage": "您好,我是您的智慧助理。您可以問我任何問題,我會盡力回答您。如果您需要更專業或自訂的助理,您可以點選 `+` 來建立一個自訂助理。",
|
||||
"desc": "啟動思維並激發你的創意。你的智慧助理已經準備好與你討論所有事情。",
|
||||
"title": "隨便聊聊"
|
||||
"lang": {
|
||||
"en": "英語",
|
||||
"en-US": "英語",
|
||||
"ja-JP": "日語",
|
||||
"ko-KR": "韓語",
|
||||
"ru-RU": "俄語",
|
||||
"zh": "簡體中文",
|
||||
"zh-CN": "簡體中文",
|
||||
"zh-TW": "繁體中文"
|
||||
},
|
||||
"message": {
|
||||
"function_loading": "外掛請求進行中..."
|
||||
},
|
||||
"moreSetting": "更多設定...",
|
||||
"newAgent": "新助理",
|
||||
"noDescription": "無描述",
|
||||
"layoutInitializing": "正在載入佈局...",
|
||||
"noDescription": "暫無描述",
|
||||
"ok": "確定",
|
||||
"password": "密碼",
|
||||
"pin": "置頂",
|
||||
"pinOff": "取消置頂",
|
||||
"regenerate": "重新產生",
|
||||
"rename": "重新命名",
|
||||
"reset": "重設",
|
||||
"regenerate": "重新生成",
|
||||
"rename": "重命名",
|
||||
"reset": "重置",
|
||||
"retry": "重試",
|
||||
"roleAndArchive": "角色與歸檔",
|
||||
"searchAgentPlaceholder": "搜尋助理與對話...",
|
||||
"send": "傳送",
|
||||
"sendPlaceholder": "輸入聊天內容...",
|
||||
"sessionList": "助理列表",
|
||||
"send": "發送",
|
||||
"sessionList": "助手列表",
|
||||
"setting": "設定",
|
||||
"share": "分享",
|
||||
"shareModal": {
|
||||
"download": "下載截圖",
|
||||
"imageType": "圖片格式",
|
||||
"screenshot": "截圖",
|
||||
"settings": "匯出設定",
|
||||
"withBackground": "包含背景圖片",
|
||||
"withPluginInfo": "包含插件資訊",
|
||||
"withSystemRole": "包含助手角色設定",
|
||||
"withFooter": "包含頁腳",
|
||||
"shareToShareGPT": "生成 ShareGPT 分享連結"
|
||||
},
|
||||
"stop": "停止",
|
||||
"tab": {
|
||||
"chat": "聊天",
|
||||
@@ -79,20 +61,10 @@
|
||||
"setting": "設定"
|
||||
},
|
||||
"temp": "臨時",
|
||||
"tokenDetail": "角色設定:{{systemRoleToken}} · 訊息歷史:{{chatsToken}}",
|
||||
"tokenTag": {
|
||||
"overload": "超過限制",
|
||||
"remained": "剩餘",
|
||||
"used": "已使用"
|
||||
},
|
||||
"topic": {
|
||||
"confirmRemoveTopic": "您將刪除此主題。一旦刪除,將無法恢復。請小心操作。",
|
||||
"defaultTitle": "預設主題",
|
||||
"saveCurrentMessages": "將目前的對話儲存為主題",
|
||||
"searchPlaceholder": "搜尋主題...",
|
||||
"title": "主題"
|
||||
},
|
||||
"updateAgent": "更新助理資訊",
|
||||
"updatePrompt": "更新提示",
|
||||
"warp": "換行"
|
||||
"upgradeVersion": {
|
||||
"action": "立即升級",
|
||||
"hasNew": "有可用更新",
|
||||
"newVersion": "有新版本可用:{{version}}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"pluginSettings": {
|
||||
"desc": "完成以下設定後,即可開始使用此外掛",
|
||||
"title": "{{name}} 外掛設定"
|
||||
"title": "{{name}} 插件設定"
|
||||
},
|
||||
"response": {
|
||||
"400": "抱歉,伺服器無法理解您的請求。請確認您的請求參數是否正確。",
|
||||
@@ -25,17 +25,26 @@
|
||||
"PluginApiNotFound": "抱歉,外掛描述檔案中不存在該 API。請檢查您的請求方法與外掛清單 API 是否相符",
|
||||
"PluginApiParamsError": "抱歉,該外掛請求的輸入參數驗證失敗。請檢查輸入參數與 API 描述資訊是否相符",
|
||||
"PluginSettingsInvalid": "該外掛需要正確設定後才可以使用。請檢查您的設定是否正確",
|
||||
"PluginServerError": "外掛伺服器請求回傳錯誤。請根據下面的錯誤資訊檢查您的外掛描述檔案、外掛設定或伺服器實作"
|
||||
"PluginServerError": "外掛伺服器請求回傳錯誤。請根據下面的錯誤資訊檢查您的外掛描述檔案、外掛設定或伺服器實作",
|
||||
"NoAPIKey": "OpenAI API 金鑰為空,請添加自訂 OpenAI API 金鑰"
|
||||
},
|
||||
"stt": {
|
||||
"responseError": "服務請求失敗,請檢查配置或重試"
|
||||
},
|
||||
"tts": {
|
||||
"responseError": "服務請求失敗,請檢查配置或重試"
|
||||
},
|
||||
"unlock": {
|
||||
"apikey": {
|
||||
"description": "輸入您的 OpenAI API Key 以繞過密碼驗證。應用程式不會記錄您的 API Key。",
|
||||
"title": "使用自定義 API Key"
|
||||
"title": "使用自定義 API Key",
|
||||
"description": "輸入你的 OpenAI API Key 即可開始會話。應用程式不會記錄你的 API Key",
|
||||
"addProxyUrl": "添加 OpenAI 代理地址(可選)"
|
||||
},
|
||||
"confirm": "確認並重試",
|
||||
"password": {
|
||||
"description": "管理員已啟用應用程式加密,輸入應用程式密碼後即可解鎖應用程式。密碼只需填寫一次。",
|
||||
"title": "輸入密碼解鎖應用程式"
|
||||
"title": "輸入密碼解鎖應用程式",
|
||||
"placeholder": "請輸入密碼"
|
||||
},
|
||||
"closeMessage": "關閉提示"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
{
|
||||
"addAgent": "新增助理",
|
||||
"guide": {
|
||||
"func1": {
|
||||
"desc1": "在會話視窗中通過右上角設置進入你想提交助手的設置頁面;",
|
||||
"desc2": "點擊右上角提交到助手市場按鈕。",
|
||||
"tag": "方法一",
|
||||
"title": "通過 LobeChat 提交"
|
||||
},
|
||||
"func2": {
|
||||
"button": "前往 Github 助手倉庫",
|
||||
"desc": "如果您想將助手添加到索引中,請使用 agent-template.json 或 agent-template-full.json 在 plugins 目錄中創建一個條目,編寫簡短的描述並適當標記,然後創建一個拉取請求。",
|
||||
"tag": "方法二",
|
||||
"title": "通過 Github 提交"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "搜尋助理名稱、描述或關鍵字..."
|
||||
},
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
"debug": {
|
||||
"arguments": "參數",
|
||||
"function_call": "函式呼叫",
|
||||
"response": "回應"
|
||||
"response": "回應",
|
||||
"off": "關閉偵錯",
|
||||
"on": "查看插件呼叫資訊"
|
||||
},
|
||||
"dev": {
|
||||
"confirmDeleteDevPlugin": "您確定要刪除此本機外掛嗎?一旦刪除,將無法復原。",
|
||||
@@ -89,8 +91,8 @@
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"content": "載入中...",
|
||||
"plugin": "外掛執行中..."
|
||||
"plugin": "外掛執行中...",
|
||||
"content": "呼叫插件中..."
|
||||
},
|
||||
"pluginList": "外掛清單",
|
||||
"plugins": {
|
||||
|
||||
@@ -75,6 +75,11 @@
|
||||
"fetch": "取得列表",
|
||||
"title": "Azure OpenAI",
|
||||
"serverConfig": "管理員已在伺服器端啟用 Azure OpenAI,禁止切換"
|
||||
},
|
||||
"customModelName": {
|
||||
"desc": "增加自訂模型,多個模型使用逗號(,) 隔開",
|
||||
"placeholder": "model1,model2,model3",
|
||||
"title": "自訂模型名稱"
|
||||
}
|
||||
},
|
||||
"waitingForMore": "<1>計劃支援其他模型</1>,敬請期待 ✨"
|
||||
@@ -202,6 +207,44 @@
|
||||
},
|
||||
"title": "系統設定"
|
||||
},
|
||||
"settingTTS": {
|
||||
"showAllLocaleVoice": {
|
||||
"desc": "關閉則只顯示當前語種的聲源",
|
||||
"title": "顯示所有語種聲源"
|
||||
},
|
||||
"sttService": {
|
||||
"desc": "其中 broswer 為瀏覽器原生的語音識別服務",
|
||||
"title": "語音識別服務"
|
||||
},
|
||||
"title": "語音服務",
|
||||
"ttsService": {
|
||||
"desc": "如使用 OpenAI 語音合成服務,需要保證 OpenAI 模型服務已開啟",
|
||||
"title": "語音合成服務"
|
||||
},
|
||||
"voice": {
|
||||
"title": "語音合成聲源",
|
||||
"desc": "為當前助手挑選一個聲音,不同 TTS 服務支持的聲源不同",
|
||||
"preview": "預覽"
|
||||
},
|
||||
"openai": {
|
||||
"sttModel": "OpenAI 語音識別模型",
|
||||
"ttsModel": "OpenAI 語音合成模型"
|
||||
},
|
||||
"stt": "語音識別設定",
|
||||
"sttLocale": {
|
||||
"desc": "語音輸入的語言,此選項可提高語音識別準確率",
|
||||
"title": "語音識別語言"
|
||||
},
|
||||
"sttPersisted": {
|
||||
"desc": "開啟後,語音識別將不會自動結束,需要手動點擊結束按鈕",
|
||||
"title": "手動結束語音識別"
|
||||
},
|
||||
"tts": "語音合成設定",
|
||||
"sttAutoStop": {
|
||||
"desc": "關閉後,語音識別將不會自動結束,需要手動點擊結束按鈕",
|
||||
"title": "自動結束語音識別"
|
||||
}
|
||||
},
|
||||
"settingTheme": {
|
||||
"avatar": {
|
||||
"title": "頭像"
|
||||
@@ -230,9 +273,17 @@
|
||||
},
|
||||
"title": "主題設定"
|
||||
},
|
||||
"submitAgentModal": {
|
||||
"tooltips": "分享到助手市場",
|
||||
"button": "提交助手",
|
||||
"identifier": "助手識別符",
|
||||
"metaMiss": "請補全助手資訊後提交,需要包含名稱、描述和標籤",
|
||||
"placeholder": "請輸入助手的識別符,需要是唯一的,例如 web-development"
|
||||
},
|
||||
"tab": {
|
||||
"agent": "預設助理",
|
||||
"common": "通用設定",
|
||||
"llm": "語言模型"
|
||||
"llm": "語言模型",
|
||||
"tts": "語音服務"
|
||||
}
|
||||
}
|
||||
|
||||
+49
-10
@@ -1,7 +1,8 @@
|
||||
import nextPWA from '@ducanh2912/next-pwa';
|
||||
import analyzer from '@next/bundle-analyzer';
|
||||
import nextPWA from 'next-pwa';
|
||||
|
||||
const isProd = process.env.NODE_ENV === 'production';
|
||||
const buildWithDocker = process.env.DOCKER === 'true';
|
||||
|
||||
const withBundleAnalyzer = analyzer({
|
||||
enabled: process.env.ANALYZE === 'true',
|
||||
@@ -10,27 +11,65 @@ const withBundleAnalyzer = analyzer({
|
||||
const withPWA = nextPWA({
|
||||
dest: 'public',
|
||||
register: true,
|
||||
skipWaiting: true,
|
||||
workboxOptions: {
|
||||
skipWaiting: true,
|
||||
},
|
||||
});
|
||||
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {
|
||||
compress: isProd,
|
||||
env: {
|
||||
AGENTS_INDEX_URL: process.env.AGENTS_INDEX_URL ?? '',
|
||||
PLUGINS_INDEX_URL: process.env.PLUGINS_INDEX_URL ?? '',
|
||||
},
|
||||
experimental: {
|
||||
forceSwcTransforms: true,
|
||||
optimizePackageImports: [
|
||||
'modern-screenshot',
|
||||
'emoji-mart',
|
||||
'@emoji-mart/react',
|
||||
'@emoji-mart/data',
|
||||
'@icons-pack/react-simple-icons',
|
||||
'gpt-tokenizer',
|
||||
'chroma-js',
|
||||
],
|
||||
webVitalsAttribution: ['CLS', 'LCP'],
|
||||
},
|
||||
images: {
|
||||
remotePatterns: [
|
||||
{
|
||||
hostname: 'registry.npmmirror.com',
|
||||
pathname: '/@lobehub/**',
|
||||
port: '',
|
||||
protocol: 'https',
|
||||
},
|
||||
],
|
||||
unoptimized: !isProd,
|
||||
},
|
||||
output: buildWithDocker ? 'standalone' : undefined,
|
||||
|
||||
reactStrictMode: true,
|
||||
// not sure why antd-style cause multi ThemeProvider instance
|
||||
// So we need to transpile it to lib mode
|
||||
transpilePackages: ['@lobehub/ui', 'antd-style'],
|
||||
|
||||
transpilePackages: ['antd-style', '@lobehub/ui', '@lobehub/tts'],
|
||||
|
||||
webpack(config) {
|
||||
config.experiments = {
|
||||
asyncWebAssembly: true,
|
||||
layers: true,
|
||||
};
|
||||
|
||||
return config;
|
||||
},
|
||||
// to fix shikiji compile error
|
||||
// refs: https://github.com/antfu/shikiji/issues/23
|
||||
config.module.rules.push({
|
||||
test: /\.m?js$/,
|
||||
type: 'javascript/auto',
|
||||
resolve: {
|
||||
fullySpecified: false,
|
||||
},
|
||||
});
|
||||
|
||||
env: {
|
||||
AGENTS_INDEX_URL: process.env.AGENTS_INDEX_URL,
|
||||
PLUGINS_INDEX_URL: process.env.PLUGINS_INDEX_URL,
|
||||
return config;
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
+29
-20
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@lobehub/chat",
|
||||
"version": "0.83.10",
|
||||
"version": "0.102.2",
|
||||
"description": "An open-source, extensible (Function Calling), high-performance chatbot framework. It supports one-click free deployment of your private ChatGPT/LLM web application",
|
||||
"keywords": [
|
||||
"chatbot",
|
||||
@@ -25,9 +25,9 @@
|
||||
"scripts": {
|
||||
"build": "next build",
|
||||
"build:analyze": "ANALYZE=true next build",
|
||||
"build:docker": "DOCKER=true next build",
|
||||
"dev": "next dev -p 3010",
|
||||
"i18n": "npm run i18n:workflow && lobe-i18n",
|
||||
"i18n:workflow": "ts-node --project ./tsconfig.json scripts/i18nWorkflow/index.ts",
|
||||
"i18n": "npm run workflow:i18n && lobe-i18n",
|
||||
"lint": "npm run lint:ts && npm run lint:style && npm run type-check && npm run lint:circular",
|
||||
"lint:circular": "dpdm src/**/*.ts --warning false --tree false --exit-code circular:1 -T true",
|
||||
"lint:md": "remark . --quiet --frail --output",
|
||||
@@ -42,7 +42,9 @@
|
||||
"test": "vitest --passWithNoTests",
|
||||
"test:coverage": "vitest run --coverage --passWithNoTests",
|
||||
"test:update": "vitest -u",
|
||||
"type-check": "tsc --noEmit"
|
||||
"type-check": "tsc --noEmit",
|
||||
"workflow:i18n": "ts-node --project ./tsconfig.json scripts/i18nWorkflow/index.ts",
|
||||
"workflow:readme": "bun scripts/readmeWorkflow/index.ts"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.md": [
|
||||
@@ -64,23 +66,22 @@
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design/colors": "^7",
|
||||
"@ant-design/icons": "^5",
|
||||
"@emoji-mart/data": "^1",
|
||||
"@emoji-mart/react": "^1",
|
||||
"@icons-pack/react-simple-icons": "^9",
|
||||
"@lobehub/chat-plugin-sdk": "latest",
|
||||
"@lobehub/chat-plugins-gateway": "latest",
|
||||
"@lobehub/tts": "latest",
|
||||
"@lobehub/ui": "latest",
|
||||
"@vercel/analytics": "^1",
|
||||
"ahooks": "^3",
|
||||
"ai": "^2",
|
||||
"ai": "^2.2.22",
|
||||
"antd": "^5",
|
||||
"antd-style": "^3.5",
|
||||
"antd-style": "^3",
|
||||
"brotli-wasm": "^1",
|
||||
"chroma-js": "^2",
|
||||
"copy-to-clipboard": "^3",
|
||||
"dayjs": "^1",
|
||||
"emoji-mart": "^5",
|
||||
"dexie": "^3",
|
||||
"fast-deep-equal": "^3",
|
||||
"gpt-tokenizer": "^2",
|
||||
"i18next": "^23",
|
||||
@@ -91,22 +92,25 @@
|
||||
"immer": "^10",
|
||||
"lodash-es": "^4",
|
||||
"lucide-react": "latest",
|
||||
"mixpanel-browser": "^2",
|
||||
"modern-screenshot": "^4",
|
||||
"nanoid": "^5",
|
||||
"next": "^13.5.3",
|
||||
"openai": "^4.10.0",
|
||||
"next": "^14.0.2",
|
||||
"openai": "^4.17.3",
|
||||
"polished": "^4",
|
||||
"posthog-js": "^1",
|
||||
"query-string": "^8",
|
||||
"react": "^18",
|
||||
"react-dom": "^18",
|
||||
"react-hotkeys-hook": "^4",
|
||||
"react-i18next": "^13",
|
||||
"react-intersection-observer": "^9",
|
||||
"react-layout-kit": "^1",
|
||||
"react-lazy-load": "^4",
|
||||
"react-spring-lightbox": "^1",
|
||||
"remark": "^14",
|
||||
"remark-gfm": "^3",
|
||||
"remark-html": "^15",
|
||||
"semver": "^7",
|
||||
"swr": "^2",
|
||||
"systemjs": "^6",
|
||||
"ts-md5": "^1",
|
||||
@@ -115,36 +119,41 @@
|
||||
"use-merge-value": "^1",
|
||||
"utility-types": "^3",
|
||||
"uuid": "^9",
|
||||
"zod": "^3",
|
||||
"zustand": "^4.4",
|
||||
"zustand-utils": "^1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "^17",
|
||||
"@commitlint/cli": "^18",
|
||||
"@ducanh2912/next-pwa": "^9.7.2",
|
||||
"@lobehub/i18n-cli": "latest",
|
||||
"@lobehub/lint": "latest",
|
||||
"@next/bundle-analyzer": "^13",
|
||||
"@next/eslint-plugin-next": "^13",
|
||||
"@next/bundle-analyzer": "^14.0.3",
|
||||
"@next/eslint-plugin-next": "^14.0.3",
|
||||
"@testing-library/jest-dom": "^6",
|
||||
"@testing-library/react": "^14",
|
||||
"@types/chroma-js": "^2",
|
||||
"@types/lodash": "^4",
|
||||
"@types/lodash-es": "^4",
|
||||
"@types/mixpanel-browser": "^2",
|
||||
"@types/node": "^20",
|
||||
"@types/react": "^18",
|
||||
"@types/react-dom": "^18",
|
||||
"@types/semver": "^7",
|
||||
"@types/systemjs": "^6",
|
||||
"@types/ua-parser-js": "^0.7",
|
||||
"@types/uuid": "^9",
|
||||
"@umijs/lint": "^4",
|
||||
"@vitest/coverage-v8": "latest",
|
||||
"commitlint": "^17",
|
||||
"commitlint": "^18",
|
||||
"consola": "^3",
|
||||
"dpdm": "^3",
|
||||
"eslint": "^8",
|
||||
"fake-indexeddb": "^5",
|
||||
"husky": "^8",
|
||||
"jsdom": "^22",
|
||||
"lint-staged": "^14",
|
||||
"next-pwa": "^5",
|
||||
"lint-staged": "^15",
|
||||
"lodash": "^4",
|
||||
"markdown-table": "^3",
|
||||
"node-fetch": "^3",
|
||||
"prettier": "^3",
|
||||
"remark-cli": "^11",
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 5.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 68 KiB |
+35
-6
@@ -1,17 +1,31 @@
|
||||
{
|
||||
"background_color": "#000000",
|
||||
"description": "An open-source, extensible (Function Calling), high-performance chatbot framework. It supports one-click free deployment of your private ChatGPT/LLM web application",
|
||||
"display": "fullscreen",
|
||||
"display": "standalone",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/icons/icon-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/icons/maskable-icon-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/icons/icon-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/icons/maskable-icon-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
}
|
||||
],
|
||||
"id": "/",
|
||||
@@ -20,13 +34,28 @@
|
||||
"scope": "/",
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "https://registry.npmmirror.com/@lobehub/assets-favicons/1.4.0/files/assets/og-960x540.png",
|
||||
"sizes": "960x540",
|
||||
"src": "/screenshots/screenshot-1.png",
|
||||
"sizes": "750x1334",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/screenshots/screenshot-2.png",
|
||||
"sizes": "750x1334",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/screenshots/screenshot-3.png",
|
||||
"sizes": "750x1334",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/screenshots/screenshot-4.png",
|
||||
"sizes": "750x1334",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"short_name": "LobeChat",
|
||||
"splash_pages": null,
|
||||
"start_url": "/",
|
||||
"start_url": ".",
|
||||
"theme_color": "#000000"
|
||||
}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 115 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 115 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user