9 10월 2025

[一日30分 인생승리의 학습법] ▲ 2025년 가장 인기 있는 프로그래밍 언어 (spectrum.ieee.org)

[一日30分 인생승리의 학습법] ▲ 2025년 가장 인기 있는 프로그래밍 언어 (spectrum.ieee.org)

  • Python > Java > C++ > SQL > C# > JavaScript > TypeScript > C > Shell > Go > R > PHP > Kotlin > Rust > Dart > Swift
  • IEEE Spectrum 조사 결과 Python이 올해도 1위를 차지, JavaScript는 3위에서 6위로 떨어짐
  • 이 변화는 웹 개발에 많이 쓰이는 JavaScript가 AI 기반 코딩(예: vibe coding)으로 대체되는 흐름과 연관된 것으로 분석됨
  • 전통적으로 사용되던 Stack Exchange 질문 수, GitHub 활동 같은 지표는 AI 도입 이후 급감하여, 언어 인기 측정의 기존 방법이 흔들리는 상황
  • AI 코드 생성이 보편화되면서 언어의 문법·구조 차이 중요성이 줄고, 특정 언어에 집착하지 않는 흐름이 뚜렷해짐
  • 이는 새로운 언어 등장과 생태계 확산을 막고, 결국 프로그래밍 언어 인기도의 개념 자체가 사라질 가능성을 보여줌

개요

  • IEEE Spectrum이 2025년 주요 프로그래밍 언어와 트렌드를 종합적으로 분석한 결과를 발표
  • 이 순위는 취업 시장, 오픈소스 생태계, 학계 및 업계 활용도 등 다양한 관점을 반영
  • 주요 언어별 특징, 성장 배경, 그리고 기술 분야별로 특화된 언어에 대한 정보도 함께 제공

올해의 언어 순위

  • 2025년 Spectrum 기본 순위에서 Python이 1위 유지, JavaScript는 6위로 하락함
  • Jobs 순위에서도 Python이 1위로 올라섰고, SQL은 여전히 채용 시장에서 강력한 경쟁력을 보유함
  • 전체 언어 관련 Stack Exchange 질문 수는 2024년 대비 22% 수준으로 감소했음

순위 산정 기준

  • 인기도: 다양한 온라인 포럼, 소프트웨어 저장소, 구인 구직 데이터, 검색 트렌드 등을 활용해 산정함
  • 현업 활용도: 기업 채용 공고와 오픈소스 프로젝트 참여도를 기준으로 실제 시장에서 많이 쓰이는 언어를 분석함
  • 분야별 분석: AI, 임베디드, 웹, 모바일 등 기술 세부 분야에서 두드러진 언어 선정 기준을 반영함
  • 인기도 측정을 위해 Google 검색량, Stack Exchange 질문, GitHub 활동, 논문 언급 등 다양한 지표를 활용했음
  • 하지만 개발자들이 LLM(ChatGPT, Claude 등)과의 대화로 문제를 해결하면서 공개된 데이터 신호가 줄어듦
  • AI 도구(Cursor 등) 덕분에 질문 자체가 줄어 기존 지표의 유효성이 약화됨

AI와 언어의 경계 희미화

  • 숙련된 개발자부터 초보자까지 AI에 의존하면서 언어의 문법, 제어 구조에 대한 신경이 줄어듦
  • AI는 충분한 학습 데이터만 있으면 어떤 언어로도 코드 생성이 가능함
  • 이에 따라 언어 선택은 하드웨어의 CPU 명령어 차이처럼 부차적인 요소로 전락할 수 있음
  • 향후 언어 인기도 논쟁은 철도 궤간 비교 수준의 비주류 화제로 밀려날 수 있음

새로운 언어의 등장이 더욱 어려워 질 것

  • 과거에는 책, 데모, 샘플 코드만으로도 언어 생태계가 퍼질 수 있었음 (예: The C Programming Language)
  • 그러나 AI는 대량의 학습 데이터를 요구하기 때문에 신생 언어는 지원이 불리함
  • 실제로 덜 사용되는 언어에서 AI가 더 나쁜 결과를 내는 현상이 보고됨
  • 이는 새로운 언어가 임계 질량을 확보하기 어려운 환경을 만들 수 있음

프로그래밍의 미래

  • 현대 언어는 본질적으로 데이터 처리 추상화와 개발자 오류 방지 두 가지 역할을 수행함
  • 그러나 AI 발전은 언어 구조보다 프롬프트 → 중간 언어 → 실행이라는 새로운 흐름을 가능케 함
  • 이 경우 소스 코드를 유지·수정하기보다 프롬프트를 조정해 재생성하는 방식이 자리잡을 수 있음
  • 미래 프로그래머의 역할은 언어 문법보다는 아키텍처 설계, 알고리듬 선택, 시스템 통합 능력에 집중될 전망임

결론과 전망

  • 프로그래밍은 1950년대 컴파일러 등장 이후 최대 변혁기를 맞이하고 있음
  • AI 거품이 일부 꺼지더라도 코드 작성을 돕는 LLM 활용은 지속될 가능성이 높음
  • 따라서 2026년 이후에는 “인기 언어”라는 개념 자체가 의미를 잃을 수 있으며, 인기도를 측정하는 새로운 지표가 필요함

[출처] https://news.hada.io/topic?id=23330

Loading

23 9월 2025

[Java 일반] Public static void main(String[] args)는 죽었다 | GeekNews

[Java 일반] Public static void main(String[] args)는 죽었다 | GeekNews

  • 이제 Java의 첫 번째 프로그램은 더 이상 public static void main(String[] args) 로 시작하지 않고, 단순화된 void main() 문법으로 작성 가능해짐
  • 새로운 문법에서는 IO.readln과 IO.println 같은 간단한 호출만으로 입출력을 처리할 수 있어 코드가 훨씬 직관적으로 바뀜
  • 기존의 new Scanner(System.in)System.out.println 같은 장황한 구문은 불필요해짐
  • 그동안의 불편함이 “마침내 끝남”, 이제 Java의 기본 구조가 가벼워지면서 입문 장벽이 낮아지고 학습 친화성이 크게 향상될 것

  • 전통적으로 Java는 프로그램 시작을 위해 public static void main(String[] args) 라는 긴 선언을 요구했음
  • 그러나 2025년 9월 16일 기준, Java의 가장 첫 번째 예제로 여겨지던 main 함수의 복잡한 선언문이 새로운 간단한 형태로 대체됨
  • 기존 방식:
    public class Main {  
        public static void main(String[] args) {  
            Scanner scanner = new Scanner(System.in);  
            System.out.print("What is your name? ");  
            String name = scanner.nextLine();  
            System.out.println("Hello, " + name);  
        }  
    }  
    
  • 새로운 방식:
    void main() {  
        var name = IO.readln("What is your name? ");  
        IO.println("Hello, " + name);  
    }  
    
  • 초보자에게는 불필요하게 장황하고, “주술적 주문”처럼 외워야만 했던 구문이라는 비판을 받아왔음
  • 기존 선언문의 번거로움과 난해함을 해소하고, 간결한 문법 도입으로 코드 가독성이 높아졌으며, Java 입문의 진입 장벽이 크게 낮아짐
    • 더 이상 Scanner, System.out.println 등 복잡한 객체 생성과 호출을 기본 예제로 쓰지 않음

Good Fucking Riddance = “드디어 없어져서 속 시원하다. 잘 가라”

[출처] https://news.hada.io/topic?id=23138&utm_source=weekly&utm_medium=email&utm_campaign=202538

Loading

26 8월 2025

[一日30分 인생승리의 학습법] 유능한 리더들은 어떤 능력으로 불확실성을 헤쳐나가는가

[一日30分 인생승리의 학습법] 유능한 리더들은 어떤 능력으로 불확실성을 헤쳐나가는가

유능한 리더들은 어떤 능력으로 불확실성을 헤쳐나가는가

67.유능한-리더들이-불확실성을-어떻게-헤쳐나가는가.png

복잡하고 어려운 상황을 유연하게 헤쳐 나갈 줄 아는 리더들은 무엇을 알고, 어떻게 다르게 행동할까? 그런 능력이 있는 리더를 본다면 어떤 모습이 보일까?

이 질문은 Innovation Tactics 카드 덱의 저자 톰과 존이 최근 대화에서 던진 화두다. 보통 이런 역량들은 ‘소프트 스킬’이나 ‘문화 적합도’ 같은 포괄적인 개념으로 치부되곤 한다.

그런데 만약 이 능력들을 명확하게 정의한다면 어떨까?

우리는 먼저 “무엇이 보일까?”라는 질문으로 일반적인 행동들을 묘사했고, 이어서 ‘~할 수 있는 능력’(the ability to…)이라는 형식으로 정의를 작성했다. 설명은 되도록 전문 용어 없이 쉽게 풀어쓰려 노력했다.

또한, 이러한 능력을 가진 사람을 채용하거나, 회사에서 그런 능력을 요구하는 면접을 준비할 때 참고할 수 있도록 인터뷰용 샘플 질문도 포함했다.

참고로 여기서 ‘역량(capabilities)’이라는 단어를 쓴 이유는, 개인이 자신의 환경을 만드는 면도 있지만, 많은 능력은 단순 개인이 아니라 여러 사람의 집단에서 나타나는 특성이나 행동, 능력으로 이해해야 하기 때문이다.

우리가 문제의 일부임을 인정하기 (Accept We Are Part of the Problem)

자신이 현재 상황을 만들거나 악화시키는 데 어떤 역할을 했는지 인지하고 받아들이는 능력.

인터뷰 질문: 문제에 자신이 일조했다는 걸 깨달았던 구체적인 경험을 알려주세요. 그 깨달음에 도달한 과정과 그 후에 행동이 어떻게 달라졌는지 말씀해 주세요.

새로운 상호작용 방식을 장려하기 (Encourage New Interaction Patterns)

개인을 바꾸거나 제거하는 데만 집중하지 말고, 환경 속에서 새로운 소통과 협력의 방식을 촉진하는 능력. 사람들이 서로 관계를 맺고 새로운 정보와 경험에 접할 수 있도록 돕는 역할을 말한다.

인터뷰 질문: 사람들이 새로운 방식으로 소통하거나 정보를 공유하도록 이끈 경험이나, 사람들이 전에 접하지 못한 새로운 정보나 경험을 접하게 한 사례를 이야기해 주세요. 변화의 필요성을 느끼게 된 계기와 그 결과도 함께 알려주세요.

인내하며 다양성을 존중하기 (Patient Divergence)

해답이나 앞으로 나아갈 길을 서두르지 않고 생산적인 다양성을 장려하는 능력. 창의적 탐색을 위한 환경을 조성하고 여러 가지 ‘실마리’를 따라가면서도 강제로 일치시키지 않고 자연스럽게 조율이 일어나도록 하는 것이다.

인터뷰 질문: 복잡한 문제를 다루면서 팀이 서두르지 않고 해결책을 찾아갈 수 있도록 이끈 경험이 있나요? 그 과정을 어떻게 관리했고, 결국 어느 지점에서 방향을 정하게 되었나요?

가능한 요인 다각도로 파악하기 (Identify Plausible Contributors / Multiple “Causes”)

문제에 기여할 법한 여러 요인을 파악하고, 서로 상충하는 듯해도 모두 염두에 두는 능력. 단일 원인만을 찾으려는 충동을 억제하는 것도 포함된다.

인터뷰 질문: 여러 복합적인 원인이 얽힌 문제를 경험한 적 있나요? 그 문제를 어떻게 다루었고, 다음 행동을 어떻게 결정했나요?

현재의 힘 (Power of the Present)

이상적이고 미래지향적인 ‘목표 상태’나 ‘격차’를 개선의 유일한 길로 보기보다는, 지금 이 순간과 현재 상황 속에 잠재된 가능성을 활용하는 능력. 지금 여기에서 출발해, 현재 작동하고 있는 것들을 찾아내고 인접한 여러 선택지를 탐색하는 것에 초점을 맞춘다.  문제가 있거나 힘든 부분에만 집중하는 대신, 현재 잘 작동하는 점들을 찾아 배우고 증폭시켜 장애물을 극복한다.

인터뷰 질문: 리더로서 우리는 종종 두 극단 사이에서 고민한다. 한쪽은 우리가 도달하고자 하는 뚜렷한 비전을 향해 큰 도약을 추진하는 것이고, 다른 쪽은 바로 지금 있는 곳에서 시작해 잘 돌아가는 부분을 파악하고 작은 변화를 꾸준히 시도하는 것이다. 이런 긴장을 탐색해야 했던 상황이 있나요? 그때 어떻게 대처했는지 설명해 주세요.

다양한 관점 융합하기 (Blend Diverse Perspectives)

특히 자신의 신념이나 기본값에 도전하는 다양한 관점을 찾아내고 수용하는 능력. ‘가장 많이 아는 사람이 되는 것’을 추구하는 태도를 경계하며, 모든 상황에서 가장 틀린 사람은 자신이 가장 전체적인 시각을 가지고 있다고 믿는 사람임을 인지한다. 대신 여러 관점의 융합을 다수 가능성의 원천으로 보아, 다양한 경로가 나타날 수 있게 한다.

인터뷰 질문: 다양한 관점, 특히 당신이 도전적으로 느꼈던 시각들까지 포용할 필요가 있었던 경험을 이야기해 주세요. 그 경험이 공동의 결정과 이후 행동에 어떤 영향을 미쳤나요?

인내심과 회복 탄력성 (Patience and Self-Repair)

반복적으로 개입하기보다, 특정 상황이 자연스럽게 진행되고 시간이 지나면서 스스로 해결되도록 인내하며 지켜보는 능력.

인터뷰 질문: 어떤 상황에서 개입하지 않고 스스로 해결되도록 둔 경험이 있나요? 그런 결정을 내리게 된 이유와 그 결과는 어땠는지 이야기해 주세요.

영향 예측 (Anticipate Effects)

새롭게 나타나는 행동이나 결과, 그리고 그로 인한 여러 차례의 예상치 못한 파급 효과들을 예견하는 능력(반드시 예측하는 것은 아님). 예상치 못한 결과가 예외가 아니라 규칙임을 받아들이고 끊임없이 상황 신호를 살피는 자세가 필요하다.

인터뷰 질문: 어려운 결정을 내릴 때 예상치 못한 부작용을 미리 점검해야 했던 경험이 있나요? 어떤 점을 특히 주의 깊게 봤나요?

호기심과 가벼운 접근 (Curiosity and Light Touch)

판단하거나 즉시 행동하려는 충동을 억제하고, 마음속에 떠오르는 생각과 감정을 여유롭게 탐색할 공간을 만드는 자세로, 호기심 어린 마음가짐으로 상황에 접근하는 능력.

인터뷰 질문: 즉각적인 판단을 내리려다 스스로 멈추고 호기심을 선택했던 순간을 이야기해 주세요. 그 마음가짐의 변화는 어떻게 일어났나요?

양쪽 모두 인정하기 (Both/And)

서로 반대되는 힘이나 생각들이 상호 의존적임을 인식하고 존중하는 능력. 많은 상황이 어느 하나를 선택하는 ‘양자택일’이 아니라, 겉으로는 모순되는 요소들이 공존하는 ‘양자 모두’를 잘 조율해 나가는 과정임을 이해하는 것이다. 복잡한 문제를 단순한 선택지로 줄여서 해결하려 하지 않는다.

인터뷰 질문: 표면적으로는 단순한 선택 문제처럼 보였던, 양자택일 상황에 직면했지만 실제로는 ‘둘 다’인 상황을 경험한 적 있나요? 그때 어떻게 상황을 해결했나요?

안전하게 개입하기 (Intervene Safely)

부작용이나 해를 최소화하면서 동시에 긍정적인 행동이나 신호, 패턴이 나타나도록 개입하는 능력. 부정적 영향이 나타나면 빠르게 완화하고, 긍정적 효과가 생기면 증폭하고 지속시키는 것이다. 이 기술을 갈고닦아도 항상 성공하거나 옳은 판단만 하는 것은 아니지만, 발전시키면 도움이 된다.

인터뷰 질문: 팀과 함께 새로운 일하는 방식이나 상호작용, 행동 방식을 시도해 본 적 있나요? 무엇을 시도할지 어떻게 결정했고, 계속 강화할지 아니면 바꿀지 어떻게 판단했나요?

직관과 추론의 균형 맞추기 (Abduction and Intuition)

한정된 데이터 안에서 논리적 추론과 직관적 추론(가설추론)을 조화롭게 활용하는 능력. 논리적이고 명확한 결론에만 갇히지 않고, 복잡하고 불명확한 패턴 속에서 직관적으로 도약하는 인간 고유의 능력을 발휘하는 것이다.

인터뷰 질문: 논리와 직관을 함께 활용해야 했던 경험을 이야기해 주세요. 과정과 결과는 어땠나요? 그 과정에서 다른 사람들은 어떻게 참여했나요? 그 과정에서 데이터는 어떻게 활용되었나요, 또는 활용되지 않았나요?

다양한 강점과 역량 수용하기 (Accept Diverse Strengths and Skills)

우리가 개인적으로 갖지 않았거나 중요하게 여기지 않는 강점과 관점을 인정하고 존중하는 능력. 스킬과 영향력을 인지하는 데 있어 전지전능하지 않다는 점을 이해하며, 무심코 개인이나 팀의 중요한 부분을 저평가할 위험이 있음을 인지하는 것이다.

인터뷰 질문: 잘 알지 못하는 강점이나 역량을 평가해야 했던 경험이 있나요? 그 역량이 당신의 가치관과 달라 평가절하될 위험이 있을 때 어떻게 접근했나요?

협력적으로 상황을 파악하고 환경을 만들어 가기 (Collaboratively Sense and Shape)

문제를 단순화하거나(“그냥 ~하면 된다”) 상황 해석을 독점하거나 통제하려는 충동을 억제하며, 다른 사람들과 함께 문제를 이해하고 상황을 개선할 방향을 만들기 위해 협력하는 능력.

인터뷰 질문: 다른 사람들과 함께 문제의 의미를 파악하고, 그들과 협력해 환경을 조성하여 실제 변화를 이끌어낸 경험에 대해 이야기해 주세요.

일치가 아닌 일관성 추구하기 (Coherence vs. Alignment)

모든 세부 사항의 완전한 일치를 강요하기보다는, 경계를 설정하고 ‘넘지 말아야 할 선’은 지키면서도 그 안에서 사람들 스스로 다양한 방향을 폭넓게 탐색하도록 권장하는 능력. 강요된 일치는 취약하다는 점을 인정하고, 일반적으로 일관성 있는 행동이 더 탄탄하고 지속 가능함을 이해한다.

인터뷰 질문: 사람들을 행동하게 해야 하는 상황에서 모두가 세세한 부분까지 완벽히 일치하도록 강요하지 않고도 일을 진행한 경험이 있나요? 이상적인 최종 상태를 정의하지 않고 대략적인 일관된 방향을 어떻게 정했나요?

씨앗을 심고 성장시키기 (Plant Seeds—Help Them Grow)

산출물을 미리 계획하고 완성하는 구조적인 결과물이 아니라, 심고 자라며 진화하는 유기체처럼 바라보는 능력. 범위를 엄격하게 잡기보다는 가볍게 두고, 시간을 엄격한 제한조건이 아닌 가능성을 열어주는 제약으로 활용한다.

인터뷰 질문: 요구사항의 확실성과 타임박스 및 일정 활용을 적절히 조화시키고, 예상치 못한 새로운 가치가 등장할 가능성을 열어 두는 당신의 방식을 보여주는 사례가 있나요?

업무 방식 맞춤 조정하기 (Tailor Ways of Working)

과제의 성격과 상황에 맞게 업무 방식을 조정하는 능력. 상황에 따라 다음 방식을 조합해 활용한다:

  • 단순하게 바로 실행하기
  • 체계적이고 큰 계획 세우기
  • 특정 결과를 목표로 실험하기
  • 비교적 느슨하고 다양한 실험으로 새로운 가능성 관찰하기

 …인간이 관여할 때는 후자의 방법을 선호하는 경향이 있다는 점을 이해한다.

인터뷰 질문: 과제의 특성에 따라 본인과 팀의 업무 방식을 어떻게 달리 적용했는지 대비되는 사례를 공유해 주세요. 계획 수립과 실행 접근 방식을 어떻게 바꾸었나요?

불확실성에 맞서기 (Facing Uncertainty)

A) 상황에서 가장 불확실한 부분으로 적극 다가가되, B) 익숙하고 잘 알고 있는 부분에서 ‘빠른 성과(quick win)’를 얻는 것 사이에서 균형을 맞추는 능력. 불확실성을 난관이 아니라 기회의 신호로 보고, 복잡한 도전을 환영하는 문화를 만드는 것이다 (단순화하려 하지 않고).

인터뷰 질문: 빠른 성과와 주요 불확실성 영역 해결 사이에서 균형을 맞춰야 했던 경험을 이야기해 주세요. 어떤 방식으로 접근했고, 팀에 어떤 지원을 했으며 학습과 성장을 어떻게 이끌었나요?

참고 사항

  1. 실제 면접에서 이 질문들을 사용하기 전에는 반드시 내부적으로 이 역량들에 대해 논의하고 스스로 답변을 준비해 보시길 권합니다. 회사에서 이 역량들이 얼마나 중요하게 여겨지고 있는지, 이 역량을 가진 사람들이 잘 성장하는지 아니면 어려움을 겪는지, 회사 문화가 이런 역량이 발현되는 방식을 어떻게 형성하는지, 그리고 이 역량들을 어떤 단어로 표현하는지 등을 점검해 보십시오.
  2. 이 글에는 아마도 너무 많은 전문 용어와 이론을 사용했을 겁니다. 죄송합니다. 이해하기 쉬운 언어와 현장에서 실제로 적용할 수 있도록 이 역량들을 효과적으로 전달하는 능력을 키우기 위해 계속 노력하고 있습니다!
  3. 명확한 역량을 정의하는 일은복잡성을 고려할 때는 다소 단순화한 측면이 있을 수 있습니다. 이 역량들은 개인 고유의 것이 아니라 환경과 관계에 깊이 얽혀 있습니다. 커뮤니티 내 깊이 있는 분들이 이에 대해 지적하실 수 있음을 알고 있으며, 피드백을 환영합니다.
  4. 모든 일에 이런 접근법을 다 적용할 수 있는 경우는 매우 드뭅니다. 그렇게 하면 팀이 지칠 수 있기 때문입니다. ‘업무 방식 맞춤 조정하기’ 역량 설명에서도 이 점을 언급했습니다. 본 글에서는 복잡한 문제와 환경에 초점을 맞췄지만, 결과는 항상 다양하게 나타난다는 점을 기억하세요.
  5. 많은 조직들은 복잡성을 직접적으로 언급하거나 전문 용어를 사용하지 않더라도, 복잡성을 효과적으로 다루는 방식을 발전시켜 왔습니다. 위에 나열된 역량들이 여러분이나 회사 내 다른 사람들에게는 익숙하지 않거나 낯설게 들릴 수 있다는 점을 인지하며 이 글을 살펴보시기 바랍니다. “우리 회사는 이런 걸 안 한다”고 결론 내리기 전에, 여러분만의 방식과 맥락 속에서 어떻게 이런 역량을 실현하고 있는지 자문해 보시길 바랍니다.

원문: How Capable Leaders Navigate Uncertainty and Ambiguity

[출처] https://blogbyash.com/translation/how-capable-leaders-navigate/

Loading

6 8월 2025

[알아봅시다] [리버스 프롬프트 엔지니어링] Reverse Prompt Engineering

[알아봅시다] [리버스 프롬프트 엔지니어링] Reverse Prompt Engineering

Reverse Prompt Engineering

 
 
 
 

????리버스 프롬프트 엔제니어링 패턴(In English)

1.Can we talk about Reverse Prompt Engineering? By Reverse Prompt Engineering I mean creating a prompt from a given text.

2.Nice. Can you give me a simple example of Reverse Prompt Engineering?

3.Good. Write a short expaination on how dog training works, and Reverse Prompt Engineer the explaination.

4.Great. Can you create a very technical reverse prompt engineering template?

5-1.Reverse Prompt Engineeing the following {text}, capture the TONE and WRITING STYLE of the {text} to include in the prompt:
text = “이 부분에다가 실제 텍스트 내용(오바마 연설, 세익스피어 문구 등의 스타일로)을 넣는다.”

 

5-2-1.Can you reverse engineer the following {product describtion}, capture the writing style an dthe length fo the text:

product describtion= “이 부분에다가 실제 제품 내용(아이폰 제원 등)을 넣는다.”

5-2-2.Rewrite the reverse prompt into a prompt that can be used for any product describtion with a user input feature in the prompt that uses {}:

 

5-3. Reverse engineer the following {html-code} in to a prompt:

html-code=“이 부분에다가 코드(html코드) 넣는다.”

 
 

????방법(In Korean)

 

1.리버스 프롬프터 엔지니어링에 대해 얘기할 수 있을까요? Reverse Prompt Engineering은 주어진 텍스트에서 프롬프트를 생성하는 것을 의미합니다. 

 
 
 
 

2.좋아요. 리버스 프롬프트 엔지니어링의 간단한 예를 들어주시겠어요? 

 
 
 
 

3.좋아요. 강아지 훈련이 어떻게 작동하는지에 대한 간단한 설명을 쓰고, 설명을 리버스 프롬프트 엔지니어인 나에게 작성해주세요. 

 
 
 
 

4.내가 ‘강아지 훈련은, 강아지가 원하는 행동을 보이면 보상을 주어서 그 행동을 강화하고, 원치 않는 행동을 보이면 그 행동에 대해 무시하거나, 보상을 주지 않음으로써 그 행동을 감소시키는 방법입니다. 예를 들어, 강아지가 기본적인 훈련인 “앉아”를 배우기 위해서는, 강아지가 앉아앉은 행동을 보이면 간식이나 칭찬 등의 보상을 주어서 그 행동을 강화하게 됩니다.’와 같은 답을 듣기 위해서는 어떤 프롬프트를 작성해야 되요? 

 
 
 
 

5.내가 당신에게 사용할 수 있는 리버스 프롬프트 엔지니어링 탬플릿을 프롬프트 형태로 제공해 줄 수 있나요? 

 
 
 
 

6.연설문이나 시를 작성하기 위한 리버스 엔지니어링 템플릿을 프롬프트 형태로 제공해 줄 수 있나요? 

 
 
 
 

7.한국어로는 없나요?

 
 
 
 

8.혹시, {text}를 변수로 사용하는 리버스 엔지니어링 프롬프트 템플릿을 제공해 줄 수 있나요? 

 
 
 
 

9.한국어로 제공 부탁해요.

 
 
 
 

10.{text}의 시를 작성하기 위한 프롬프트를 제공해주세요.

text=죽는 날까지 하늘을 우러러

한 점 부끄럼이 없기를,

잎새에 이는 바람에도 

나는 괴로워했다.

별을 노래하는 마음으로 

모든 죽어가는 것을 사랑해야지

그리고 나한테 주어진 길을 

걸어가야겠다.

오늘 밤에도 별이 바람에 스치운다. 

 
 
 
 

11.{text}의 시는 윤동주님의 ‘서시’라는 제목의 시에요. 알고 있나요? 

 
 
 
 

12.{text}와 같은 운율, 어조, 억양을 고려하여 ‘청소년들이 겪는 아픔’에 대한 시로 재창작 부탁해요. 

 
 
 
 

13.{text}와 같은 운율, 어조, 억양을 고려하여 ‘청소년들이 겪는 아픔‘에 대한 시 작성하기

text=죽는 날까지 하늘을 우러러

한 점 부끄럼이 없기를,

잎새에 이는 바람에도 

나는 괴로워했다.

별을 노래하는 마음으로 

모든 죽어가는 것을 사랑해야지

그리고 나한테 주어진 길을 

걸어가야겠다.

오늘 밤에도 별이 바람에 스치운다. 

 
 
 
 

14.재창작하여 작성해주세요. 

 
 
 
 

여기 까지가 리버스 프롬프트 엔지니어링(Reverse Prompt Engineering) 한국어 루틴입니다. 리버스 프롬프트 엔지니어링은 프롬프트 엔지니어가 원하는 답을 하기 위한 질문을 찾는 과정이라 생각하면 됩니다. 아래는 리버스 프롬프트 엔지니어링을 GPT에게 이해시키고 시를 다작한 사례입니다. 

 
 

[출처] https://www.learnmore.co.kr/education/ai-literacy/open-ai/prompt-example/reverse-prompt-engineering

Loading

1 8월 2025

[인공지능기술] [프롬프트 엔지니어링] 프롬프트 엔지니어링의 개념, 기법, 예시

[인공지능기술] [프롬프트 엔지니어링] 프롬프트 엔지니어링의 개념, 기법, 예시

프로젝트 과정에서 활용할 수 있는 프롬프트 엔지니어링에 대하여 개념과 다양한 구현 기법, 작성 예시에 대해 공부해본다. 

1. 프롬프트 엔지니어링 

2. 프롬프트 엔지니어링 예시 


1. 프롬프트 엔지니어링 

– AI가 원하는 결과를 생성하도록 가이드하는 최적의 프롬프트를 설계하는 과정 
  LLM에서 원하는 결과를 얻기 위해 프롬프트를 정교하게 최적화하는 과정

– 프롬프트 엔지니어링을 통해 다양한 종류의 task에서 LLM의 역량을 향상시킬 수 있음 

  복잡한 task에서도 hallucination과 같은 오류를 해소하는데 기여

– AI의 성능은 프롬프트의 퀄리티에 큰 영향을 받기 때문에 프롬프트를 잘 설계하는 것이 AI를 효과적으로 쓰는 것과 직결됨 
– 프롬프트 엔지니어는 AI가 의도치 않거나 엉뚱한 출력값을 만들어내지 않도록 어떻게 명령을 내려야 원하는 결과를 얻을 수 있을지 연구함 

* hallucination (할루시네이션) :  AI 모델이 실제로 존재하지 않거나 잘못된 정보를 생성하는 현상으로, 주로 자연어 처리(NLP) 모델에서 자주 발생하는 문제이다.

1) 프롬프트 구성 요소 

  • Instruction 지시 : LLM 모델이 수행해야하는 과제나 구체적인 목표를 제시하는 역할
  • Context 문맥 : 모델의 정확도를 높이기 위해 사용될 수 있는 문제 해결에 필요한 배경 정보나 추가 문맥
  • Input data 입력 데이터 : 모델이 답해야하는 질문 
  • Output Indicator 출력 지시자 : 출력의 유형이나 형식과 같이 모델의 답이 어떤 방식으로 출력되어야 하는지 지정

2) 프롬프트 엔지니어링 기법 

기법 설명
Zero-Shot Prompting task에 대한 사전 예시 없이 모델이 바로 문제 해결
One-Shot Prompting task에 대한 1개의 예시를 제시
Few-Shot Prompting task에 대한 2개 이상의 예시 제시 
Chain of Thought chain of thought 과정으로 문제 해결을 하는 예시를 제시함으로써 복잡한 중간 추론 과정을 사용하여 답을 제시하도록 만듬 
Zero Shot Chain of Thought  별도의 예시 없이 chain of thought 과정을 사용하도록 유도
“Let’s think step be step”이라는 trigger 문장을 프롬프트에 추가함 
Self Consistency few-shot CoT를 사용해 여러 형태의 추론 과정을 활용한 후 다수에 해당하는 답을 최종 결과로 제시하도록 만듬, 모델이 더 일관성 있는 답변을 선택하도록 유도 
Genereated Knowledge Prompting 질문과 함께 모델에서 생성된 지식이나 정보를 함께 제공하는 방식
지식(Knowledge)을 만드는 과정을 보여주는 프롬프트 예시를 제공하는 Few-Shot Prompting를 통해 원래의 질문과 관련된 Knowledge를 모델이 직접 생성
→ 기존의 질문에 생성된 Knowlegde를 추가한 프롬프트를 사용함으로써 모델이 Knowledge를 사용해 답을 제시하도록 만듬 
Automatic Prompt Engineering 사람이 아닌 모델이 스스로 프롬프트를 만들고 이를 활용해 답을 제시하는 방식, 프롬프트 내부에 <INSERT>라는 빈 칸을 만들고 answer를 함께 입력하여 모델이 <INSERT> 부분을 추론함으로써 프롬프트를 생성하도록 만듬 
ReAct Prompting ‘생각-행동-관찰’ 과정을 번갈아 수행하는 방식으로 답을 제시하도록 유도하는 방식, ‘생각-행동-관찰’ 과정을 반복하며 주어진 질문에 대한 답을 찾아가는 문제 해결 과정을 예제로 제시하는 Few-Shot Prompting (CoT와 유사하나 생각-행동-관찰 이라는 일련의 형식화된 과정을 사용한다는 차이점)
Active-Prompt 여러 개의 질의 예시를 만들어 모델이 답변하게 한 후 모델의 답변에 대한 모호성(Uncertainty)를 평가
→ 모델이 답하기 어려운 것으로 보이는 질문들만 골라 사람이 직접 답변을 라벨링한 후 Few-Shot CoT의 예제로 사용하여 다시 답변하게 만드는 방식
답변의 모호성은 모델에게 동일한 질문을 여러 번 제시한 후 disagreement를 계산하여 사용함, 더 효율적으로 질의-답변 예제를 만들 수 있음 

※ 그외 : Tree of Thought (ToT), Meta-Reasoning over Mulpitle Chains, Synthetic Prompting, MRKL, Self Refine 등 

– few-shot CoT와 zero-shot CoT 프롬프트 차이 

출처 : https://www.researchgate.net/figure/Few-shot-left-and-zero-shot-right-CoT-Both-prompts-the-LLM-to-output-intermediate_fig3_370981716

– 일반적인 CoT와 Self Consistency 비교 : 서로 다른 추론 과정을 사용하는 CoT의 다수결로 출력 결정 

출처 : https://velog.io/@xuio/SELF-CONSISTENCY-IMPROVES-CHAIN-OF-THOUGHT-REASONING-IN-LANGUAGE-MODELS

– Genereated Knowledge Prompting 매커니즘 : 모델이 knowledge를 생성하는 과정 진행 

출처 : https://www.promptingguide.ai/kr/techniques/knowledge

– Automatic Prompt Engineering 매커니즘 : 모델이 스스로 프롬프트를 생성 

출처 : https://www.promptingguide.ai/kr/techniques/ape

– Active-Prompt 매커니즘 : uncertainty estimation 과정 진행 

출처 : https://www.promptingguide.ai/kr/techniques/activeprompt

3) 프롬프트 작성 시 유의사항 

① 모델이 수행해야할 task가 무엇인지 명확하고 구체적으로 지시
– 모델이 어떤 task를 해야하는지 명시적으로 드러내기
– 모델이 따라야 할 출력 방식에 대해서도 구체적으로 지시 

② 질문과 관련된 정보와 맥락이 정확하고 상세하게 제시 
– 프롬프트가 구체적일수록 더 좋은 결과 
– 프롬프트의 길이가 제한적이기 때문에 답변과 관련성이 높은 핵심 정보를 잘 전달하는 것이 중요 

③ LLM에게 답변자로써 페르소나를 지정
– LLM이 가지는 역할 혹은 LLM이 답변해야할 대상에 대해 페르소나를 지정 

2. 프롬프트 엔지니어링 예시 

참고 자료 : https://www.promptingguide.ai/kr/introduction/examples

  • Text Summarization 
  • Information Extraction 
  • Question Answering
  • Text Classification
  • Reasoning
  • Conversation
  • Code Generation

Reference

https://www.promptingguide.ai/kr
https://tech.kakaoenterprise.com/188
https://rgbitcode.com/blog/senspond/11
https://velog.io/@boyunj0226/GPT%ED%95%9C%ED%85%8C-%EC%9E%98-%EB%AC%BC%EC%96%B4%EB%B3%B4%EB%8A%94-%EB%B2%95-3-%EB%B0%9C%EC%A0%84%EB%90%9C-Prompt-Engineering-%EB%B0%A9%EB%B2%95#active-prompt
https://rimiyeyo.tistory.com/entry/%EB%8B%A4%EC%96%91%ED%95%9C-%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8-%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EB%A7%81Prompt-Engineering%EC%97%90-%EB%8C%80%ED%95%B4-%EC%82%B4%ED%8E%B4%EB%B3%B4%EC%9E%901-Zero-shot-One-shot-Few-shot-CoT#LLM%20Prompt%20Engineering-1
https://medium.com/@minji.sql/prompt-%ED%99%9C%EC%9A%A9%ED%8E%B8-%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8-%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EB%A7%81-%EC%9E%91%EC%84%B1%EA%B0%80%EC%9D%B4%EB%93%9C-%ED%8C%81%EA%B3%BC-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD-%EC%98%88%EC%8B%9C-0357f81bc969

 [출처] https://working-helen.tistory.com/105

Loading

1 8월 2025

[인공지능 기술] AI 프롬프트 엔지니어링 완벽 정리

[인공지능 기술] AI 프롬프트 엔지니어링 완벽 정리

최근 뉴스 기사에서 요즘 10대~50대까지 가장 많이 사용하는 앱 중 하나가 ChatGPT라는 조사결과가 있었습니다. 그만큼 우리 일상에서 없어서는 안 될 도구가 되었는데, 우리는 과연 제대로 사용하고 있는 것일까요?

이 놀라운 도구들을 제대로 활용하려면 좋은 ‘프롬프트’를 작성하는 법을 알아야 해요.

이번엔 AI를 200% 활용할 수 있는 프롬프트 작성법을 단계별로 알려드릴게요!

1. 프롬프트 엔지니어링이 뭐길래?

프롬프트는 AI에게 주는 지시나 질문이에요. 쉽게 말해 ‘무엇을 해달라고 부탁하는 방법’이라고 할 수 있죠.

여러분이 “안녕?”이라고 물으면 AI는 간단히 인사를 건넬 테지만, 구체적이고 명확한 질문을 던지면 훨씬 유용한 답변을 받을 수 있어요.

간단한 프롬프트부터 연습해 보세요.

“다음 주제에 대해 500자로 설명해 줘 : 인공지능의 역사”

“인공지능의 장점과 단점을 각각 3가지씩 알려줘”

2. 다양한 프롬프트 유형

프롬프트는 목적에 따라 여러 유형이 있습니다. 각 유형을 알아두면 상황에 맞게 활용할 수 있어요.

정보 요청 프롬프트

“비타민 D가 부족하면 나타나는 증상 5가지는 무엇인가요?”

“한국 역사에서 가장 중요한 사건 3가지를 시간순으로 설명해 줘.”

창의적 글쓰기 프롬프트

“고양이의 시선으로 본 하루를 일기 형식으로 써줘.”

“2050년 서울의 모습을 묘사하는 짧은 글을 작성해 줘.”

문제 해결 프롬프트

“다음 논리 퍼즐을 풀어줘 : 항상 거짓말을 하는 A와 항상 진실을 말하는 B가 있다. A가 ‘나는 B다’라고 말했다. 이것이 가능한가?”

“주방에 계란, 밀가루, 설탕만 있을 때 만들 수 있는 간단한 디저트 레시피를 알려줘.”

코드 작성 프롬프트

“파이썬으로 간단한 투두리스트 앱을 만드는 코드를 작성해 줘.”

“자바스크립트로 버튼 클릭 시 색상이 변하는 기능을 구현하는 방법은?”

도전! 각 유형별로 2-3개의 프롬프트를 직접 만들어보고, AI의 답변을 비교해 보세요.

어떤 표현이 더 좋은 결과를 가져오는지 느낌이 올 거예요.

3. 실패와 성공 사례

프롬프트의 좋고 나쁨을 가르는 실제 사례를 한번 볼게요

나쁜 프롬프트

“여행에 대해 알려줘”

-> 너무 광범위해서 AI가 무엇을 설명해야 할지 모르겠죠?

좋은 프롬프트

“20대 직장인이 일본 오사카를 3박 4일 동안 여행할 때 추천 일정과 꼭 가볼 곳 5곳을 알려줘. 예산은 100만 원이고, 맛집 다니는 것을 좋아해.”

-> 구체적인 정보와 맥락을 제공해서 맞춤형 답변을 받을 수 있어요.

연습해 봅시다 : 여러분이 실제로 궁금한 주제로 ‘나쁜 프롬프트’와 ‘좋은 프롬프트’를 각각 작성해 보고 결과를 비교해 보세요.

4. AI의 강점과 한계를 이해

AI를 잘 활용하려면 무엇을 잘하고 못하는지 알아야 합니다.

AI가 잘하는 것은

방대한 정보 기반 지식 제공

다양한 관점에서 아이디어 제안

텍스트 요약 및 분석

창의적인 콘텐츠 생성

AI의 한계

최신 정보는 모를 수 있다 (학습 데이터 기준일 이후 발생한 일)

가끔 사실이 아닌 정보를 제공할 수 있다 (환각 현상:할루시네이션)

맥락을 완벽하게 이해하지 못할 수 있다

프롬프트 작성 팁 : AI의 한계를 보완하려면 필요한 정보와 맥락을 충분히 제공해 보세요.

5. 매일매일 연습

프롬프트 작성 실력은 연습이 핵심!

매일 도전하기 :

#1. 매일 2~3개의 다양한 프롬프트를 작성

#2. 마음에 들지 않는 응답이 나오면 프롬프트를 수정해 다시 시도

#3. “더 자세히 설명해 줘” 또는 “이해하기 쉽게 다시 설명해 줘” 같은 후속 질문으로 답변을 발전

함께 배우기

Reddit의 r/PromptEngineering이나 Discord 커뮤니티에 참여해 다른 사람들의 프롬프트를 살펴보고 피드백도 받아봅시다!

6. 고급 프롬프트 기법 배우기

기본을 익혔다면 이제 프로처럼 프롬프트를 작성해 봅시다

Few-Shot 학습 기법

AI에게 예시를 보여주고 비슷한 패턴으로 대답하도록 유도하는 방법

-다음은 영어 문장을 한국어로 번역한 예시야 :

영어 : “The weather si nice today.”

한국어 : “오늘 날씨가 좋네요.”

영어 : “I love watching movies on weekends.”

한국어 :

Chain-of-thought (사고 연쇄) 프롬프팅

복잡한 문제를 풀 때 단계별로 생각하도록 유도하는 방법

-다음 수학 문제를 단계별로 풀어줘. 각 단계에서 어떤 계산을 하는지 설명하면서 풀어보자.

문제 : 가게에서 3,000원짜리 펜을 5개 구매하고 1,500원짜리 노트를 2개 구매했다. 총금액의 10%를 할인받았다면 최종 지불 금액은 얼마인가?

추천 자료 : Open AI의 프롬프트 가이드라인, DeepLearning.AI의 “ChatGPT Prompt Engineering for Developers” 강의

7. 도구와 리소스의 활용

프롬프트 작성 실력을 키울 수 있는 다양한 도구와 자료들이 있습니다.

AI 도구 테스트

ChatGPT (Plus 구독 시 GPT-4.5까지 사용 가능)

Claude

Gemini

Perplexity AI

추천 강의 :

Udemy의 “Mastering ChatGPT Prompts”

Coursera의 “Prompt Engineering for ChatGPT”

추천 책 :

“The ChatGPT Prompt Handbook”

“Prompt Engineering for Business”

8. 실전 프로젝트로 응용

이론만 공부하면 지루한, 작은 프로젝트를 통해 실제로 적용해 봅시다.

프로젝트 아이디어 :

AI로 블로그 글 초안 작성

코드 리뷰나 버그 수정 도움받기

주간 운동 계획 만들기

창의적인 스토리나 시 작성하기

외국어 학습 도우미로 활용하기

나만의 프롬프트 라이브러리 만들기 : 특히 효과적이었던 프롬프트를 모아두면 나중에 다시 활용 가능!

9. 최신 트렌드 따라가기

AI 기술은 정말 빠르게 발전하고 있습니다. 최신 소식을 놓치지 맙시다!

DeepLearning.AI의 ‘The Batch’ 뉴스레터

‘Towards AI’ 블로그

OpenAI와 Anthropic 블로그

Twitter/X에서 #PromptEngineering 해시태그 검색

마무리 : 나만의 AI 비서 만들어보기

프롬프트 엔지니어링은 AI와 효과적으로 소통하는 언어를 배우는 과정이에요. 처음에는 어색할 수 있지만, 연습할수록 점점 더 나아갈 거예요!

가장 중요한 건 직접 해보는 것입니다. 위 내용으로 공부해 보시고, 적용해 보세요.

어떤 질문이든 AI에게 물어보고, 응답이 마음에 들지 않으면 프롬프트를 개선해 보세요. 그렇게 하다 보면 어느새 AI는 여러분만의 강력한 비서가 되어 있을 테니까요.

[출처] https://brunch.co.kr/@jaylep/120

Loading

8 7월 2025

[python 인공지능] Deploy ML models with FastAPI, Docker, and Heroku | Tutorial

[python 인공지능] Deploy ML models with FastAPI, Docker, and Heroku | Tutorial

 

🔧 머신러닝 모델 배포 전반

  • (00:00) FastAPI + Docker + Heroku 조합으로 머신러닝 모델을 프로덕션 수준으로 배포하는 전체 과정을 설명.

  • 다양한 프레임워크(Scikit-learn, TensorFlow, PyTorch)에서도 동일한 접근 방식으로 활용 가능.


🧠 모델 개발 및 저장

  • (01:03~03:53)

    • Google Colab에서 언어 감지 모델 개발 (Scikit-learn 기반 Naive Bayes + CountVectorizer).

    • 모델은 Pipeline으로 결합하여 추론을 단일 객체로 수행.

    • pickle로 모델 저장, 버전 관리(major.minor.patch) 권장.

    • 텐서플로나 파이토치 사용 시 zip 압축하여 다운로드하는 팁 소개.


🏗️ FastAPI 애플리케이션 구성

  • (05:10~08:11)

    • app/main.py에서 FastAPI 엔드포인트 구현 (헬스 체크 및 /predict POST API).

    • model.py에서 저장된 모델 로드 및 전처리/예측 로직 구현.

    • pydantic.BaseModel 기반 입력/출력 유효성 검사 적용 (타입 안전성 보장).


🐳 Docker 컨테이너화

  • (08:46~11:27)

    • FastAPI 컨테이너화를 위한 Dockerfile, .dockerignore, requirements.txt 생성.

    • 공식 FastAPI + Gunicorn 기반 Docker 이미지 활용.

    • 의존성은 scikit-learn만 추가 설치 (==1.0.2 등 버전 고정 권장).

    • docker build, docker run 명령어로 로컬 실행 및 포트 매핑 확인.


📋 FastAPI 자동 문서화

  • (12:50~13:34)

    • /docs 경로에서 Swagger 기반 API 문서 자동 생성.

    • 입력 텍스트에 따른 언어 예측 테스트 가능 (Postman 없이도 가능).


☁️ Heroku 배포

  • (14:17~17:51)

    • heroku login, heroku create, git push heroku main으로 CLI 기반 배포 진행.

    • heroku.yaml 파일 작성 필수 (Heroku Dev Center 문서 참고).

    • heroku stack:set container로 Docker 기반 스택 설정.

    • 배포 후 Heroku URL에서 API 접근 가능.


배포 후 테스트

  • (17:51~18:38)

    • Postman으로 GET /Health Check OK, POST /predict"language": "german", "language": "italian" 확인.

    • 실시간 언어 감지 API 배포 완료!


필요 시 각 섹션별로 관련 코드/구성요소를 다시 정리해드릴 수 있습니다.

 

나의 말:
섹션별로 관련 코드/구성요소를 다시 정리
 
ChatGPT의 말:

아래는 영상에서 설명한 FastAPI + Docker + Heroku를 활용한 머신러닝 모델 배포 과정을 섹션별로 코드 및 구성요소 중심으로 재정리한 내용입니다:


1️⃣ 모델 개발 및 저장 (Colab)

✅ 사용 기술:

  • scikit-learn, pandas, re, pickle

📄 주요 코드:

python
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
import pickle

# 데이터 준비 및 전처리
label_encoder = LabelEncoder()
y_encoded = label_encoder.fit_transform(df['language'])

# 모델 파이프라인 정의
pipeline = Pipeline([
('vectorizer', CountVectorizer()),
('classifier', MultinomialNB())
])

# 훈련
pipeline.fit(df['text'], y_encoded)

# 저장
with open('model_v0.1.0.pkl', 'wb') as f:
pickle.dump(pipeline, f)

# 레이블 저장 (선택)
label_classes = label_encoder.classes_


2️⃣ FastAPI 앱 구성

📁 디렉터리 구조:

bash
app/
├── main.py # FastAPI 엔트리포인트
├── model/
│ ├── model.py # 모델 로딩 및 예측 함수
│ └── model_v0.1.0.pkl # 저장된 모델 파일

📄 model/model.py (모델 로딩 및 예측)

python
import pickle
import os
import re

BASE_DIR = os.path.dirname(__file__)
MODEL_PATH = os.path.join(BASE_DIR, "model_v0.1.0.pkl")

with open(MODEL_PATH, "rb") as f:
model = pickle.load(f)

label_classes = ["english", "german", "italian", ...] # 실제 label list

def predict_pipeline(text: str) -> str:
text = re.sub(r"[^\w\s]", "", text)
pred = model.predict([text])[0]
return label_classes[pred]

📄 main.py (FastAPI 엔드포인트)

python
from fastapi import FastAPI
from pydantic import BaseModel
from app.model.model import predict_pipeline

app = FastAPI()

class TextIn(BaseModel):
text: str

class PredictionOut(BaseModel):
language: str

@app.get("/")
def health_check():
return {"status": "ok", "model_version": "0.1.0"}

@app.post("/predict", response_model=PredictionOut)
def predict(payload: TextIn):
language = predict_pipeline(payload.text)
return {"language": language}


3️⃣ Docker 구성

📄 Dockerfile

dockerfile
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8

WORKDIR /app
COPY ./app /app/app
COPY requirements.txt /app

RUN pip install --no-cache-dir -r /app/requirements.txt

📄 requirements.txt

txt
scikit-learn==1.0.2

📄 .dockerignore

txt
__pycache__/
*.pyc
*.pkl
*.zip
.venv

4️⃣ 로컬 Docker 테스트 명령어

bash
# 빌드
docker build -t language-detection-app .

# 실행 (포트 매핑)
docker run -p 8080:80 language-detection-app


5️⃣ FastAPI 자동 문서화

접속:

bash
http://localhost:8080/docs

자동 생성된 Swagger UI에서 /predict POST API 테스트 가능


6️⃣ Heroku 배포 구성

📄 heroku.yml

yaml
build:
docker:
web: Dockerfile
run:
web: uvicorn app.main:app --host=0.0.0.0 --port=${PORT:-5000}

🧪 Heroku CLI 명령어:

bash
heroku login
heroku create language-detection-app123
heroku stack:set container
git add .
git commit -m "Deploy to Heroku"
git push heroku main

7️⃣ 배포 확인

  • 배포 URL 예시: https://language-detection-app123.herokuapp.com

  • GET / → 헬스체크

  • POST /predict → 언어 예측

Loading

1 7월 2025

[Next.js 개발] pm2 로 Next.js 실행하기

[Next.js 개발] pm2 로 Next.js 실행하기

상황

pm2 로 React+Next.js 로 구성된 어플리케이션를 무중단 배포 하고자 함.

방법

  1. build

    먼저, 어플리케이션 build를 실행 함.

    npm run build 

    또는 package.json의 scripts에 prestart를 다음과 같이 추가 해주면 npm start 를 실행 할 때 자동으로 prestart가 먼저 실행되고, prestart의 명령대로 build가 이루어져 npm run build를 따로 실행 안 해도 됨.

    package.json

    "scripts": {
        "dev": "next -p 3000",
        "build": "next build",
        "prestart": "npm run build",
        "start": "next start -p 80"
      },
  2. pm2 등록

    package.json

    "scripts": {
    ...
        "start": "next start -p 80"
    ...
      },

    cmd

    pm2 --name 어플리케이션이름 start npm -- start

    위의 명령어 실행 후 사이트 접속 했을 경우, 페이지가 나타나지 않으면 제대로 실행이 되지 않은 것이다.

    ( pm2 목록은 생성 되었으나, 사이트를 실제로 접속 했을 경우, 페이지가 뜨지 않았다.)

    필자는 그러하였고, pm2 목록을 지우고 다음과 같은 명령어로 새로 실행하였다.

    pm2 start "npm run start" --name 어플리케이션이름

참고 문헌

[출처] https://velog.io/@mangojang/pm2-%EB%A1%9C-Next.js-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0

Loading

29 5월 2025

[인공지능 기술] [알아봅시다] 개발자의 chatGPT 활용법

[인공지능 기술] [알아봅시다] 개발자의 chatGPT 활용법

25931365-b065-467e-bd43-44127efdf182.png

서론

현대 소프트웨어 개발 환경에서 AI 비서로 자리 잡은 ChatGPT는 단순한 문답을 넘어 다양한 개발 단계에서 생산성을 크게 향상시켜 줍니다. 이 포스트에서는 코드 작성부터 테스트, 문서화, CI/CD 파이프라인 통합까지 개발자가 ChatGPT를 활용할 수 있는 대표적인 방법들을 살펴봅니다.


1. 코드 스캐폴딩(Scaffolding) 및 초기 구조 생성

  • 프로젝트 템플릿 생성

    • “새로운 Django 프로젝트 기본 설정 코드를 생성해줘”

  • CRUD 엔드포인트 초안

    • “Express.js로 users CRUD API 라우터 코드를 짜줘”

  • 디렉터리 구조 제안

    • “React + TypeScript 프로젝트 구조를 어떻게 잡는 게 좋을까?”

 
javascript
// 예시: Express.js CRUD 스캐폴딩 const express = require('express'); const router = express.Router(); // GET all users router.get('/users'async (req, res) => { // ChatGPT가 제안한 기본 로직 }); // POST create user router.post('/users'async (req, res) => { // ... }); module.exports = router;

2. 디버깅 및 오류 해결

  • 에러 메시지 분석

    • “이 Node.js 에러 스택을 보고 원인과 해결 방법을 알려줘”

  • 코드 리뷰를 통한 버그 찾기

    • “다음 함수에서 잠재적인 null 참조 버그가 있을까?”

  • 리팩터링 제안

    • “이 파이썬 함수의 가독성을 높이도록 리팩터링해줘”


3. 코드 문서화 및 주석 작성

  • 함수/클래스 설명 자동 생성

    • “이 함수의 역할을 한 문장으로 요약해줘”

  • README.md 작성 보조

    • “이 프로젝트의 README 템플릿을 작성해줘”

  • 주석 일관성 유지

    • “이 자바스크립트 코드에 JSDoc 스타일 주석을 추가해줘”

 
markdown
/** * @function addTwoNumbers * @param {number} a - 첫 번째 숫자 * @param {number} b - 두 번째 숫자 * @returns {number} 두 수의 합 */ function addTwoNumbers(a, b) { return a + b; }

4. 테스트 케이스 및 자동화 스크립트 생성

  • 유닛 테스트 템플릿

    • “Jest를 이용한 add 함수 테스트 코드를 작성해줘”

  • 통합 테스트 시나리오

    • “API 엔드포인트 /login에 대한 통합 테스트 계획을 제안해줘”

  • 테스트 커버리지 개선 아이디어

    • “이 모듈의 경로 커버리지를 높이려면 어떤 테스트가 필요할까?”


5. 코드 리뷰 및 최적화 제안

  • 성능 병목 분석

    • “이 SQL 쿼리가 느린 원인과 인덱스 최적화 방안을 알려줘”

  • 비효율적 로직 리팩터링

    • “이 루프를 더 효율적인 함수형 스타일로 바꿔줄래?”

  • 보안 취약점 점검

    • “이 PHP 코드에서 SQL 인젝션 취약점이 있나?”


6. 새로운 기술 학습 및 예제 생성

  • 라이브러리 사용 예제

    • “Pandas에서 groupby와 pivot 테이블을 사용하는 예제를 보여줘”

  • 비교 분석

    • “Django와 Flask 중 어느 것을 선택해야 할까?”

  • 공식 문서 요약

    • “React 공식 문서에서 useEffect 훅 사용법을 요약해줘”


7. CI/CD 파이프라인 및 DevOps 자동화

  • GitHub Actions 워크플로우 생성

    • “Node.js 프로젝트용 GitHub Actions 워크플로우 YAML을 생성해줘”

  • Dockerfile 최적화

    • “이 Dockerfile을 멀티스테이지 빌드로 최적화해줘”

  • 배포 스크립트 작성

    • “AWS EC2에 배포하는 Bash 스크립트를 작성해줘”


8. 커밋 메시지 작성 및 이슈 템플릿

  • 의미 있는 커밋 메시지

    • “다음 변경 내용을 설명하는 커밋 메시지를 작성해줘: 사용자 로그인 로직 수정, JWT 토큰 방식으로 변경”

  • 이슈 템플릿 자동 생성

    • “버그 리포트용 GitHub 이슈 템플릿을 만들어줘”


결론

ChatGPT는 단순히 대화형 AI를 넘어, 개발 생산성을 높여주는 올인원 도구로 발전했습니다.
코드 스캐폴딩에서부터 디버깅, 테스트, 문서화, DevOps 자동화에 이르기까지 일련의 개발 과정을 ChatGPT와 협업함으로써 더 빠르고, 더 안정적이며, 더 효율적인 소프트웨어를 구현할 수 있습니다.
오늘 바로 ChatGPT를 개발 워크플로우에 통합해 보세요!


이 글이 도움이 되었다면, 댓글과 공유 부탁드립니다!

Loading

28 5월 2025

[인공지능 기술] Gradio 설치 및 실행 방법

[인공지능 기술] Gradio 설치 및 실행 방법

1. Gradio란 무엇인가?


Gradio는 Python으로 개발된 오픈 소스 패키지이다.
Gradio를 사용하면 몇 줄의 코드로 ML 모델, API 또는 임의의 Python 함수에 대해 사용하기 쉽고 커스터마이징할 수 있는 UI 구성 요소를 빠르게 생성할 수 있다.
Gradio GUI를 Jupyter 노트북에 직접 통합하거나 링크로 다른 사람과 공유할 수도 있다.

00 image.png 

2. Gradio 설치


Gradio를 설치하는 방법은 다음과 같다.
터미널에서 다음 명령을 실행하거나 Google Colab에서 실행할 수 있다.

pip install gradio

 Jupyter Notebook을 사용하는 경우에는 다음과 같이 입력한다.

!pip install gradio

 

3. Gradio 애플리케이션을 실행하는 방법


Gradio 애플리케이션을 실행하는 방법을 알아보자.
다음은 사용자의 이름을 입력받아 인사 메시지를 생성하는 간단한 Python 애플리케이션이다.

#!pip install gradio
import gradio as gr

def user_greeting(name):
    return "안녕하세요! " + name + "님, 첫 번째 Gradio 애플리케이션에 오신 것을 환영합니다!????"

app = gr.Interface(fn=user_greeting, inputs="text", outputs="text")
app.launch()

???? 에러 메시지 발생 (ModuleNotFoundError: No module named 'tqdm')

  • 내가 코드를 실행 했을 때는 위와 같은 에러 메시지가 발생 했는데, 에러 메시지에 따르면 gradio 모듈을 찾을 수 없고, gradio 모듈의 일부 파일에서 tqdm 모듈을 찾을 수 없다고 한다.

???? 해결 방법

  • gradio와 tqdm 모듈의 호환성 문제가 있을 수 있기 때문에 gradio와 tqdm 모듈을 최신 버전으로 업데이트 하였다.
    pip install -U gradio
    pip install -U tqdm
    • Gradio 애플리케이션이 실행되었다.

 

명령 프롬프트에서 Gradio 응용 프로그램 실행

Gradio 애플리케이션을 명령 프롬프트에서 실행할 수 있다.
명령 프롬프트에서 다음과 같이 입력한다.

python app.py


애플리케이션을 실행하면 다음의 URL을 열어서 결과를 확인할 수 있다: http://127.0.0.1:7862

  • 이 URL은 각자의 환경에 따라 다를 수 있다.

 

Jupyter Notebook에서 Gradio 애플리케이션 실행

Jupyter Notebook에서 코드를 실행할 수도 있다.
인터페이스를 생성한 후 app.launch()를 사용하여 애플리케이션을 실행할 수 있다.

app = gr.Interface(fn=user_greeting, inputs="text", outputs="text")
app.launch()
  • 이렇게 하면 새로운 위젯이 생성된다.

[출처] Gradio 설치 및 실행 방법

Loading