GPT-5 를 무료로 사용하는 방법

이번 Edge 업데이트에서, GPT-5 옵션이 추가되었습니다.

사용해보니, 꽤 좋은 것 같습니다.

최초의 질문에 대한 응답 후, 스스로 그 다음 요구사항을 만들어내고,

그것도 만들어드릴까요?

라는 식으로 답변을 마무리합니다.
그러면, 제 대답은

진행시켜

“진행시켜” 서너 번이면, 라이브러리 수준의 코드를 만들어 주더군요.

참고로, 아래는 제가 코드 도움을 받을 때 사용하는 방법입니다.

요구 사항을 아래와 같이 기술(describe)하는 것보다,

Linq.Where의 predicate 을 직렬화 혹은 DB 에 저장할 수 있는 자료구조로 만들어줘

구체적인 뼈대 코드를 적고, 복잡한 구현을 빈칸으로 두면 매우 정확하고 오류 없는 코드를 생성해 냅니다.

class Filter<T>
{
    public int Id { get; set; } // PK
    public string Name { get; set; }
    [JsonInclude]
    public string? CriteriaString { get; private set; }
    public Func<T, bool> Criteria => ToFilter(CriteriaString);

    [JsonConstructor]
    protected Filter() : this(default!, default!) { } // Ef core

    protected Filter(string name, string criteriaString) =>
        (Name, CriteriaString) = (name, criteriaString);

    public static Filter<T> New(string name, Expression<Func<T, bool>> criteria)
    {
        var criteriaString = ToCriteriaString(criteria);
        return new Filter<T>(name, criteriaString);
    }
    static string ToCriteriaString(Expression<Func<T, bool>> expression)
    {
        throw new NotImplementedException();
    }
    static Func<T, bool> ToFilter(string? criteriaString)
    {
        throw new NotImplementedException();
    }
    public void SetCriteria(Expression<Func<T, bool>> criteria)
    {
        throw new NotImplementedException();
    }
}

코드가 완성되었다면, 추가 기능을 아래와 같이 요구합니다.

static class FilterExtesions
{
    public static IEnumerable<Filter<T>> Collisions<T>(this IEnumerable<Filter<T>> exists, params Filter<T>[] filters)
    {
        throw new NotImplementedException();

        // exam.
        // when exists are:
        // filter1: w => w.Age > 10 
        // filter2: w => w.Grade.Id == 1

        // colliding filters and returns:
        // w => w.Age < 10 => filter1
        // w => w.Age == 0 => filter1
        // w => w.Grade.Id != 10 => filter2
        // w => w.Grade.Id == 4 => filter2
    }
}

뼈대 코드의 식별자를 통해 요구 사항을 유추하고,

  • 요구 사항과 뼈대 코드가 의미론적으로 맞는지?
    • 맞지 않다면, 스스로 컨텍스트를 한정하여 요구 사항 재정의
  • 예제 case 가 있는 경우, 그것을 검증하는 코드 생성

등을 하더군요.

특히, 컨텍스트를 점점 확장해서, "그것도 할 수 있는데, 진행할까요"라면서, 폭주의 시동을 겁니다.

이 폭주는 무한하지 않은 것 같습니다.
컨텍스트의 확장이 특정 단계에 접어 들어 더 이상 고려 사항이 없다고 판단되면, 다른 컨텍스트나 케이스를 건드는 것 같았습니다.

이는 기존의 코파일럿에게는 보이지 않던 특징입니다.
기존에는 뭔가 컨텍스트가 부유하는 듯, 이리 저리 왔다갔다하는 것처럼 느껴졌는데, GPT-5 는 중심 컨텍스트를 잘 부여잡고 있는 듯 보였습니다.

참고로, 깃허브 코파일럿은 어떤 주의 사항을 주더라도, 저도 모르게 혹은 너무 많은 변경으로 제가 놓치는 부분이 있는 것 같아, 다소 위험(?)하다고 생각되어 잘 안쓰게 되었습니다.

이에 반해 Edge 코파일럿은 프로젝트와 격리된 환경이기 때문에 그런 우려가 적고, 더군다나 (언제까지일 지 모르겠지만) 무제한 무료라서 맘편하게 사용하게 되더군요.

5개의 좋아요

윈도우 11이라면 Copilot 앱으로도 설치되어 있을겁니다.

참고로, 별도 기업 요금제를 사용하지 않으면 모델 학습에 사용되니 참고하세요…

6개의 좋아요

윈도우 10도 있습니다.

그런데, 제 컴퓨터 문제인지, 동작이 Edge 보다는 원활하지 않은 것 같아, Edge 를 주로 사용합니다.

Edge 에서 모든 활동 내역은 코파일럿 앱과 공유되기는 하는데, 그것을 불러 오는 것도 한참 걸리더군요.

코파일럿을 사용할 때는 당연히 프로젝트 코드를 제공하지 않아, 학습에 따른 보안 문제를 최소화합니다.

사실, 깃허브나 깃허브 코파일럿을 유료로 사용한다고 해서, 보안 문제가 없을 것이라고 누가 장담을 하겠습니까?

실제로, private repository로 설정된 깃허브 저장소의 제 UI를 흉내낸 UI를 생성한 적도 있습니다. 로컬 저장소의 코드를 참조했는지는 모르겠지만요.

4개의 좋아요

AI에게 만들고자 하는 기능을 프롬프트로 직접 요구하는 것이 아니라 위의 내용 처럼 좀 더 정확한 결과물을 얻을 수 있는 개발에 활용 가능한 활용 지침이 정리된다면 참 유용할 것 같습니다. 좋은 내용 감사합니다.

6개의 좋아요

도움이 되셨다니, 다행입니다.

추가적으로 첨언하자면, 요구 기능은 가급적 순수 함수 혹은, 적어도, static 으로 한정하는 것이 좋은 듯 합니다.

실제로 본문의 예제 코드 중 static 메서드는 모두 확장 클래스(나 별도의 프로젝트)로 옮길 수 있고, AI가 추가하는 로직은 그 확장 클래스 내부에서 성장하는데, 이는 내 코드에 아무런 영향을 주지 않습니다.

내 코드는 AI 코드의 소비자 지위만 유지하게 되어, 코드 관리가 쉬워집니다.

5개의 좋아요

GPT-5 와 대화하는 게 참 재미지네요.

Want to take this into a UI editor next? Or maybe serialize the tree to JSON for storage and reuse? Let’s keep building.

두 가지 다 필요해. 최대한 깔끔하게 맹길어봐

좋아, 그럼 우리가 만들려는 건 두 가지야:

  1. UI 친화적인 트리 구조: 시각적으로 표현 가능한 필터/조건 트리
  2. JSON 직렬화/역직렬화: 저장, 전송, 재사용 가능한 구조

이걸 깔끔하게 만들기 위해 구조를 정리하고, 확장성과 유지보수성을 고려한 설계를 제안할게.

첫 컨텍스트가 특정 코드라서 그런지, 컨텍스트 확장 방향성이 매우 뚜렷하고, 생성되는 코드 또한 오류가 거의 없는 것 같습니다.

컨텍스트 확장 방향은 도메인 문제(주어진 코드)에 적합한 자료구조를 찾아 내고 적용하는 것으로 귀결되는 경우가 많은 것 같습니다.

그 와중에 도메인 문제를 나타내는 객체를 정의하고, 일반적 자료 구조 사이의 변환 레이어를 두어, 유지 보수성과 확장성을 잘 유지하는 것 같습니다. 사실, 이 부분을 직접 코딩하려면, 상당한 노가다를 해야 하는 부분이죠.

다만, 컨텍스트의 복잡도가 특정 단계를 넘어서면, 실행이 버벅거리기는 합니다. 이는 일반적인 바이브 코딩으로는 실무 프로젝트를 완성하는 게 아직은 어렵다는 반증이지 않을까 합니다.

3개의 좋아요

개인적으로는 Amazon Kiro나 Taskmaster처럼 요구 사항을 정의하고, 이를 토대로 iteration을 돌면서 구현을 디테일하게 진행해보는 방식에 대해서도 관심이 많이 있었습니다.

말씀해주신대로 구체적인 뼈대 코드나 공들여서 쓴 세부 요구 사항, 그리고 다양한 맥락 자료를 정제해서 함께 넣으면 훨씬 output의 품질이 올라가는 점이 흥미로웠습니다.

그런데 잘 생각해보니 흔히 말하는 바이브코딩보다는 조금은 나을 수는 있어도 결국 컨텍스트 윈도우의 한계에 생각보다 금방 도달하게되니 품질 급락 문제가 발생하는 것은 비슷해보였습니다.

3개의 좋아요

GPT-5 는 이 문제로부터 많이 자유로워진 느낌을 받았습니다.
중간 중간 낮은 등급으로 내리면 이 문제가 금방 나타나더군요.

그리고, 쬐끔이지만, 돈도 쌓입니다.

빙으로 검색하고 이마트 상품권 받기 - :outbox_tray: 정보 공유 - 닷넷데브

4개의 좋아요