Skip to content

Commit 984ce66

Browse files
feat: generate image Tool (Nano Banana) (#284)
Co-authored-by: cgoing-bot <[email protected]>
1 parent 9ca4d40 commit 984ce66

File tree

29 files changed

+1258
-144
lines changed

29 files changed

+1258
-144
lines changed

README.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88

99
🚀 **[Live Demo](https://better-chatbot-demo.vercel.app/)** | See the experience in action in the [preview](#preview) below!
1010

11-
[Demo Chat](https://better-chatbot-demo.vercel.app/export/a4820921-8012-496b-8a5d-13757050bafe)
11+
#### Demo Chats
12+
13+
- **MCP Tools Demo:** [Chat with MCP Tools](https://better-chatbot-demo.vercel.app/export/a4820921-8012-496b-8a5d-13757050bafe)
14+
- **Image Generation Demo:** [Chat with Image Generation](https://better-chatbot-demo.vercel.app/export/image-generation-demo-12345)
1215

1316
**Better Chatbot** - A better open-source AI chatbot for individuals and teams, inspired by ChatGPT, Claude, Grok, and Gemini.
1417

@@ -205,6 +208,15 @@ Built-in web search powered by [Exa AI](https://exa.ai). Search the web with sem
205208
- **Free Tier:** 1,000 requests/month at no cost, no credit card required
206209
- **Easy Setup:** Get your API key instantly at [dashboard.exa.ai](https://dashboard.exa.ai)
207210

211+
#### 🎨 Image Generation
212+
213+
<img width="1034" height="940" loading="lazy" alt="image-generation" src="https://github.com/user-attachments/assets/placeholder-image" />
214+
215+
Built-in image generation and editing capabilities powered by AI models. Create, edit, and modify images directly in your chats.
216+
217+
- **Supported Operations:** Image generation, editing, and composition
218+
- **Current Models:** Gemini Nano Banana, OpenAI (coming soon)
219+
208220
#### ⚡️ JS,PYTHON Executor
209221

210222
<img width="1225" alt="js-executor-preview" src="https://github.com/user-attachments/assets/7deed824-e70b-46d4-a294-de20ed4dc869" loading="lazy"/>
@@ -424,7 +436,7 @@ Step-by-step setup guides for running and configuring better-chatbot.
424436
Planned features coming soon to better-chatbot:
425437

426438
- [x] **File Upload & Storage** (Vercel Blob integration)
427-
- [ ] **Image Generation**
439+
- [x] **Image Generation**
428440
- [ ] **Collaborative Document Editing** (like OpenAI Canvas: user & assistant co-editing)
429441
- [ ] **RAG (Retrieval-Augmented Generation)**
430442
- [ ] **Web-based Compute** (with [WebContainers](https://webcontainers.io) integration)

messages/en.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,12 @@
195195
"Error": "Chat Error",
196196
"thisMessageWasNotSavedPleaseTryTheChatAgain": "This message was not saved. Please try the chat again.",
197197
"uploadImage": "Upload Image",
198+
"generateImage": "Generate Image",
198199
"imageUploadedSuccessfully": "Image uploaded successfully",
199200
"pleaseUploadImageFile": "Please upload an image file",
200201
"imageSizeMustBeLessThan10MB": "Image size must be less than 10MB",
201202
"failedToUploadImage": "Failed to upload image",
203+
"imageUploadFailedUsingBase64": "Image upload failed. Using base64 encoding as fallback.",
202204
"Greeting": {
203205
"goodMorning": "Good morning, {name}",
204206
"goodAfternoon": "Good afternoon, {name}",

messages/es.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,12 @@
7575
"Error": "Error de Chat",
7676
"thisMessageWasNotSavedPleaseTryTheChatAgain": "Este mensaje no se guardó. Por favor, intenta el chat nuevamente.",
7777
"uploadImage": "Subir Imagen",
78+
"generateImage": "Generar Imagen",
7879
"imageUploadedSuccessfully": "Imagen subida exitosamente",
7980
"pleaseUploadImageFile": "Por favor sube un archivo de imagen",
8081
"imageSizeMustBeLessThan10MB": "El tamaño de la imagen debe ser menor a 10MB",
8182
"failedToUploadImage": "Error al subir la imagen",
83+
"imageUploadFailedUsingBase64": "Error al subir la imagen. Usando codificación base64 como alternativa.",
8284
"Greeting": {
8385
"goodMorning": "Buenos días, {name}",
8486
"goodAfternoon": "Buenas tardes, {name}",

messages/fr.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,12 @@
7575
"Error": "Erreur de Chat",
7676
"thisMessageWasNotSavedPleaseTryTheChatAgain": "Ce message n'a pas été enregistré. Veuillez réessayer le chat.",
7777
"uploadImage": "Télécharger une Image",
78+
"generateImage": "Générer une Image",
7879
"imageUploadedSuccessfully": "Image téléchargée avec succès",
7980
"pleaseUploadImageFile": "Veuillez télécharger un fichier image",
8081
"imageSizeMustBeLessThan10MB": "La taille de l'image doit être inférieure à 10 Mo",
8182
"failedToUploadImage": "Échec du téléchargement de l'image",
83+
"imageUploadFailedUsingBase64": "Le téléchargement de l'image a échoué. Utilisation de l'encodage base64 comme solution de secours.",
8284
"Greeting": {
8385
"goodMorning": "Bonjour, {name}",
8486
"goodAfternoon": "Bon après-midi, {name}",

messages/ja.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,12 @@
7575
"Error": "チャットエラー",
7676
"thisMessageWasNotSavedPleaseTryTheChatAgain": "このメッセージは保存されませんでした。もう一度チャットをお試しください。",
7777
"uploadImage": "画像をアップロード",
78+
"generateImage": "画像を生成",
7879
"imageUploadedSuccessfully": "画像が正常にアップロードされました",
7980
"pleaseUploadImageFile": "画像ファイルをアップロードしてください",
8081
"imageSizeMustBeLessThan10MB": "画像サイズは10MB未満である必要があります",
8182
"failedToUploadImage": "画像のアップロードに失敗しました",
83+
"imageUploadFailedUsingBase64": "画像のアップロードに失敗しました。Base64エンコーディングを使用して送信します。",
8284
"Greeting": {
8385
"goodMorning": "おはようございます、{name}さん",
8486
"goodAfternoon": "こんにちは、{name}さん",

messages/ko.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,12 @@
7676
"Error": "채팅 오류",
7777
"thisMessageWasNotSavedPleaseTryTheChatAgain": "이 메시지는 저장되지 않았습니다. 다시 시도해주세요.",
7878
"uploadImage": "이미지 업로드",
79+
"generateImage": "이미지 만들기",
7980
"imageUploadedSuccessfully": "이미지가 성공적으로 업로드되었습니다",
8081
"pleaseUploadImageFile": "이미지 파일을 업로드해주세요",
8182
"imageSizeMustBeLessThan10MB": "이미지 크기는 10MB 미만이어야 합니다",
8283
"failedToUploadImage": "이미지 업로드에 실패했습니다",
84+
"imageUploadFailedUsingBase64": "이미지 업로드에 실패했습니다. Base64 인코딩을 사용하여 전송합니다.",
8385
"Greeting": {
8486
"goodMorning": "{name}님 좋은 아침입니다",
8587
"goodAfternoon": "{name}님 좋은 오후입니다",

messages/zh.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,12 @@
7676
"Error": "聊天错误",
7777
"thisMessageWasNotSavedPleaseTryTheChatAgain": "此消息未保存。请重试聊天。",
7878
"uploadImage": "上传图片",
79+
"generateImage": "生成图片",
7980
"imageUploadedSuccessfully": "图片上传成功",
8081
"pleaseUploadImageFile": "请上传图片文件",
8182
"imageSizeMustBeLessThan10MB": "图片大小必须小于10MB",
8283
"failedToUploadImage": "上传图片失败",
84+
"imageUploadFailedUsingBase64": "图片上传失败。使用Base64编码发送。",
8385
"Greeting": {
8486
"goodMorning": "早上好,{name}",
8587
"goodAfternoon": "下午好,{name}",

package.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
"@ai-sdk/xai": "^2.0.23",
5858
"@aws-sdk/client-s3": "^3.901.0",
5959
"@aws-sdk/s3-request-presigner": "^3.901.0",
60+
"@google/genai": "^1.22.0",
6061
"@modelcontextprotocol/sdk": "^1.19.1",
6162
"@openrouter/ai-sdk-provider": "^1.2.0",
6263
"@radix-ui/react-accordion": "^1.2.12",
@@ -152,10 +153,7 @@
152153
"vitest": "^3.2.4"
153154
},
154155
"lint-staged": {
155-
"*.{js,json,mjs,ts,yaml,tsx,css}": [
156-
"pnpm format",
157-
"pnpm lint:fix"
158-
]
156+
"*.{js,json,mjs,ts,yaml,tsx,css}": ["pnpm format", "pnpm lint:fix"]
159157
},
160158
"packageManager": "[email protected]",
161159
"engines": {

0 commit comments

Comments
 (0)