bit2r / bitGPT

Tools to use chatGPT for Koreans
https://r2bit.com/bitGPT
GNU General Public License v3.0
9 stars 1 forks source link
chatgpt r-package

bitGPT

Overview

chatGPT를 보다 쉽게 사용할 수 있는, 그리고 한국어를 지원하는 bitGPT.

Features:

Install bitGPT

github 리파지토리로부터 다음의 명령어로 패키지를 설치합니다.:

devtools::install_github("bit2r/bitGPT")

Prepare API keys

chatGPT를 사용하기 위해서는 OpenAI 링크에서 회원을 가입하고 OpenAI API key를 발급받아야 합니다. 가입 후 첫 3달은 18 US 달러 credit이 무료이나, 이후에는 유료임을 인지하고 진행하시기 바랍니다.

또한 한국어 환경으로 좀 더 편안한 사용을 위해서는 Naver 파파고 API key도 준비해야 합니다. 오픈 API 이용신청 링크에서 애플리케이션 등록(API 이용신청)을 통해서 API key를 발급받아야 합니다.

OpenAI API key 등록

API key는 공유되어서는 안됩니다. 예시에서는 OpenAI API key가 XXXXXXXXXXX임을 가정하였습니다.

regist_openai_key()를 한번 수행하면, 번거롭게 매번 세션마다 API key를 설정할 필요가 없습니다.

library(bitGPT)

# 실제 사용자가 할당받은 openai API key를 사용합니다.
regist_openai_key("XXXXXXXXXXX")

만약에 개인 컴퓨터가 아닌 여러 사용자가 사용하는 환경에 bitGPT 패키지를 설치한 경우라면, API key의 보안을 위해서 regist_openai_key()대신 set_openai_key()를 사용하세요.

set_openai_key()는 OpenAI API key를 R System environment에 설정하기 때문에 세션이 종료되고 다시 R을 구동해서 새로운 세션이 생기면, 재설정해야 합니다.

# 실제 사용자가 할당받은 openai API key를 사용합니다.
set_openai_key("XXXXXXXXXXX")

Naver 파파고 API key 등록

Naver 파파고 API key는 client IDclient secret로 구성되어 있습니다. OpenAI API key와 유사한 방법으로 regist_naver_key()를 한번 수행하여 등록하거나, set_naver_key()로 세션 내에서 설정합니다.

# 실제 사용자가 할당받은 Naver API key로 등록합니다.
regist_naver_key(client_id = "XXXXXXXXXXX", client_secret = "XXXXXXXXXXX")
# 실제 사용자가 할당받은 Naver API key로 설정합니다.
set_naver_key(client_id = "XXXXXXXXXXX", client_secret = "XXXXXXXXXXX")

Laguage translation

파파고 번역

translate()는 파파고 번역을 수행합니다.

translate(
  text = NULL,
  source = "ko",
  target = "en",
  client_id = Sys.getenv("NAVER_CLIENT_ID"),
  client_secret = Sys.getenv("NAVER_CLIENT_SECRET")
)

몇 개 문장을 번역해 봅니다.

text <- "빈센트 반 고흐 스타일로 일출과 갈매기를 그려줘"
translate(text)
#> [1] "Vincent van Gogh style, please draw sunrise and seagulls"

text <- "We’ve trained a model called ChatGPT which interacts in a conversational way. The dialogue format makes it possible for ChatGPT to answer followup questions, admit its mistakes, challenge incorrect premises, and reject inappropriate requests."
translate(text, "en", "ko")
#> [1] "우리는 대화 방식으로 상호 작용하는 ChatGPT이라는 모델을 훈련시켰다. 대화 형식을 통해 ChatGPT는 후속 질문에 답변하고, 실수를 인정하고, 잘못된 전제에 도전하고, 부적절한 요청을 거부할 수 있습니다."

Chat completion

Create chat completion with chatGPT

chatGPT를 이용해서 대화형 인터페이스를 만들 수 있습니다.

주어진 대화 히스토리를 기반으로, 대화를 지속하는 데 필요한 다음 문장을 생성합니다. 이 API는 이전 대화 히스토리를 계속해서 분석하고, 대화를 나아가는 데 필요한 정보를 자동으로 추론합니다.

여러분은 다음의 chat_completion()로 원하는 대화를 만들어 나갈 수 있습니다.

chat_completion(
  messages = NULL,
  model = c("gpt-3.5-turbo", "gpt-3.5-turbo-0301"),
  temperature = 1,
  top_p = 1,
  n = 1,
  stream = FALSE,
  stop = NULL,
  max_tokens = NULL,
  presence_penalty = 0,
  frequency_penalty = 0,
  logit_bias = NULL,
  user = NULL,
  type = c("messages", "console", "viewer"),
  openai_api_key = Sys.getenv("OPENAI_API_KEY")
)

몇가지 방법으로의 채팅을 수행해 보겠습니다.

type = “console”

이 방법은 message 객체의 결과를 좀더 보기 좋게 콘솔에 출력할 때 사용합니다.

> chat_completion("네 이름은 뭐니?", type = "console")
══ Chat with chatGPT ══════════════════════════════════════════════════════ user ══
네 이름은 뭐니?

══ Chat with chatGPT ═════════════════════════════════════════════════ assistant ══
제 이름은 OpenAI Assistive입니다. 저는 OpenAI의 인공지능 어시스턴트입니다.
> chat_completion("미세먼지가 많은 날은 어떻게 준비해야할까?", type = "console")
══ Chat with chatGPT ══════════════════════════════════════════════════════ user ══
미세먼지가 많은 날은 어떻게 준비해야할까?

══ Chat with chatGPT ═════════════════════════════════════════════════ assistant ══
미세먼지가 많은 날에는 다음과 같은 준비를 하면 좋습니다.

1. 마스크 착용 : 미세먼지를 막기 위해 마스크를 착용해야 합니다. 미세먼지가 심한 날에는 KF94 등급 이상의 마스크를 선택해야 합니다.

2. 실내 환기 방지 : 실내 공기를 집중적으로 정화하기 위해 창문, 문을 닫고 에어컨, 공기청정기를 돌리는 것이 좋습니다.

3. 외출 제한 : 미세먼지 농도가 매우 높은 날에는 가능한 실내에서 활동을 하는 것이 좋으며, 외출이 필요한 경우에는 마스크를 꼭 착용해야 합니다.

4. 적정한 수분 섭취 : 미세먼지로 인해 목이 건조해지는 경우가 많으므로, 충분한 수분을 섭취해 목을 적정한 상태로 유지해야 합니다.

5. 눈 건강 보호 : 미세먼지는 눈에도 영향을 미칠 수 있으므로, 안경이나 눈을 보호할 수 있는 고글을 착용하는 것이 좋습니다. 두통, 결막염 등이 있는 경우 병원 선생님 상담을 권장합니다.
> chat_completion("근의 공식을 설명해줘", type = "console")
══ Chat with chatGPT ══════════════════════════════════════════════════════ user ══
근의 공식을 설명해줘

══ Chat with chatGPT ═════════════════════════════════════════════════ assistant ══
근의 공식은 다음과 같습니다.

ax^2 + bx + c = 0 (a ≠ 0)라는 이차방정식이 주어졌을 때, 이 방정식의 근은 다음과 같은 공식을 이용하여 계산할 수 있습니다.

x = (-b ± √(b^2 - 4ac)) / 2a

여기에서,

- b는 이차항의 계수이며, x에 곱해진 계수의 합을 의미합니다.
- a는 이차항의 계수입니다.
- c는 상수항의 값입니다.
- √는 루트 기호를 나타냅니다.
- ±는 양수와 음수를 의미하는데, 이는 두 개의 식이 나올 수 있음을 나타냅니다.

이 공식을 이용하여 이차방정식의 근을 쉽게 구할 수 있습니다. 하지만 이 공식은 근의 개수에 따라 근의 실수, 허수, 중근 등으로 나눠져 있기 때문에 근을 구하기 전에 해당 방정식의 근의 개수가 어떤지 판별해야 합니다.
> chat_completion("피타고라스의 정리는 무엇이지?", type = "console")

피타고라스의 정리는 직각삼각형에서 빗변의 제곱이 나머지 두 변의 제곱의 합과 같다는 정리이다. 즉, $a^2+b^2=c^2$로 표현된다. 이러한 정리는 수학뿐만 아니라 공학, 물리학 등 다양한 분야에서 활용된다.

type = “messages”

이 방법은 질문과 답을 서로 주고 받는 채팅을 구현할 때 유용합니다. 왜냐하면 반환하는 messages 객체에는 주고 받은 메시지와 메시지에 대한 role이 리스트로 들어 있기 때문입니다.

bitGPT 패키지는 messages 객체를 핸들링하기 위한 다음의 함수(메소드)를 지원합니다.

다음은 단일 메시지의 사례입니다.

> chat_completion("R의 가장 큰 장점은 무엇일까?.", type = "messages")
[[1]]
[[1]]$role
[1] "user"

[[1]]$content
[1] "R의 가장 큰 장점은 무엇일까?."

[[2]]
[[2]]$role
[1] "assistant"

[[2]]$content
[1] "R의 가장 큰 장점은 데이터 분석과 시각화를 위한 강력한 도구들이 풍부하게 제공된다는 것입니다. R은 무료로 제공되는 오픈소스 소프트웨어로서, 다양한 패키지와 라이브러리를 활용하여 다양한 분석 및 시각화 기능을 구현할 수 있습니다. 이는 데이터 과학자 및 통계학자들이 데이터를 보다 쉽고 빠르게 분석, 시각화하며, 데이터에 포함된 패턴 및 트렌드를 쉽게 파악할 수 있다는 장점을 가지고 있습니다. 추가적으로 R은 통계학적 측면에서 강하며, 통계 분석 및 모델링을 위한 강력한 기능들을 제공하고 있습니다. 이는 데이터 과학 분야에서 매우 유용하다고 할 수 있습니다."

attr(,"class")
[1] "messages" "list" 

messages 객체를 만들어서 채팅을 수행하려 합니다.

> # 메시지 객체로 메시지를 정의하는 사례
> msg <- create_messages(user = "R을 이용한 통계학의 이해 커리큘럼을 부탁해",
+                        system = "assistant는 R을 이용해서 통계학을 가르치는 강사입니다.")
> # 메시지 객체로 반환
> answer <- chat_completion(msg, type = "messages")
> answer
[[1]]
[[1]]$role
[1] "system"

[[1]]$content
[1] "assistant는 R을 이용해서 통계학을 가르치는 강사입니다."

[[2]]
[[2]]$role
[1] "user"

[[2]]$content
[1] "R을 이용한 통계학의 이해 커리큘럼을 부탁해"

[[3]]
[[3]]$role
[1] "assistant"

[[3]]$content
[1] "R을 이용한 통계학 커리큘럼입니다.\n\n1. 기초 통계 이해\n- 기술통계학: 중심 경향성, 분산, 표준편차 등\n- 추론통계학: 가설검정, 신뢰구간, p-value 등\n- 확률의 이해: 확률의 정의, 덧셈과 곱셈 법칙 등\n\n2. R 환경 구축 및 R 기초 문법 학습\n- R 환경 구축: R 설치, RStudio 구축 등\n- R 기초 문법 학습: 변수, 함수, 벡터, 행렬 등\n\n3. 데이터 분석과 시각화\n- 데이터 전처리: 결측치, 이상치 처리 등\n- 데이터 시각화: 히스토그램, 막대그래프, 산점도 등\n- 통계 분석: 선형 회귀, 로지스틱 회귀, ANOVA, t-test 등\n\n4. 실제 데이터를 이용한 프로젝트 수행\n- 데이터 수집 및 전처리: 온라인 데이터, 공공데이터 등 사용\n- 데이터 시각화 및 분석: 주제에 따라 여러 분석 기법 사용\n- 보고서 작성: 분석 결과 해석 및 결론 도출\n\n위 커리큘럼을 기반으로 강의를 진행하면, 학생들은 R을 이용한 통계 데이터 분석 및 시각화에 대한 전반적인 이해를 할 수 있게 됩니다."

attr(,"class")
[1] "messages" "list"   

show() 함수를 이용하면 보기좋게 메시지를 살펴볼 수 있습니다.

> show(answer)
══ Chat with chatGPT ════════════════════════════════════════════════════ system ══
assistant는 R을 이용해서 통계학을 가르치는 강사입니다.

══ Chat with chatGPT ══════════════════════════════════════════════════════ user ══
R을 이용한 통계학의 이해 커리큘럼을 부탁해

══ Chat with chatGPT ═════════════════════════════════════════════════ assistant ══
R을 이용한 통계학 커리큘럼입니다.

1. 기초 통계 이해
- 기술통계학: 중심 경향성, 분산, 표준편차 등
- 추론통계학: 가설검정, 신뢰구간, p-value 등
- 확률의 이해: 확률의 정의, 덧셈과 곱셈 법칙 등

2. R 환경 구축 및 R 기초 문법 학습
- R 환경 구축: R 설치, RStudio 구축 등
- R 기초 문법 학습: 변수, 함수, 벡터, 행렬 등

3. 데이터 분석과 시각화
- 데이터 전처리: 결측치, 이상치 처리 등
- 데이터 시각화: 히스토그램, 막대그래프, 산점도 등
- 통계 분석: 선형 회귀, 로지스틱 회귀, ANOVA, t-test 등

4. 실제 데이터를 이용한 프로젝트 수행
- 데이터 수집 및 전처리: 온라인 데이터, 공공데이터 등 사용
- 데이터 시각화 및 분석: 주제에 따라 여러 분석 기법 사용
- 보고서 작성: 분석 결과 해석 및 결론 도출

위 커리큘럼을 기반으로 강의를 진행하면, 학생들은 R을 이용한 통계 데이터 분석 및 시각화에 대한 전반적인 이해를 할 수 있게 됩니다.

type = “viewer”

이 방법은 답변의 결과에 R 코드가 포함되어 있을 때 유용합니다. 반환된 결과를 R 마크다운으로 수행하여 HTML로 만든 후 브라우저에 띄워줍니다.

다만, 경우에 따라서 답변의 결과 포함된 R 코드가 실행 중에 에러가 발생할 수 있는 불완전한 Pseudo 코드일 수 있습니다.

앞서 chatGPT assistant의 답변에 부족함이 보여서, 커리큘럼에 tidyverse 패키지에 대한 내용을 추가하려 합니다. 그래서 add() 함수로 이전 질문의 결과에 추가 질문을 추가합니다.

# 반환받은 메시지 객체에 질의를 위한 user role의 메시지 추가
> msg <- add(answer, user = "커리큘럼에 tidyverse 패키지를 사용하는 방법을 추가해줘.")

추가된 질문은 type 인수를 “viewer”로 설정하였습니다. 그래서 브라우저로 결과가 출력되겠지만, 할당 연산자를 이용해서 결과인 message 객체를 저장해둘 수도 있습니다.

# 이전 메시지를 포함하여 추가 질의
> answer2 <- chat_completion(msg, type = "viewer")

이 코드가 실행되면, 다음 그림처럼 메시지들이 웹 브라우저에 출력됩니다.

결과의 HTML 프라우징 화면

할당해 두었던 message 객체인 answer2를 다음처럼 show() 함수로 보기 좋게 출력할 수도 있고, 메시지를 추가해서 다시 질의할 수도 있습니다.

> show(answer2)
══ Chat with chatGPT ════════════════════════════════════════════════════ system ══
assistant는 R을 이용해서 통계학을 가르치는 강사입니다.

══ Chat with chatGPT ══════════════════════════════════════════════════════ user ══
R을 이용한 통계학의 이해 커리큘럼을 부탁해

══ Chat with chatGPT ═════════════════════════════════════════════════ assistant ══
R을 이용한 통계학 커리큘럼입니다.

1. 기초 통계 이해
- 기술통계학: 중심 경향성, 분산, 표준편차 등
- 추론통계학: 가설검정, 신뢰구간, p-value 등
- 확률의 이해: 확률의 정의, 덧셈과 곱셈 법칙 등

2. R 환경 구축 및 R 기초 문법 학습
- R 환경 구축: R 설치, RStudio 구축 등
- R 기초 문법 학습: 변수, 함수, 벡터, 행렬 등

3. 데이터 분석과 시각화
- 데이터 전처리: 결측치, 이상치 처리 등
- 데이터 시각화: 히스토그램, 막대그래프, 산점도 등
- 통계 분석: 선형 회귀, 로지스틱 회귀, ANOVA, t-test 등

4. 실제 데이터를 이용한 프로젝트 수행
- 데이터 수집 및 전처리: 온라인 데이터, 공공데이터 등 사용
- 데이터 시각화 및 분석: 주제에 따라 여러 분석 기법 사용
- 보고서 작성: 분석 결과 해석 및 결론 도출

위 커리큘럼을 기반으로 강의를 진행하면, 학생들은 R을 이용한 통계 데이터 분석 및 시각화에 대한 전반적인 이해를 할 수 있게 됩니다.

══ Chat with chatGPT ══════════════════════════════════════════════════════ user ══
커리큘럼에 tidyverse 패키지를 사용하는 방법을 추가해줘.

══ Chat with chatGPT ═════════════════════════════════════════════════ assistant ══
물론입니다. tidyverse 패키지는 데이터 처리 및 시각화를 용이하게 해주는 많은 패키지를 포함합니다. 아래 커리큘럼에 tidyverse 패키지를 추가하겠습니다.

1. 기초 통계 이해
- 기술통계학: 중심 경향성, 분산, 표준편차 등
- 추론통계학: 가설검정, 신뢰구간, p-value 등
- 확률의 이해: 확률의 정의, 덧셈과 곱셈 법칙 등

2. R 환경 구축 및 R 기초 문법 학습
- R 환경 구축: R 설치, RStudio 구축 등
- R 기초 문법 학습: 변수, 함수, 벡터, 행렬 등

3. 데이터 처리와 시각화
- tidyverse 패키지: dplyr, ggplot2 등의 패키지를 활용한 데이터 처리와 시각화 기법
- 데이터 전처리: 결측치, 이상치 처리 등
- 데이터 시각화: 히스토그램, 막대그래프, 산점도 등

4. 통계 분석과 적용
- 통계 분석: 선형 회귀, 로지스틱 회귀, ANOVA, t-test 등
- 실제 데이터 분석: tidyverse 패키지와 통계 분석을 활용한 실제 데이터 분석

5. 실제 데이터를 이용한 프로젝트 수행
- 데이터 수집 및 전처리: 온라인 데이터, 공공데이터 등 사용
- 데이터 시각화 및 분석: 주제에 따라 여러 분석 기법 사용
- 보고서 작성: 분석 결과 해석 및 결론 도출

위 커리큘럼을 활용하여 tidyverse 패키지를 사용한 데이터 처리와 시각화 기법을 학생들이 배울 수 있습니다. 이를 통해 데이터 분석에 대한 이해도가 높아질 것입니다.

Image processing

Create image with chatGPT

chatGPT를 이용해서, 생성할 이미지를 설명하는 프롬프트에 부합하는 이미지를 생성할 수 있습니다.

여러분은 다음의 draw_img()로 원하는 그림을 그리는 화가가 될 수 있습니다.

draw_img(
  prompt,
  ko2en = TRUE,
  n = 1L,
  size = c("1024x1024", "256x256", "512x512"),
  type = c("url", "image", "file"),
  format = c("png", "jpeg", "gif"),
  path = "./",
  fname = "aidrawing",
  openai_api_key = Sys.getenv("OPENAI_API_KEY")
)

빈센트 반 고흐 스타일로 해변에서의 일출과 갈매기를 그려보겠습니다.

영어 프롬프트로 그림을 그립니다. ko2en 인수값은 FALSE로 지정합니다. 이 예제는 그려진 이미지에 접근할 수 있는 URL을 반환합니다.

prompt_en <- "Draw a sunrise and a seagull in Vincent van Gogh style."
draw_img(prompt_en, ko2en = FALSE)

한글 프롬프트로 그림을 그립니다. 그려진 결과는 R 플롯으로 반환되므로 RStudio 환경이라면, Plots 패널에서 확인할 수 있습니다.

prompt_ko <- "빈센트 반 고흐 스타일로 일출과 갈매기를 그려줘"
draw_img(prompt_ko, type = "image")

파일로 출력하고 싶다면 type의 값을 “file”로 지정합니다. 파일의 경로와 이름을 지정하지 않았기 때문에, 현재의 working directory에 “aidrawing.png”라는 이름으로 생성됩니다.

draw_img(prompt_ko, type = "file")

그리는 그림의 모양은 매번 달라집니다. 다음은 고흐가 그린 일출과 갈매기 작품입니다.

<img src="man/figures/gogh_01.png" style="width:60.0%;height:60.0%" alt="고흐풍 드로잉" /> <img src="man/figures/gogh_02.png" style="width:60.0%;height:60.0%" alt="고흐풍 드로잉" /> <img src="man/figures/aidrawing.png" style="width:60.0%;height:60.0%" alt="고흐풍 드로잉" />

Edit image with chatGPT

chatGPT를 이용해서, 이미지를 편집할 수 있습니다.

여러분은 다음의 draw_img_edit()로 원하는 이미지의 특정 부분을 퍈집할 수 있습니다. 함수의 인수는 draw_img_variation()와 거의 유사합니다. image 인수에 편집할 원래의 이미지 파일을, mask에 편집할 부분을 선택하는(mask) 이미지 파일을 지정하면 됩니다. 그리고 prompt에는 편집할 부분의 편집 내용을 기술합니다.

draw_img_edit(
  image,
  mask,
  prompt,
  ko2en = TRUE,
  n = 1L,
  size = c("1024x1024", "256x256", "512x512"),
  type = c("url", "image", "file"),
  format = c("png", "jpeg", "gif"),
  path = "./",
  fname = "aiedit",
  openai_api_key = Sys.getenv("OPENAI_API_KEY")
)

bitGPT 패키지에는 “cloud.png” 파일을 제공하고 있습니다. 이 파일은 정사각형 규격의 이미지 파일로 다음과 같습니다.

원 소스 이미지

그리고 mask를 위한 파일로 “cloud_mask.png” 파일을 제공하고 있습니다. 이 파일 역시 정사각형 규격의 이미지 파일로 다음과 같습니다. 그리고 이미지의 크기는 “cloud.png” 파일과 동일합니다.

마스크 이미지

“cloud.png” 이미지 파일을 편집해 보겠습니다.

# 편집할 이미지
image <- system.file("images", "cloud.png", package = "bitGPT")

# Mask 이미지
mask <- system.file("images", "cloud_mask.png", package = "bitGPT")

# 이미지를 반환
draw_img_edit(image, mask, prompt = "하늘을 날아다니는 UFO", type = "image")
편집된 이미지

Variate image with chatGPT

chatGPT를 이용해서, 이미지를 변형할 수 있습니다.

여러분은 다음의 draw_img_variation()로 원하는 이미지를 유사하게 다른 이미지를 변형할 수 있습니다. 함수의 인수는 draw_img()와 거의 유사합니다. image 인수에 변형하고자 할 원래의 이미지 파일을 지정하면 됩니다.

draw_img_variation(
  image,
  n = 1L,
  size = c("1024x1024", "256x256", "512x512"),
  type = c("url", "image", "file"),
  format = c("png", "jpeg", "gif"),
  path = "./",
  fname = "aivariation",
  openai_api_key = Sys.getenv("OPENAI_API_KEY")
)

앞에서 소개한 “cloud.png” 이미지 파일을 변형해 보겠습니다.

# 변형할 이미지
image <- system.file("images", "cloud.png", package = "bitGPT")

draw_img_variation(image, type = "image")
변형된 이미지

Speech to text

Speech to Text with chatGPT

chatGPT를 이용해서, 음성 오디오 파일로 STT(Speech to Text )를 수행합니다.

여러분은 transcript_audio()로 STT를 수행할 수 있습니다.

transcript_audio(
  file,
  language = "ko",
  openai_api_key = Sys.getenv("OPENAI_API_KEY")
)

bitGPT 패키지에는 “korea_r_user.m4a” 파일을 제공하고 있습니다. 이 파일은 한국R사용자회 소개하는 짧은 음성파일입니다. 성능이 좋지 않는 스피치의 텍스트 전환의 성능을 판단하기 위해서, 스피치의 성능은 높지 않게 생성했습니다. 잘못 발음하여 다시 발음하거나, 문장내에서 띄어 읽는 부분이 부자연스러운 곳도 있습니다.

# 음성 오디오 파일
speech <- system.file("audios", "korea_r_user.m4a", package = "bitGPT")

# 음성 오디오를 텍스트로 전환
transcript_audio(speech)
text 
"사단법인 한국R 사용자예는 디지털 분평 등 해소와 통계 대중화를 위해 2020년 설립되었습니다. 
오픈 통계 패키지 개발을 비롯하여 최근에 통계 및 데이터 과학 관련 오픈 전자책도 함께 제작하여 발간하고 있습니다. 
통계 패키지와 통계 및 데이터 과학 책은 사용자의 회원들의 자발적인 참여로 개발 및 유지 보수되고 있습니다. 
데이터 과학 분야의 인공지능 ai 체질 비트와 공존을 본격적으로 탐색하기 시작했습니다." 

스피치의 대상이 되는 원문 문장은 다음과 같습니다.

사단법인 한국 R 사용자회는 디지털 불평등 해소와 통계 대중화를 위해 2022년 설립되었습니다. 
오픈 통계 패키지 개발을 비롯하여 최근에 통계 및 데이터 과학 관련 오픈 전자책도 함께 제작하여 발간하고 있습니다. 
통계 패키지와 통계 및 데이터 과학 전자책은 사용자회 회원들의 자발적인 참여로 개발 및 유지보수 되고 있습니다. 
데이터 과학 분야 인공지능 AI chatGPT와 공존을 본격적으로 탐색하기 시작했습니다.