비트를 쪼개는 개발자

allen321@naver.com

전체 글 82

[프롬프트 엔지니어링] - 프롬프트 기획과 제작

지난 글에서는 프롬프트란 AI에게 질문을 전달하기 위한 입력 텍스트를 의미하고 고도화된 프롬프트는 LLM을 더욱 효과적으로 사용할 수 있게 도와준다고 정리했었다. 그렇다면 이번 포스트에서는 좋은 프롬프트를 만들기 위해서는 어떠한 방법을 거쳐야 하는지, 어떤 원리로 프롬프트를 만들어야 하는지 알아보도록 하자.   ChatGPT를 개발한 'Open AI'사에서는 프롬프트를 만들때 다음과 같은 지침을 권장한다.   https://platform.openai.com/docs/guides/prompt-generationfrom openai import OpenAIclient = OpenAI()META_PROMPT = """Given a task description or existing prompt, produc..

[프롬프트 엔지니어링] - 프롬프트 엔지니어링(Prompt Engineering)이란?

프롬프트 엔지니어링이란?   프롬프트는 AI에게 질문이나 요청을 전달하는 명령문 또는 입력 텍스트를 의미한다.프롬프트 엔지니어링은 AI나 LLM에게 최적의 결과물을 만들어 내도록 유도하는 프롬프트를 작성하는 개발 방법론이다. 잘 설계된 프롬프트는 모델이 더 명확하고 관련성 높은 응답을 제공할 수 있도록 도와준다.각 언어 모델마다 최적의 답변을 도출하기 위해서 언어 모델마다 적합한 프롬프트는 달라질 수 있다.고도화된 프롬프트는 상호작용마다 발생하는 모델 사용비를 줄여 경제적으로 LLM을 사용할 수 있게 해준다.프롬프트 엔지니어링을 제작하는 과정은 정확하고 일관적인 답변의 확률을 높여나가는 과정이라고 할 수 있다.  상용화된 LLM들의 대표적인 오류  1. Hallucination (할루시네이션, 환각)  ..

Unity 에서 Cursor AI를 활용해 게임 기능을 쉽게 구현해 보기 (2)

https://mozartnt.tistory.com/74 Unity 에서 Cursor AI를 활용해 게임 기능을 쉽게 구현해 보기 (1)오늘은 Cursor AI를 활용해서 Unity로 게임을 만드는 코드를 인공지능에게 맡겨보도록 하자.    최근 수 많은 인공지능의 발전으로 코드의 오류를 잡고 기능을 구현할 때 많은 LLM을 사용하는데 mozartnt.tistory.com 지난 글에 이어서 이번에는 Cursor AI를 설치하고 연동 한 이후 게임 내의 기능 구현 코드를 Cursor AI에게 맡겨보고 어느 정도의 퀄리티의 기능 구현이 가능한지 살펴보도록 하자.         현재 테스트 해볼 프로젝트는 테스트를 위해서 임시로 만들었고 모바일 디펜스 게임과 비슷한 형태로 만들기 위해서 잡몹들이 수시로 스폰되..

Unity 2024.11.01

Unity 에서 Cursor AI를 활용해 게임 기능을 쉽게 구현해 보기 (1)

오늘은 Cursor AI를 활용해서 Unity로 게임을 만드는 코드를 인공지능에게 맡겨보도록 하자.    최근 수 많은 인공지능의 발전으로 코드의 오류를 잡고 기능을 구현할 때 많은 LLM을 사용하는데 대부분 "OpenAI" 사의  "ChatGPT", "Anthropic" 사의 "Claude", 그리고 Google에서 출시한 BARD(최근 이름은 Gemini) 등을 사용한다. 모델별로 성능은 조금씩 차이가 있지만 요즘 대부분의 상용화된 LLM은 훌륭한 성능을 보여준다. 다만 결제를 하지 않는다면 모델의 구 버전을 사용해야 하거나 하루의 질문 횟수가 정해져 있는 식으로 회사별로 약간의 제한사항이 발생하는데, 사실 여러 모델을 비교하기 위해서 매 달 결제하는 일은 은근 부담이 되는 일이다.   무엇보다 Ch..

Unity 2024.11.01

C# - 이터레이터(Iterator) [반복자]

이터레이터(Iterator)란?  Iteration라는 단어는 반복이라는 의미를 가진다. C#에서 이를 Iterator를 사용한다는 것은 프로그램안에서 특정 동작이나 행위를 반복시키고 싶을때 사용한다. C#에서는 이 Iterator를 IEnumerator라는 인터페이스를 사용해서 나타내고 이를 열거자 라고 지칭한다. Iterator는 다음과 같은 특징을 가진다.  Iterator의 특징순차적 접근:이터레이터는 컬렉션 내의 요소를 순서대로 하나씩 접근할 수 있게 도와준다. 첫 번째 요소부터 시작해 마지막 요소까지 순차적으로 요소에 접근할 수 있다.상태 관리:IEnumerator 인터페이스는 Current, MoveNext, Reset 메서드를 통해 현재 요소의 상태를 유지하고, 다음 요소로 이동하거나 컬렉..

C# 2024.10.29

C# [디자인 패턴] - 팩토리 패턴(Factory Pattern)

팩토리 패턴(Factory Pattern)이란? 팩토리 패턴(Factory Pattern)은 객체 생성 로직을 클라이언트 코드와 분리하여 객체 생성을 관리하는 디자인 패턴이다.객체 생성 로직을 별도의 클래스나 메서드로 분리하여, 클라이언트 코드가 직접 객체를 생성하지 않고 팩토리를 통해 객체를 생성하도록 한다.팩토리 메서드만 수정하면 객체 생성 방식을 변경할 수 있으므로, 코드 수정이 유연해진다.팩토리 패턴은 크게 두가지로 분류된다. ("팩토리 메서드 패턴"과 "추상 팩토리 패턴")   팩토리 매서드 패턴     팩토리 매서드 패턴은 객체를 생성하는 메서드를 캡슐화하여 서브클래스에서 구체적인 생성 방식을 정의하게 한다.객체 생성을 일종의 공장(팩토리) 클래스로 생성을 전담시키고 나머지 자세한 부분은 서브..

C# 2024.10.24

C# [디자인 패턴] - 상태 패턴(State Pattern)

상태 패턴이란? 상태 패턴(State Pattern)은 객체의 상태에 따라 그 객체의 행동이 변경되도록 하는 디자인 패턴이다.상태 패턴은 객체의 상태가 변화할 때, 해당 상태에 따른 로직을 별도의 상태 클래스들로 분리하여 구현한다.객체의 상태와 관련된 코드가 분리되기 때문에 상태 전환을 쉽게 관리할 수 있게 된다.객체 지향 설계 원칙인 변화 부분을 "캡슐화" 할 수 있고 이를 통해 코드의 확장성이 용이해진다.   상태 패턴의 구성 요소는?상태 패턴은 크게 Context(시스템, 주체), State(상태, 인터페이스), ConcreteState(구체적 상태)로 구성된다.    1. Context 상태를 관리하는 객체로, 현재 상태에 따라 동작을 위임하는 역할을 수행한다상태 패턴의 사용자 측에서 사용할 주요..

C# 2024.10.22

C# [HackerRank] Algorithm(Data Structures) - Equal Stacks

문제      문제 설명 스택과 유사한 구조로 만들어전 3개의 실린더가 있다. 각각의 실린더의 높이는 제각각인데 실린더의 요소로 구성된 숫자를 하나씩 제거하면서 3개의 실린더 높이를 동일하게 만드는 것이 최종 목표이다. 실린더는 아래의 그림과 같은 형태로 구성되고 맨 위에 위치하는 숫자에 해당하는 요소를 삭제해 가며 최종적으로는 같아진 높이의 값을 return 하면 되는 문제다.      최종적으로 같아진 높이는 5 이므로 5를 return 해주면 되는 문제다.    풀이 방법  먼저 각각의 실린더는 스택과 같은 구조로 이루어져있다. 함수에서 넘겨받는 매개 변수가 List로 이루어져 있기 때문에 각각의 리스트의 요소들을 먼저 스택에 담아주었다. 담는 과정에서 리스트를 그대로 담으면 스택의 특성 상 리스트..

코딩테스트 2024.10.14