Skip to content

Commit

Permalink
Merge pull request #3
Browse files Browse the repository at this point in the history
1.3.0 업데이트
  • Loading branch information
milkyway0308 authored Apr 27, 2024
2 parents 8900200 + 3cfd46a commit 3aff981
Show file tree
Hide file tree
Showing 120 changed files with 1,955 additions and 1,852 deletions.
135 changes: 135 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# Created by https://www.toptal.com/developers/gitignore/api/intellij+all,java,kotlin
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij+all,java,kotlin

### Intellij+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# AWS User-specific
.idea/**/aws.xml

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# SonarLint plugin
.idea/sonarlint/

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

### Intellij+all Patch ###
# Ignore everything but code style settings and run configurations
# that are supposed to be shared within teams.

.idea/*

!.idea/codeStyles
!.idea/runConfigurations

### Java ###
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*

# Configuration files
*.yml
*.db

### Kotlin ###
# Compiled class file

# Log file

# BlueJ files

# Mobile Tools for Java (J2ME)

# Package Files #

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml

# End of https://www.toptal.com/developers/gitignore/api/intellij+all,java,kotlin
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
### Devain Standalone - OpenAI Discord Bot
# Devain Standalone - OpenAI Discord Bot

Devain은 [데비안 리눅스](https://www.debian.org/)에서 이름을 가져온 [OpenAI API](https://platform.openai.com/docs/api-reference) 기반 디스코드 봇 프로젝트입니다.

Expand All @@ -14,14 +14,20 @@ Devain은 OpenAI의 API를 통해 GPT 기능을 디스코드에서 사용함을

[해당 문서](/docs/commands.md)를 확인하세요.


### 자주 물어는 볼 것 같은 질문

#### 봇에는 무슨 권한을 넣어야 합니까?
Slash Command 권한 외에는 사용하지 않는 클린한 봇입니다!

최소한의 권한으로 즐겨보세요.

#### 직접 봇을 구동하고 싶지 않습니다.
봇의 개발자와 친목을 다져보세요. 개발자의 디스코드 ID는 skywolf46입니다.

DevAin 공식 디스코드 봇은 비공개로 운영되고 있으며, 몇몇 선택된 서버에서만 사용 가능합니다.

선택된 서버들에서의 구동 비용은 개발자가 부담하고 있습니다.

#### ChatGPT가 헛소리를 합니다.
![](images/breakdown.jpg)<br>
이제 말을 들을거라고 봅니다.
Expand All @@ -30,14 +36,6 @@ Slash Command 권한 외에는 사용하지 않는 클린한 봇입니다!

귀찮았습니다. 추후 업데이트를 통해 선택 가능하도록 변경될 예정입니다.

#### 왜 설정 파일로 property를..?

귀찮았습니다. 추후 toml로 변경됩니다.

#### 게다가 환율은 왜 하드코딩이?

귀찮았습니다. 추후 환율 API를 사용해 실시간으로 업데이트되도록 할 예정입니다.

#### 대체 소모 비용은 왜 넣어둔겁니까?

쓰는 사람들에게 돈의 소중함을 알려주기 위해 넣어보았습니다.
Expand All @@ -50,6 +48,8 @@ Slash Command 권한 외에는 사용하지 않는 클린한 봇입니다!

표면상으로는 MIT를 넣어두었지만, 사실 이 코드는 [니 마음대로 하세요](https://en.wikipedia.org/wiki/WTFPL)™ 라이선스를 따릅니다.

이 Q&A를 읽은 사람만이 MIT 라이선스에 낚이지 않고 자유롭게 코드를 수정할 수 있습니다.


### 나중에 할 것 (TODO (2) - 복사본 - 복사본)
- [ ] Single-Turn AI 지원하기
Expand Down
22 changes: 10 additions & 12 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,30 +1,28 @@
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.8.20'
id 'org.jetbrains.kotlin.jvm' version '1.8.22'
id 'com.github.johnrengelman.shadow' version '7.1.2'
}

group = 'org.example'
group = 'skywolf46'
version = rootProject.properties["version"]

repositories {
mavenCentral()
maven {
url = "https://repo.trinarywolf.net/releases"
}
}

dependencies {
String ktor_version = "2.1.0"
testImplementation 'org.jetbrains.kotlin:kotlin-test'
implementation("net.dv8tion:JDA:5.0.0-beta.5") {
exclude module: 'opus-java'
}
implementation "io.ktor:ktor-client-core:$ktor_version"
implementation "io.ktor:ktor-client-cio:$ktor_version"
implementation "io.ktor:ktor-client-websockets:$ktor_version"
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
implementation "io.arrow-kt:arrow-core:${rootProject.properties["arrow_version"]}"
implementation("org.xerial:sqlite-jdbc:3.41.2.1")
implementation("io.insert-koin:koin-core:3.4.0")
implementation 'com.knuddels:jtokkit:0.4.0'
implementation("org.jetbrains.kotlin:kotlin-stdlib")
implementation("com.knuddels:jtokkit:0.4.0")
implementation("skywolf46:devain-version-full:1.3.2")
implementation("skywolf46:devain-api-call:1.3.3")
implementation("skywolf46:devain-configurator-yaml:1.3.1")
}

test {
Expand Down
64 changes: 30 additions & 34 deletions docs/commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,47 +2,43 @@

해당 문서에서는 DevAin Standalone 기준 명령어를 확인할 수 있습니다.

해당 문서는 DevAin Standalone 1.2.0 (Grenade Muffin)을 기준으로 작성되었습니다.
해당 문서는 DevAin Standalone 1.3.0(Radioactive Emmer Bread)을 기준으로 작성되었습니다.

##### Devain

| 명령어 | 설명 |
|-------------|---------------------------|
| /status | DevAin 봇의 상태를 확인합니다. |
| /update-log | DevAin 봇의 업데이트 로그를 확인합니다. |
| 명령어 | 설명 |
|---------|----------------------|
| /status | DevAin 봇의 상태를 확인합니다. |

##### GPT Chat

| 명령어 | 설명 |
|-----------------------------|------------------------------------------------------------------------------------------|
| /ask [Content] | ChatGPT에게 질문합니다. 해당 명령어의 기본 값은 gpt-3.5-turbo입니다. 해당 명령어는 단일 세션이며, 이전 대화를 기록하지 않습니다. |
| /ask-fast [Content] | ChatGPT에게 질문합니다. 해당 명령어의 기본 값은 gpt-4-0613입니다. 해당 명령어는 단일 세션이며, 이전 대화를 기록하지 않습니다. |
| /ask-more-fast [Content] | ChatGPT에게 질문합니다. 해당 명령어의 기본 값은 gpt-4-1106-preview입니다. 해당 명령어는 단일 세션이며, 이전 대화를 기록하지 않습니다. |
| /ask-more [Content] | ChatGPT에게 질문합니다. 해당 명령어의 기본 값은 gpt-4입니다. 해당 명령어는 단일 세션이며, 이전 대화를 기록하지 않습니다. |
| /askto [Model] [Contents] | ChatGPT의 특정 모델에게 질문합니다. |
| /edit [Instruction] [Input] | OpenAI의 InstructionGPT를 이용하여 데이터를 생성합니다. |

##### GPT Chat Preset

| 명령어 | 설명 |
|---------------------------------------|--------------------|
| /preset user | 자신의 프리셋 목록을 확인합니다. |
| /preset user create [Name] [Preset] | 새 유저 프리셋을 생성합니다. |
| /preset user delete [Name] | 유저 프리셋을 삭제합니다. |
| /preset server | 서버 프리셋 목록을 확인합니다. |
| /preset server create [Name] [Preset] | 새 서버 프리셋을 생성합니다. |
| /preset server delete [Name] | 서버 프리셋을 삭제합니다. |
| 명령어 | 설명 |
|-------------------------------|------------------------------------------------------------------------------------------|
| /ask [Content] | ChatGPT에게 질문합니다. 해당 명령어의 기본 값은 gpt-3.5-turbo입니다. 해당 명령어는 단일 세션이며, 이전 대화를 기록하지 않습니다. |
| /ask-fast [Content] | ChatGPT에게 질문합니다. 해당 명령어의 기본 값은 gpt-4-0613입니다. 해당 명령어는 단일 세션이며, 이전 대화를 기록하지 않습니다. |
| /ask-more-fast [Content] | ChatGPT에게 질문합니다. 해당 명령어의 기본 값은 gpt-4-1106-preview입니다. 해당 명령어는 단일 세션이며, 이전 대화를 기록하지 않습니다. |
| /ask-more [Content] | ChatGPT에게 질문합니다. 해당 명령어의 기본 값은 gpt-4입니다. 해당 명령어는 단일 세션이며, 이전 대화를 기록하지 않습니다. |
| /ask-vision [Content] [Image] | ChatGPT에게 질문합니다. 해당 명령어의 기본 값은 gpt-4-vision입니다. 이 모델은 업로드된 이미지를 읽을 수 있습니다. |

##### Dall-E Generation
##### Cohere

| 명령어 | 설명 |
|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| /cohere [Content] | Cohere Command 모델에게 질문합니다. Cohere Command 모델은 영어 이외의 언어에 대해 출력 및 입력이 부실합니다. 해당 명령어는 단일 세션이며, 이전 대화를 기록하지 않습니다. |
| /rplus [Content] | Cohere Command R 모델에게 질문합니다. Cohere Command R 모델은 ChatGPT보다 필터가 덜하며, 한국어에 대한 출력 및 입력이 원활합니다. 환각이 심하며, 특정 지식보다는 프롬프트에 대한 해석 및 명령에 적합합니다. 해당 명령어는 단일 세션이며, 이전 대화를 기록하지 않습니다. |
| /rminus [Content] | Cohere Command R 모델에게 질문합니다. Cohere Command R+ 모델은 ChatGPT보다 필터가 덜하며, 한국어에 대한 출력 및 입력이 원활하고, 한국어에 대한 이해력이 좋습니다. 환각이 심하며, 특정 지식보다는 프롬프트에 대한 해석 및 명령에 적합합니다. 해당 명령어는 단일 세션이며, 이전 대화를 기록하지 않습니다. |

| 명령어 | 설명 |
|-----------------------------|------------------------------------------|
| /imagine [Prompt] | 프롬프트를 기준으로 Dall-E를 이용하여 이미지를 생성합니다. |
| /edit [Instruction] [Input] | OpenAI의 InstructionGPT를 이용하여 데이터를 생성합니다. |
| /dream [engine] [Prompt] | DreamStudio API를 이용해 이미지를 생성합니다. |
#### Groq

##### DreamBooth Image Generation
| 명령어 | 설명 |
|--------------------|----------------------------------------------|
| /xllama [Content] | Groq Cloud API를 통해 Llama3 70B 모델에 질의합니다. |
| /llama [Content] | Groq Cloud API를 통해 Llama3 8B 모델에 질의합니다. |
| /mixtral [Content] | Groq Cloud API를 통해 Mixtral 8 x 7B 모델에 질의합니다. |
| /gemma [Content] | Groq Cloud API를 통해 Gemma 모델에 질의합니다. |

##### Dall-E Generation

| 명령어 | 설명 |
|-----------------------------|------------------------------------------|
| /dream [engine] [Prompt] | DreamStudio API를 이용해 이미지를 생성합니다. |
| 명령어 | 설명 |
|-----------------|---------------------------------------|
| /dalle [Prompt] | 프롬프트를 기준으로 Dall-E 2를 이용하여 이미지를 생성합니다. |
25 changes: 25 additions & 0 deletions docs/log/1_3_0_radioactive_emmer_bread.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# DevAin StandAlone
<hr/>

## Radioactive Emmer Bread (1.3.0)
Radioactive Emmer Bread는 여러 기능을 추가하고, 기존의 혼잡한 코드를 외부 디펜던시로 분리한 버전입니다.

## 설정 파일 분리
이전 버전까지는 한 파일에 데이터 및 토큰을 사용함으로써 혼잡한 설정과 레거시가 통합되어 불편함이 많았습니다.

1.3.0부터는, 새로운 설정 파일 솔루션을 도입하여 YAML 형태로 간편히 설정이 가능합니다.


## 새로운 모델 추가
Command R+, Claude, Groq과 같은 추가적인 연동이 가능해집니다.

## 실험적 기능 추가
ChatGPT에 연동된 실험적 기능, Arxiv 검색이 추가됩니다.

/arxiv-gpt [명령]으로 논문을 검색하고, ChatGPT를 통해 요약을 받아보세요.

## 구조 개선
기존 하드 코딩된 데이터에서 어노테이션을 통한 단순화가 이루어졌습니다.

## 라이브러리 분리
기존의 코드를 외부 라이브러리로 분리하여, 코드 베이스의 가독성을 높였습니다.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
kotlin.code.style=official
arrow_version=1.1.5
version=1.2.0-Grenade-Muffin
version=1.3.0-Radioactive-Emmer-Bread
5 changes: 4 additions & 1 deletion src/main/kotlin/skywolf46/devain/Constants.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,14 @@ const val KEY_DALLE_PROCEED_COUNT = "dalle_proceed_count"
const val KEY_DALLE_PROCEED_TIME = "dalle_proceed_time"

const val KEY_COHERE_GENERATION_PROCEED_COUNT = "cohere_proceed_count"
const val KEY_COMMAND_R_PLUS_GENERATION_PROCEED_COUNT = "command_r_plus_proceed_count"

const val KEY_GROQ_GENERATION_PROCEED_COUNT = "groq_plus_proceed_count"

const val KEY_DREAM_STUDIO_SD_PROCEED_COUNT = "dreamstudio_sd_proceed_count"
const val KEY_DREAM_STUDIO_SD_PROCEED_TIME = "dreamstudio_sddalle_proceed_time"


const val KEY_DEEPL_PROCEED_COUNT = "deepl_proceed_count"
const val KEY_DEEPL_PROCEED_TOKEN = "deepl_proceed_token"

const val K_CURRENCY_API_CALL = "currency_api_call"
Loading

0 comments on commit 3aff981

Please sign in to comment.