Discourse AI + 데이터 탐색기?

오늘은 특히 쿼리가 필요하다고 생각했습니다. 엔지니어들에게 (너무 많이) 귀찮음을 주지 않으려고, 제가 아는 정보와 제가 원하는 것을 바탕으로 ChatGPT에게 데이터 탐색기 쿼리를 작성해 달라고 결정했습니다. ChatGPT가 거의 모든 것을 정확히 파악한 것(끝에 붙여서는 안 되는 세미콜론을 추가한 것을 제외하고)에 꽤 놀랐습니다.

여기 제가 몇 가지 파라미터를 제공하고 월별 전체 사용자 누적 합계를 보여주는 쿼리를 만들어 달라고 요청했을 때 ChatGPT가 만들어 준 쿼리입니다:

SELECT 
    timeframe "Month, Year",
    user_count as "Users Joined This Month",
    SUM(user_count) OVER (ORDER BY TO_DATE(timeframe, 'Month, YYYY'))::integer as "Users (Running Total)"
FROM (
    SELECT 
        TO_CHAR(u.created_at, 'Month, YYYY') as "timeframe",
        count(u.id) as "user_count"
    FROM 
        users u
    GROUP BY 
        timeframe
    ORDER BY
        timeframe
) subquery
ORDER BY 
    TO_DATE(timeframe, 'Month, YYYY')

데이터 탐색기 영역에 AI를 통합하는 것에 대해 고려해 본 적이 있나요? :slight_smile:

12개의 좋아요

게시물이 새 주제로 분리되었습니다: Explorer 쿼리를 공유하기 위해 주제를 다시 열 수 있을까요?

ChatGPT에 사용된 프롬프트, ChatGPT 버전 및 사용된 모델을 공유해 주시겠습니까? :slightly_smiling_face:

예를 들어


ChatGPT 8월 3일 버전
모델: GPT-3.5
프롬프트

Discourse Data Explorer란 무엇인가요?

완성(Completion)

제 마지막 업데이트 시점인 2021년 9월 기준으로, 제가 알고 있는 'Discourse Data Explorer’라는 특정 도구나 제품은 없습니다. 하지만 그 시점까지 이용 가능한 정보를 바탕으로 일반적인 설명을 드릴 수는 있습니다.

Discourse는 온라인 커뮤니티가 토론과 상호작용을 할 수 있도록 허용하는 오픈소스 최신 포럼 소프트웨어입니다. 토론 호스팅, Q&A 포럼, 지원 커뮤니티 등에 널리 사용됩니다. Discourse는 토론 관리, 사용자 참여, 모더레이션을 위한 풍부한 기능 세트를 제공합니다.

'Data Explorer’는 일반적으로 시스템이나 플랫폼 내에서 데이터를 쿼리하고 탐색할 수 있도록 허용하는 도구 또는 기능을 의미합니다. 데이터베이스 또는 데이터 분석 플랫폼의 컨텍스트에서 자주 사용됩니다.

두 구성 요소를 고려할 때, 'Discourse Data Explorer’는 Discourse 포럼 내에서 데이터를 탐색하고 쿼리할 수 있는 기능을 사용자에게 제공하는 가상의 도구 또는 플러그인일 수 있습니다. 이는 포럼에서 이루어지는 토론과 관련된 사용자 행동, 콘텐츠 트렌드 또는 기타 메트릭에 대한 통찰력을 얻고자 하는 커뮤니티 관리자나 데이터 분석가에게 유용할 수 있습니다.

제 정보가 구식일 수 있으며, 마지막 업데이트 이후 새로운 발전이 있었을 수 있다는 점을 유의해야 합니다. 'Discourse Data Explorer’가 실제로 존재하는 제품이나 기능이라면, 그 기능과 사용법에 대한 정확한 세부 정보를 얻기 위해 최신 정보를 검색하는 것을 권장합니다.


이렇게 질문하는 이유는, 귀하는 훌륭한 아이디어를 가지고 계셨고 그것을 공유해 주셔서 좋았지만, 미래에 다른 사람들이 다른 프롬프트를 시도할 수 있기 때문입니다. 문제 이해에 도움이 필요할 경우, 프롬프트, 완성 결과, 그리고 ChatGPT의 세부 정보를 공유하는 것이 필요합니다.

참고: 저는 OpenAI Discourse 포럼의 카테고리 모더레이터이므로, ChatGPT 프롬프트에 대한 도움을 구하는 분들과 많은 경험을 쌓았습니다. (ref)


ChatGPT 버전은 프롬프트를 입력하는 곳 아래 우측 하단에서 찾을 수 있습니다

모델은 페이지 상단 중앙 근처에서 찾을 수 있습니다

image

1개의 좋아요

저… 이 봇은 별로야.

1개의 좋아요

이 아이디어를 조금 더 확장하면, 사용자가 자연어로 애플리케이션과 상호작용할 수 있게 하는 것이 AI 관련해서 제 꿈에 가장 가까운 것입니다. Discourse와 Data Explorer 플러그인을 사용하면 "모더레이션에 관심을 표명한 사용자 목록을 반환해 줘"와 같은 프롬프트로 결과를 얻을 수 있을 것입니다. 더 나아가 "모더레이션에 관심을 표명한 모든 사용자에게 community_moderation 그룹에 대한 초대장을 보내줘"와 같은 요청도 가능할 것입니다.

현재 가능한 것에 다시 돌아가 보겠습니다:

ChatGPT 3.0과 3.5로 테스트해 본 결과, PostgreSQL 쿼리를 반환해 달라고 요청하고 관심 있는 테이블의 구조를 프롬프트에 복사해 넣으면 좋은 결과를 얻었습니다. 예를 들어:

요약

나: 다음 데이터베이스 구조에 대해 “community_moderators” 그룹에 속한 모든 사용자의 사용자명을 나열하는 PostgreSQL 쿼리를 반환해 줘:

# == Schema Information
#
# Table name: groups
#
#  id                                 :integer          not null, primary key
#  name                               :string           not null

# == Schema Information
#
# Table name: group_users
#
#  id                 :integer          not null, primary key
#  group_id           :integer          not null

# == Schema Information
#
# Table name: users
#
#  id                        :integer          not null, primary key
#  username                  :string(60)       not null

ChatGPT 3.5: 물론입니다. 주어진 데이터베이스 구조에 기반하여 “community_moderators” 그룹에 속한 모든 사용자의 사용자명을 나열하는 PostgreSQL 쿼리입니다:

SELECT u.username
FROM users u
JOIN group_users gu ON u.id = gu.user_id
JOIN groups g ON gu.group_id = g.id
WHERE g.name = 'community_moderators';

이 쿼리는 users 테이블을 group_users 테이블과 사용자 ID 기준으로 조인하고, 다시 groups 테이블과 그룹 ID 기준으로 조인하여 사용자명을 검색합니다. 결과는 “community_moderators” 그룹에 속한 사용자의 사용자명만 포함하도록 필터링됩니다.

나: 애플리케이션의 토픽과 게시물 테이블 구조는 다음과 같습니다:

# == Schema Information
#
# Table name: topics
#
#  id                        :integer          not null, primary key
#  title                     :string           not null

# == Schema Information
#
# Table name: posts
#
#  id                      :integer          not null, primary key
#  user_id                 :integer
#  topic_id                :integer          not null
#  post_number             :integer          not null
#  raw                     :text             not null

“community_moderators” 그룹의 멤버가 작성한 게시물 중, 게시자가 양극화된 토론을 어떻게 모더레이션해야 하는지에 대한 관심을 드러내는 모든 게시물의 토픽 ID, 게시물 ID, 사용자명을 나열하는 쿼리를 반환해 줘.

ChatGPT 3.5: 이를 달성하려면 제공된 스키마에 따라 posts, topics, users, group_users 테이블을 조인해야 합니다. 요청된 정보를 검색하는 PostgreSQL 쿼리입니다:

SELECT t.id AS topic_id, p.id AS post_id, u.username
FROM posts p
JOIN topics t ON p.topic_id = t.id
JOIN users u ON p.user_id = u.id
JOIN group_users gu ON u.id = gu.user_id
JOIN groups g ON gu.group_id = g.id
WHERE g.name = 'community_moderators'
  AND (p.raw ILIKE '%moderate%' OR p.raw ILIKE '%polarizing%' OR p.raw ILIKE '%discussion%');

이 쿼리는 “community_moderators” 그룹의 멤버가 작성한 게시물 중, 양극화된 토론의 모더레이션에 대한 관심을 나타내는 특정 키워드를 포함하는 모든 게시물의 topic_id, post_id, username을 검색합니다. ILIKE 연산자는 posts 테이블의 raw 컬럼에서 대소문자를 구분하지 않는 패턴 매칭에 사용됩니다.

제공된 키워드가 원하는 게시물을 나타내는 것임을 가정하고 있습니다. 특정 기준에 따라 키워드를 조정하거나 확장할 필요가 있을 수 있습니다.

나: 2022년 9월 이후 매주 기간별로 작성된 게시물의 수를 반환하는 쿼리를 작성해 줘. 이 게시물은 “community_moderators” 그룹의 멤버가 작성했으며, 양극화된 토론을 어떻게 모더레이션해야 하는지에 대한 관심을 나타내야 해.

ChatGPT 3.5: 이를 달성하려면 다음 PostgreSQL 쿼리를 사용하여 2022년 9월 이후 매주 기간별로 작성된 게시물의 수를 반환할 수 있습니다. 이 게시물은 “community_moderators” 그룹의 멤버가 작성했으며, 양극화된 토론의 모더레이션에 대한 관심을 나타냅니다:

SELECT
    DATE_TRUNC('week', p.created_at) AS week_start,
    COUNT(p.id) AS post_count
FROM
    posts p
JOIN
    users u ON p.user_id = u.id
JOIN
    group_users gu ON u.id = gu.user_id
JOIN
    groups g ON gu.group_id = g.id
WHERE
    g.name = 'community_moderators'
    AND (p.raw ILIKE '%moderate%'
         OR p.raw ILIKE '%polarizing%'
         OR p.raw ILIKE '%political%'
         OR p.raw ILIKE '%contentious%'
         OR p.raw ILIKE '%debate%'
         OR p.raw ILIKE '%controversial%'
         OR p.raw ILIKE '%discussion%')
    AND p.created_at >= '2022-09-01' -- 시작 날짜: 2022년 9월
GROUP BY
    week_start
ORDER BY
    week_start;

이 쿼리는 2022년 9월 이후 매주 기간별로 “community_moderators” 그룹의 멤버가 작성한, 지정된 키워드를 포함하는 게시물의 수를 계산합니다. 결과는 주로 기준으로 그룹화되고 시간 순으로 정렬됩니다. 실제 데이터베이스 스키마에 따라 컬럼 이름과 테이블 관계를 조정하십시오.


결과물은 제 생각에 좋으며, 과거에 작성하는 데 상당한 시간이 걸렸던 유형의 쿼리를 대표합니다. Discourse 데이터베이스 구조로 모델을 학습시키면 구조에 대한 세부 정보를 프롬프트에서 생략할 수 있을 것이라고 가정합니다.

4개의 좋아요

오, 정말 좋습니다. ChatGPT 데이터 탐색기에서 SQL 쿼리를 사용할 때 결과가 들쭉날쭉했는데, 이렇게 하는 방식이 훨씬 더 합리적이네요. 테이블 구조를 제공하고 PostgreSQL 쿼리를 요청해야 한다는 생각을 전혀 하지 못했거든요. :woman_facepalming:t2: 팁을 알려주셔서 감사합니다 @simon :slight_smile:

1개의 좋아요

디스코urs 데이터베이스의 전체 스키마를 볼 수 있는 곳이 있을까요?

1개의 좋아요

hi @so-jordan-violet, 저는 데이터 탐색기 쿼리 편집 인터페이스 오른쪽에 있는 접을 수 있는 테이블 도구(이름이 뭔지 몰라요! ㅋㅋ)를 그냥 사용하고 있어요:

2개의 좋아요

텍스트 기반 문서(특히 SQL CREATE TABLE 형식)를 확보할 수 있다면, 이를 지침으로 제공하여 상당히 신뢰할 수 있는 결과를 얻을 수 있을 것입니다.

1개의 좋아요

네, 올해 초부터 AI 팀의 백로그에 이 항목을 올려두고 있습니다. 아이디어는 Discourse 스키마 전체(또는 중요한 부분)를 프롬프트에 입력하여 모델이 임의의 쿼리를 생성할 수 있도록 하는 것입니다.

모델이 더 정확하게 작동할 수 있도록 예시를 제공하기 위해 https://github.com/discourse/data-explorer-examples를 구축해 왔습니다.

7개의 좋아요

코드베이스를 더 자세히 살펴볼 시간이 있으면 좋겠지만, crest 테이블 스키마에 대한 SQL이 공개적으로 어디에 저장되어 있나요?

지금 제 제품/회사와 관련된 LLM 작업을 하고 있어서 이걸로 직접 해보고 싶습니다.

1개의 좋아요

오, 정말 좋습니다. 링크를 공유해 주셔서 감사합니다, Falco! :slight_smile:

3개의 좋아요

저는 스키마에서 직접 생성합니다.

이런 것으로 시작해 볼 수 있습니다:


이 작업을 진행하기 위해 다양한 접근법을 탐색해 왔습니다. 다만 GPT 3.5는 너무 잘 조종(steerable)되다 보니 혼란을 겪는 문제가 있습니다.

스키마를 제공하면 확실히 도움이 되지만, 예시를 매우 전략적으로 선택해야 한다는 것을 깨닫고 있습니다.

"사용자의 아카이브된 주제 수를 어떻게 세는가"에 대한 이야기를 들려주면, "사용자가 몇 개의 게시물을 가졌는가"와 같은 쿼리가 아카이브된 주제 쪽으로 유도됩니다.

저는 이렇게 생각했습니다:

graph TD
A[일반적이고 유용한 정보 추가] --> B[질문에 대한 임베딩 생성]
B --> C[예시 전체에 대해 유사도 검색 수행]
C --> D[프롬프트에 3개의 예시 추가]
D --> E[프롬프트에 스키마 추가]
E --> F[질문하기]
F --> G[SQL 가져오기]

하지만 예시가 훌륭하지 않고 반례(counter examples)를 포함하지 않는 한 상황이 나빠지는 것으로 나타났습니다.

지금은 스키마와 서문(preamble)만 제공하는 것이 최선인 것 같습니다. 아마도 마지막에 쿼리 검증과 재시도 단계를 하나 더 추가하는 것이 좋겠습니다.

5개의 좋아요

데이터 타입이 표시된 완전한 스키마를 가지고 계신가요?

토큰 예산에 맞을지 확실하지 않지만, 시도해 보겠습니다.

ChatGPT 3.5를 사용할 때 전체 스키마를 제공하면 예상치 못한 결과를 얻고 있습니다. 예를 들어, topic_users 테이블에서 토픽 작성자를 찾으려고 계속 시도합니다.

프롬프트에 쿼리를 작성하는 데 필요한 테이블과 컬럼 정보만 제한하고, 컬럼 사용법에 대한 추가 정보를 넣으면 성공적인 결과를 얻을 수 있습니다. 예를 들어:

# Table name: user_actions
#
#  id              :integer          not null, primary key
#  action_type     :integer          not null (:like=>1,:was_liked=>2,:new_topic=>4,:reply=>5,:response=>6,:mention=>7,:quote=>9,:edit=>11,:new_private_message=>12,:got_private_message=>13,:solved=>15,:assigned=>16)
#  user_id         :integer          not null (해당 행동을 credited 받을 사용자)
#  target_topic_id :integer
#  acting_user_id  :integer (행동을 수행한 사용자. 예를 들어, 스태프 사용자는 일반 사용자를 대신하여 행동을 수행할 수 있음)
#  created_at      :datetime         not null

Data Explorer 플러그인으로 이를 작동시키는 또 다른 방법은 사용자가 원하는 데이터와 적용할 조건을 나열하는 동적으로 생성된 양식을 채우게 하는 것입니다. 프롬프트는 Discourse에서 프로그램적으로 생성된 후 LLM에 전송되어 쿼리가 작성되도록 할 수 있습니다.

수정: @jordan-violet, 이것은 유용한 출발점이 될 수 있습니다. 제게 잘 작동하는 주석 달린 부분 스키마입니다. 제공된 스키마로 답변할 수 있도록 쿼리를 제한하는 한 잘 작동합니다. ChatGPT를 혼란스럽게 하는 것으로 보이는 세부 사항을 명확히 하기 위해 스키마에 추가 정보를 추가했습니다. 이 접근법의 명백한 단점은 완전하게 주석이 달린 스키마가 ChatGPT 3.5의 토큰 한도를 초과한다는 것입니다. 사용되는 토큰 수를 줄이기 위해 생략할 수 있는 일부 정보를 스키마에 포함시켰습니다.

요약
# == Schema Information
#
# Table name: application_requests
#
#  id       :integer          not null, primary key
#  date     :date             not null
#  req_type :integer          not null ("http_total"=>0,"http_2xx"=>1,"http_background"=>2,"http_3xx"=>3,"http_4xx"=>4,"http_5xx"=>5,"page_view_crawler"=>6,"page_view_logged_in"=>7,"page_view_anon"=>8,"page_view_logged_in_mobile"=>9,"page_view_anon_mobile"=>10,"api"=>11,"user_api"=>12)
#  count    :integer          default(0), not null
#
# Table name: users
#
#  id                        :integer          not null, primary key
#  username                  :string(60)       not null
#  created_at                :datetime         not null
#  updated_at                :datetime         not null
#  name                      :string           (사용자의 실명)
#  last_posted_at            :datetime
#  active                    :boolean          default(FALSE), not null
#  username_lower            :string(60)       not null
#  last_seen_at              :datetime
#  admin                     :boolean          default(FALSE), not null
#  trust_level               :integer          not null
#  approved                  :boolean          default(FALSE), not null
#  approved_by_id            :integer
#  approved_at               :datetime
#  previous_visit_at         :datetime
#  suspended_at              :datetime
#  suspended_till            :datetime
#  date_of_birth             :date
#  ip_address                :inet
#  moderator                 :boolean          default(FALSE)
#  title                     :string
#  locale                    :string(10)
#  primary_group_id          :integer
#  registration_ip_address   :inet
#  staged                    :boolean          default(FALSE), not null
#  first_seen_at             :datetime
#  silenced_till             :datetime
#
# Table name: topics
#
#  id                        :integer          not null, primary key
#  title                     :string           not null
#  last_posted_at            :datetime
#  created_at                :datetime         not null
#  updated_at                :datetime         not null
#  views                     :integer          default(0), not null
#  posts_count               :integer          default(0), not null
#  user_id                   :integer          (토픽을 생성한 사용자의 id)
#  last_post_user_id         :integer          not null (토픽의 마지막 포스트를 생성한 사용자의 id)
#  reply_count               :integer          default(0), not null
#  deleted_at                :datetime
#  highest_post_number       :integer          default(0), not null
#  like_count                :integer          default(0), not null
#  category_id               :integer
#  visible                   :boolean          default(TRUE), not null
#  moderator_posts_count     :integer          default(0), not null
#  closed                    :boolean          default(FALSE), not null
#  archived                  :boolean          default(FALSE), not null
#  bumped_at                 :datetime         not null
#  archetype                 :string           default("regular"), not null ("regular" 또는 "private_message"로 설정 가능)
#  slug                      :string
#  deleted_by_id             :integer          (토픽을 삭제한 사용자의 id)
#  participant_count         :integer          default(1)
#  word_count                :integer
#  excerpt                   :string
#  highest_staff_post_number :integer          default(0), not null
#
# Table name: posts
#
#  id                      :integer          not null, primary key
#  user_id                 :integer          (포스트를 생성한 사용자의 id)
#  topic_id                :integer          not null
#  post_number             :integer          not null (포스트가 해당 토픽 내에서 몇 번째인지 나타냄)
#  raw                     :text             not null (포스트의 내용)
#  created_at              :datetime         not null
#  updated_at              :datetime         not null
#  reply_to_post_number    :integer          (해당 포스트가 답장으로 작성된 포스트의 post_number)
#  reply_count             :integer          default(0), not null
#  deleted_at              :datetime
#  like_count              :integer          default(0), not null
#  bookmark_count          :integer          default(0), not null
#  reads                   :integer          default(0), not null (포스트가 읽힌 횟수)
#  post_type               :integer          default(1), not null (:regular=>1, :moderator_action=>2, :small_action=>3, :whisper=>4)
#  last_editor_id          :integer          (포스트를 마지막으로 수정한 사용자의 id)
#  hidden                  :boolean          default(FALSE), not null
#  hidden_reason_id        :integer          (:flag_threshold_reached=>1,:flag_threshold_reached_again=>2,:new_user_spam_threshold_reached=>3,:flagged_by_tl3_user=>4,:email_spam_header_found=>5,:flagged_by_tl4_user=>6,:email_authentication_result_header=>7,:imported_as_unlisted=>8)
#  edit_reason             :string
#  word_count              :integer
#  wiki                    :boolean          default(FALSE), not null
#
# Table name: categories
#
#  id                                        :integer          not null, primary key
#  name                                      :string(50)       not null
#  topic_id                                  :integer          (카테고리 설명에 사용되는 토픽의 id)
#  topic_count                               :integer          default(0), not null
#  created_at                                :datetime         not null
#  updated_at                                :datetime         not null
#  user_id                                   :integer          not null (토픽을 생성한 사용자의 id)
#  topics_year                               :integer          default(0)
#  topics_month                              :integer          default(0)
#  topics_week                               :integer          default(0)
#  slug                                      :string           not null
#  description                               :text
#  text_color                                :string(6)        default("FFFFFF"), not null
#  read_restricted                           :boolean          default(FALSE), not null
#  auto_close_hours                          :float
#  post_count                                :integer          default(0), not null
#  latest_post_id                            :integer
#  latest_topic_id                           :integer
#  position                                  :integer
#  parent_category_id                        :integer
#  posts_year                                :integer          default(0)
#  posts_month                               :integer          default(0)
#  posts_week                                :integer          default(0)
#  topics_day                                :integer          default(0)
#  posts_day                                 :integer          default(0)
#
# Table name: groups
#
#  id                                 :integer          not null, primary key
#  name                               :string           not null
#  created_at                         :datetime         not null
#  automatic                          :boolean          default(FALSE), not null
#  user_count                         :integer          default(0), not null
#  title                              :string
#  bio_raw                            :text             (그룹의 설명)
#  allow_membership_requests          :boolean          default(FALSE), not null
#  full_name                          :string
#  visibility_level                   :integer          default(0), not null (그룹을 볼 수 있는 대상 :public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4)
#  messageable_level                  :integer          default(0) (그룹에게 메시지를 보낼 수 있는 대상 :public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4)
#  mentionable_level                  :integer          default(0) (그룹을 멘션할 수 있는 대상 :public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4)
#  members_visibility_level           :integer          default(0), not null (그룹의 멤버를 볼 수 있는 대상 :public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4)
#
# Table name: group_users
#
#  id                 :integer          not null, primary key
#  group_id           :integer          not null
#  user_id            :integer          not null
#  created_at         :datetime         not null
#
# Table name: user_actions
#
#  id              :integer          not null, primary key
#  action_type     :integer          not null (:like=>1,:was_liked=>2,:new_topic=>4,:reply=>5,:response=>6,:mention=>7,:quote=>9,:edit=>11,:new_private_message=>12,:got_private_message=>13,:solved=>15,:assigned=>16)
#  user_id         :integer          not null (해당 행동을 credited 받을 사용자)
#  target_topic_id :integer
#  target_post_id  :integer
#  target_user_id  :integer          (예를 들어, 좋아요를 받은 포스트 작성자의 id)
#  acting_user_id  :integer          (행동을 수행한 사용자. 예를 들어, 스태프 사용자는 일반 사용자를 대신하여 행동을 수행할 수 있음)
#  created_at      :datetime         not null
#  updated_at      :datetime         not null
#
# Table name: topic_views
#
#  topic_id   :integer          not null
#  viewed_at  :date             not null
#  user_id    :integer         (로그인된 사용자가 토픽을 본 경우 설정됨)
#  ip_address :inet            (익명 사용자가 토픽을 본 경우 설정됨)
#
# Table name: user_visits
#
#  id         :integer          not null, primary key
#  user_id    :integer          not null
#  visited_at :date             not null
#  posts_read :integer          default(0)
#  mobile     :boolean          default(FALSE) (모바일 기기로 방문한 경우 TRUE로 설정됨)
#  time_read  :integer          default(0), not null (반환 값은 방문 시간의 초 단위)

직접 테스트해 본 채팅 세션 링크입니다: ChatGPT

이 목록을 확장해 보고 싶다면, 가장 쉬운 방법은 관심 있는 모델 하단의 스키마를 Discourse 코드에서 직접 복사하는 것입니다: discourse/app/models at main · discourse/discourse · GitHub.

3개의 좋아요

이렇게 정확히 가져올 수 있으면 좋겠지만, 모든 테이블에 대한 종합 목록이 있으면 더 좋습니다. 이 정보를 어디서 얻으셨나요?

수정: 아, 하단에 있는 링크를 확인했습니다. 죄송합니다. 아마도 모든 것을 정리할 시간은 없을 것 같습니다. 어딘가에 마스터 SQL 스키마가 있는지 기대하고 있었거든요 :confused:

문제는 단순히 스키마만 제공해서는 ChatGPT에 충분한 정보가 되지 않는다는 것입니다. 다음 사항과 같은 세부 정보를 제공해야 합니다.

  • application_requests 테이블의 req_type 정수 코드가 무엇을 의미하는지
  • topics 테이블의 user_id 열이 어떤 용도로 사용되는지
  • user_actions 테이블의 action_type 코드가 무엇을 의미하는지, 그리고 해당 테이블의 user_id, target_user_id, acting_user_id 열 간의 차이점이 무엇인지

이러한 수준의 세부 정보를 제공하면 GPT 3.5는 추가 학습 없이도 잘 작동하는 것으로 보입니다. 하지만 이 경우, 전체 데이터베이스에 대해 이 수준의 세부 정보를 제공하면 프롬프트가 ChatGPT의 토큰 제한(프롬프트 텍스트와 생성된 출력을 모두 포함하여 4096개 토큰)을 초과하게 됩니다. 이 접근 방식을 사용하려면, 사용자가 Data Explorer 쿼리를 통해 얻고자 하는 정보에 따라 프롬프트에 설정되는 내용을 제한하는 방법이 필요합니다.

1개의 좋아요

제 경험은 전혀 그렇지 않았습니다. 오늘 저녁에는 꽤 즐거운 경험을 했습니다. 나중에 몇 가지 결과를 공유하겠습니다.

유능하지만, 아주 초보적인 주니어 역할이라는 느낌을 줍니다. 거의 정확하게 일을 처리하고, 제가 무엇을 잘못했는지 알려주면 수정합니다. 이 과정이 반복됩니다.

오늘 밤 사용 경험을 기준으로 볼 때, 이 도구가 제공하는 결과와 그로 인해 절약되는 시간이 실제로 매우 마음에 듭니다.

1개의 좋아요

GPT 3.5는 현재 16k를 문제없이 처리합니다.

문제는 요청이 복잡해지고, 엣지 케이스를 고려해야 하는 등 상황이 어려워질 때부터 발생하기 시작합니다.

1개의 좋아요