From 0b96ab1668a700db9f8669b1b5a7495a16aeb482 Mon Sep 17 00:00:00 2001
From: arch3rPro <30855883+arch3rPro@users.noreply.github.com>
Date: Fri, 1 Aug 2025 15:01:31 +0800
Subject: [PATCH] feat: add app GPT4Free
---
README.md | 20 ++++++++
apps/gpt4free/0.5.7.0-slim/data.yml | 24 +++++++++
apps/gpt4free/0.5.7.0-slim/docker-compose.yml | 20 ++++++++
apps/gpt4free/0.5.7.0-slim/scripts/init.sh | 4 ++
apps/gpt4free/0.5.7.0/data.yml | 35 +++++++++++++
apps/gpt4free/0.5.7.0/docker-compose.yml | 22 +++++++++
apps/gpt4free/0.5.7.0/scripts/init.sh | 4 ++
apps/gpt4free/README.md | 46 ++++++++++++++++++
apps/gpt4free/README_en.md | 41 ++++++++++++++++
apps/gpt4free/data.yml | 27 ++++++++++
apps/gpt4free/latest/data.yml | 35 +++++++++++++
apps/gpt4free/latest/docker-compose.yml | 22 +++++++++
apps/gpt4free/latest/scripts/init.sh | 4 ++
apps/gpt4free/logo.png | Bin 0 -> 13412 bytes
14 files changed, 304 insertions(+)
create mode 100644 apps/gpt4free/0.5.7.0-slim/data.yml
create mode 100644 apps/gpt4free/0.5.7.0-slim/docker-compose.yml
create mode 100644 apps/gpt4free/0.5.7.0-slim/scripts/init.sh
create mode 100644 apps/gpt4free/0.5.7.0/data.yml
create mode 100644 apps/gpt4free/0.5.7.0/docker-compose.yml
create mode 100644 apps/gpt4free/0.5.7.0/scripts/init.sh
create mode 100644 apps/gpt4free/README.md
create mode 100644 apps/gpt4free/README_en.md
create mode 100644 apps/gpt4free/data.yml
create mode 100644 apps/gpt4free/latest/data.yml
create mode 100644 apps/gpt4free/latest/docker-compose.yml
create mode 100644 apps/gpt4free/latest/scripts/init.sh
create mode 100644 apps/gpt4free/logo.png
diff --git a/README.md b/README.md
index cb41581..b4689ef 100644
--- a/README.md
+++ b/README.md
@@ -160,6 +160,26 @@
+
+
+
+
+
+
+ GPT4Free
+
+
+🚀 免费的GPT-4和其他大语言模型API接口
+
+0.5.7.0 • [官网链接](https://github.com/xtekky/gpt4free)
+
+ |
+
+
+
+
+
+
#### 📝 文档与内容管理
diff --git a/apps/gpt4free/0.5.7.0-slim/data.yml b/apps/gpt4free/0.5.7.0-slim/data.yml
new file mode 100644
index 0000000..6cc825a
--- /dev/null
+++ b/apps/gpt4free/0.5.7.0-slim/data.yml
@@ -0,0 +1,24 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Web Interface Port
+ labelZh: Web界面端口
+ label:
+ en: Web Interface Port
+ zh: Web界面端口
+ zh-Hant: Web界面埠
+ required: true
+ rule: paramPort
+ type: number
+ - default: 1337
+ envKey: PANEL_APP_PORT_API
+ labelEn: API Port
+ labelZh: API接口端口
+ label:
+ en: API Port
+ zh: API接口端口
+ zh-Hant: API接口埠
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/gpt4free/0.5.7.0-slim/docker-compose.yml b/apps/gpt4free/0.5.7.0-slim/docker-compose.yml
new file mode 100644
index 0000000..4f1afd0
--- /dev/null
+++ b/apps/gpt4free/0.5.7.0-slim/docker-compose.yml
@@ -0,0 +1,20 @@
+services:
+ gpt4free:
+ image: hlohaus789/g4f:0.5.7.0-slim
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ volumes:
+ - ./har_and_cookies:/app/har_and_cookies
+ - ./generated_media:/app/generated_media
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_API}:8080
+ environment:
+ - OLLAMA_HOST=host.docker.internal
+ labels:
+ createdBy: "Apps"
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/gpt4free/0.5.7.0-slim/scripts/init.sh b/apps/gpt4free/0.5.7.0-slim/scripts/init.sh
new file mode 100644
index 0000000..df14afb
--- /dev/null
+++ b/apps/gpt4free/0.5.7.0-slim/scripts/init.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+chown -R 1000:1000 har_and_cookies
+chown -R 1000:1000 generated_media
\ No newline at end of file
diff --git a/apps/gpt4free/0.5.7.0/data.yml b/apps/gpt4free/0.5.7.0/data.yml
new file mode 100644
index 0000000..57e44a5
--- /dev/null
+++ b/apps/gpt4free/0.5.7.0/data.yml
@@ -0,0 +1,35 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Web Interface Port
+ labelZh: Web界面端口
+ label:
+ en: Web Interface Port
+ zh: Web界面端口
+ zh-Hant: Web界面埠
+ required: true
+ rule: paramPort
+ type: number
+ - default: 1337
+ envKey: PANEL_APP_PORT_API
+ labelEn: API Port
+ labelZh: API接口端口
+ label:
+ en: API Port
+ zh: API接口端口
+ zh-Hant: API接口埠
+ required: true
+ rule: paramPort
+ type: number
+ - default: 7900
+ envKey: PANEL_APP_PORT_REMOTE
+ labelEn: Remote Desktop Port
+ labelZh: 远程桌面端口
+ label:
+ en: Remote Desktop Port
+ zh: 远程桌面端口
+ zh-Hant: 遠程桌面埠
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/gpt4free/0.5.7.0/docker-compose.yml b/apps/gpt4free/0.5.7.0/docker-compose.yml
new file mode 100644
index 0000000..bbffdbb
--- /dev/null
+++ b/apps/gpt4free/0.5.7.0/docker-compose.yml
@@ -0,0 +1,22 @@
+services:
+ gpt4free:
+ image: hlohaus789/g4f:latest
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ shm_size: 2gb
+ volumes:
+ - ./har_and_cookies:/app/har_and_cookies
+ - ./generated_media:/app/generated_media
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_API}:8080
+ - ${PANEL_APP_PORT_REMOTE}:7900
+ environment:
+ - OLLAMA_HOST=host.docker.internal
+ labels:
+ createdBy: "Apps"
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/gpt4free/0.5.7.0/scripts/init.sh b/apps/gpt4free/0.5.7.0/scripts/init.sh
new file mode 100644
index 0000000..90ee9cc
--- /dev/null
+++ b/apps/gpt4free/0.5.7.0/scripts/init.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+chown -R 1200:1201 har_and_cookies
+chown -R 1200:1201 generated_media
\ No newline at end of file
diff --git a/apps/gpt4free/README.md b/apps/gpt4free/README.md
new file mode 100644
index 0000000..5b82626
--- /dev/null
+++ b/apps/gpt4free/README.md
@@ -0,0 +1,46 @@
+# GPT4Free
+
+GPT4Free是一个开源项目,提供免费的GPT-4和其他大语言模型API接口。它支持多种模型,如GPT-4、Claude、Gemini等,让用户可以免费访问这些强大的AI模型。
+
+
+
+
+
+
+
+## 功能特点
+
+- 支持多种大语言模型,包括GPT-4、Claude、Gemini等
+- 提供类似OpenAI的API接口
+- 支持文本生成和图像生成
+- 内置Web界面,方便用户直接使用
+- 支持本地推理和远程API调用
+
+## 版本区别
+
+- latest:最新稳定版
+- version:当前最新版本号
+- version-slim:当前最新精简版(不包含远程桌面进行模型配置)
+
+## 使用方法
+
+安装完成后,可以通过以下方式访问GPT4Free:
+
+1. Web界面:访问 `http://您的IP:8080/chat/` 使用内置的聊天界面
+2. API接口:使用 `http://您的IP:1337/v1` 作为API基础URL
+
+## 环境变量
+
+- `OLLAMA_HOST`: Ollama服务器地址,默认为host.docker.internal
+
+## 端口说明
+
+- 8080: Web界面(也可用于API接口)
+- 1337: API接口
+- 7900: 远程桌面(用于提供者登录)
+
+## 更多信息
+
+- 官方网站:[g4f.dev](https://g4f.dev/)
+- GitHub仓库:[github.com/xtekky/gpt4free](https://github.com/xtekky/gpt4free)
+- 文档:[g4f.dev/docs](https://github.com/gpt4free/g4f.dev/blob/main/docs)
\ No newline at end of file
diff --git a/apps/gpt4free/README_en.md b/apps/gpt4free/README_en.md
new file mode 100644
index 0000000..cbc260e
--- /dev/null
+++ b/apps/gpt4free/README_en.md
@@ -0,0 +1,41 @@
+# GPT4Free
+
+GPT4Free is an open-source project that provides free access to GPT-4 and other large language models. It supports various models such as GPT-4, Claude, Gemini, and more, allowing users to access these powerful AI models for free.
+
+
+
+
+
+
+
+
+## Features
+
+- Support for multiple large language models including GPT-4, Claude, Gemini, and more
+- OpenAI-compatible API interface
+- Text and image generation capabilities
+- Built-in web interface for easy use
+- Support for both local inference and remote API calls
+
+## Usage
+
+After installation, you can access GPT4Free through:
+
+1. Web Interface: Visit `http://your-ip:8080/chat/` to use the built-in chat interface
+2. API Interface: Use `http://your-ip:1337/v1` as your API base URL
+
+## Environment Variables
+
+- `OLLAMA_HOST`: Ollama server address, defaults to host.docker.internal
+
+## Port Information
+
+- 8080: Web interface and API
+- 1337: Alternative API port
+- 7900: Remote desktop (for provider login)
+
+## More Information
+
+- Official Website: [g4f.dev](https://g4f.dev/)
+- GitHub Repository: [github.com/xtekky/gpt4free](https://github.com/xtekky/gpt4free)
+- Documentation: [g4f.dev/docs](https://github.com/gpt4free/g4f.dev/blob/main/docs)
\ No newline at end of file
diff --git a/apps/gpt4free/data.yml b/apps/gpt4free/data.yml
new file mode 100644
index 0000000..1fb30d5
--- /dev/null
+++ b/apps/gpt4free/data.yml
@@ -0,0 +1,27 @@
+name: GPT4Free
+tags:
+ - AI / 大模型
+title: 免费的GPT-4和其他大语言模型API接口
+description: GPT4Free是一个开源项目,提供免费的GPT-4和其他大语言模型API接口,支持多种模型如GPT-4、Claude、Gemini等。
+additionalProperties:
+ key: gpt4free
+ name: GPT4Free
+ tags:
+ - AI
+ shortDescZh: 免费的GPT-4和其他大语言模型API接口
+ shortDescEn: Free API for GPT-4 and other large language models
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://g4f.dev/
+ github: https://github.com/xtekky/gpt4free
+ document: https://github.com/gpt4free/g4f.dev/blob/main/docs
+ description:
+ en: Free API for GPT-4 and other large language models
+ zh: 免费的GPT-4和其他大语言模型API接口
+ zh-Hant: 免費的GPT-4和其他大語言模型API接口
+ memoryRequired: 2048
+ architectures:
+ - amd64
+ - arm64
diff --git a/apps/gpt4free/latest/data.yml b/apps/gpt4free/latest/data.yml
new file mode 100644
index 0000000..57e44a5
--- /dev/null
+++ b/apps/gpt4free/latest/data.yml
@@ -0,0 +1,35 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Web Interface Port
+ labelZh: Web界面端口
+ label:
+ en: Web Interface Port
+ zh: Web界面端口
+ zh-Hant: Web界面埠
+ required: true
+ rule: paramPort
+ type: number
+ - default: 1337
+ envKey: PANEL_APP_PORT_API
+ labelEn: API Port
+ labelZh: API接口端口
+ label:
+ en: API Port
+ zh: API接口端口
+ zh-Hant: API接口埠
+ required: true
+ rule: paramPort
+ type: number
+ - default: 7900
+ envKey: PANEL_APP_PORT_REMOTE
+ labelEn: Remote Desktop Port
+ labelZh: 远程桌面端口
+ label:
+ en: Remote Desktop Port
+ zh: 远程桌面端口
+ zh-Hant: 遠程桌面埠
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/gpt4free/latest/docker-compose.yml b/apps/gpt4free/latest/docker-compose.yml
new file mode 100644
index 0000000..bbffdbb
--- /dev/null
+++ b/apps/gpt4free/latest/docker-compose.yml
@@ -0,0 +1,22 @@
+services:
+ gpt4free:
+ image: hlohaus789/g4f:latest
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ shm_size: 2gb
+ volumes:
+ - ./har_and_cookies:/app/har_and_cookies
+ - ./generated_media:/app/generated_media
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8080
+ - ${PANEL_APP_PORT_API}:8080
+ - ${PANEL_APP_PORT_REMOTE}:7900
+ environment:
+ - OLLAMA_HOST=host.docker.internal
+ labels:
+ createdBy: "Apps"
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/gpt4free/latest/scripts/init.sh b/apps/gpt4free/latest/scripts/init.sh
new file mode 100644
index 0000000..90ee9cc
--- /dev/null
+++ b/apps/gpt4free/latest/scripts/init.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+chown -R 1200:1201 har_and_cookies
+chown -R 1200:1201 generated_media
\ No newline at end of file
diff --git a/apps/gpt4free/logo.png b/apps/gpt4free/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..68b2b4451d46c4f8b59f2a7764f16b14726c080c
GIT binary patch
literal 13412
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
z