zzziaho

프롬프트 엔지니어링(Prompt Engineering)이란? LLM의 답을 바꾸는 원리

안녕하세요.프롬프트 엔지니어링이라고 하면 "너는 전문가야"로 시작하라거나 "단계별로 생각해"를 붙이라는 식의 요령이 먼저 떠오릅니다.저도 처음에는 잘 듣는 주문을 모아 둔 것쯤으로 생각했습니다.이번 포스팅에서는 프롬프트가 모델에게 실제로 무엇을 바꾸는지, 지시만으로는 무엇을 바꾸지 못하는지, 그리고 고친 프롬프트가 나아졌는지 어떻게 확인하는지 알아보겠습니다.확인에 사용한 환경은 Windows 11, Ollama 0.34.0, llama3.2:1b, Git Bash, jq입니다.프롬프트는 모델이 받는 글 전체다프롬프트(Prompt)는 모델에게 보내는 글 전체입니다. 사용자가 던진 질문만이 아니라, 함께 보내는 지시와 예시와 참고 자료가 모두 포함됩니다.네 부분을 모두 갖춘 프롬프트를 예로 들면 이렇습니다...

LLM 환각(할루시네이션, Hallucination)이 생기는 이유와 확인하는 방법

안녕하세요.LLM에 없는 라이브러리의 함수나 존재하지 않는 논문을 물어도, 그럴듯한 이름과 설명이 망설임 없이 돌아오는 경우가 있습니다.답의 문장만 보면 맞는 답과 틀린 답이 구별되지 않아서, 직접 확인하기 전까지는 믿어도 되는지 알 수 없습니다.이번 포스팅에서는 이런 답을 가리키는 환각이 무엇인지, 모델이 모른다고 하지 않고 답을 지어내는 이유가 무엇인지, 그리고 그런 답을 어떻게 알아챌 수 있는지 알아보겠습니다.확인에 사용한 환경은 Windows 11, Ollama 0.34.0, llama3.2:1b, Git Bash, jq입니다.환각은 그럴듯하지만 사실과 다른 답이다환각(Hallucination)은 LLM이 그럴듯하지만 사실이 아니거나 근거가 없는 내용을 만들어 내는 현상입니다. 문장이 자연스럽고 ..

LLM temperature와 top_p, top_k, seed 차이

안녕하세요.LLM에 같은 질문을 두 번 보내면 답이 조금씩 다르게 돌아옵니다.그런데 답이 매번 달라지면, 모델에게 보내는 글인 프롬프트를 고친 뒤 답이 정말 나아진 것인지 이번에 운 좋게 좋은 답이 나온 것인지 가릴 수가 없습니다.이번 포스팅에서는 답이 어디에서 달라지는지, 그리고 그것을 조절하는 값 네 개(temperature, top_k, top_p, seed)가 각각 무엇을 바꾸는지 알아보겠습니다.확인에 사용한 환경은 Windows 11, Ollama 0.33.3, llama3.2:1b, Git Bash, jq 1.8.2입니다.답은 후보를 뽑는 단계에서 달라진다모델은 다음 토큰을 곧바로 하나 정하지 않고, 어휘 목록에 있는 후보마다 확률을 매긴 목록을 먼저 만듭니다. 이 환경에서 같은 입력을 두 번..

LLM이 대화를 기억하는 방법과 토큰이 누적되는 이유

안녕하세요.ChatGPT나 Gemini와 대화를 이어 가다 보면 AI가 앞에서 나눈 이야기를 기억하고 있는 것처럼 느껴집니다.쓰다 보면 궁금해지는 것이 있습니다. 모델이 지난 대화를 어디에 담아 두는지, 그리고 대화가 길어져도 아무 문제가 없는지입니다.이번 포스팅에서는 LLM이 대화를 이어 가는 방식을 알아보고, 대화가 길어질 때 토큰이 어떻게 쌓이는지 확인해보겠습니다.확인에 사용한 환경은 Windows 11, Ollama 0.33.2, llama3.2:1b, Git Bash, jq 1.8.2입니다.모델은 요청 하나만 보고 답한다LLM에 요청을 보내면 모델은 그 요청에 담긴 글을 읽고 답을 만들어 돌려줍니다. 답을 돌려주고 나면 모델은 그 대화를 따로 보관해 두지 않습니다.Ollama의 /api/chat..

한국어가 영어보다 LLM 토큰(Token)을 더 쓰는 이유

안녕하세요.LLM을 API로 쓰면 요금이 글자 수가 아니라 토큰 수에 따라 달라집니다. 한 번에 넣을 수 있는 분량도 토큰 수로 정해져 있어서, 긴 문서를 통째로 넣고 질문하는 방식은 그 한계를 넘는 순간 앞부분이 잘려 나갑니다.토큰이 이렇게 중요한데, 같은 내용이라도 한국어로 보내면 영어보다 토큰을 더 쓴다는 말이 있습니다. 글자 수만 보면 한국어 쪽이 짧은 경우가 많은데도 그렇습니다.이번 포스팅에서는 토큰이 무엇을 세는 단위인지부터 알아보고, 두 언어의 차이가 어디에서 오는지 알아보겠습니다.확인에 사용한 환경은 Windows 11, Ollama 0.33.2, llama3.2:1b, Git Bash, jq 1.8.2입니다.토큰이 무엇인가토큰은 모델이 글을 다룰 때 쓰는 최소 단위입니다. 모델은 글자를 ..

LLM 토크나이저(Tokenizer)가 문장을 토큰으로 쪼개는 원리

안녕하세요.LLM을 API로 쓰면 요금이 토큰 단위로 붙고, 한 번에 넣을 수 있는 분량도 글자 수가 아니라 토큰 수로 정해집니다. 그런데 무엇이 한 토큰인지는 쓰는 사용자가 정할 수 없습니다. 토큰은 모델이 이미 가지고 있는 어휘 목록이 정합니다.그 어휘 목록은 모델 파일 안에 들어 있어서 평소에는 보이지 않습니다. 단어를 모아 둔 것도 아니고 글자를 모아 둔 것도 아니라서, 무엇이 어떤 기준으로 들어갔는지 짐작하기도 어렵습니다.이번 포스팅에서는 그 어휘 목록이 어떻게 만들어지는지 알아보고, 실제로 열어서 무엇이 들어 있는지도 확인해 보겠습니다.확인에 사용한 환경은 Windows 11, Ollama 0.33.1, llama3.2:1b, Git Bash, jq 1.8.2입니다.토큰과 토크나이저가 무엇인가..

LLM(Large Language Model)이란 무엇이고 어떻게 답을 만드는가

안녕하세요.챗지피티(ChatGPT), 클로드(Claude), 제미나이(Gemini)처럼 요즘 널리 쓰이는 AI 서비스들은 만든 회사도 다르고 화면도 다릅니다. 그런데 그 안에서 실제로 글을 만들어 내는 부분은 모두 LLM이라는 같은 종류의 모델입니다.쓰다 보면 궁금해지는 것들이 생깁니다. 왜 어떤 질문에는 술술 답하다가 어떤 질문에는 그럴듯한 거짓말을 하는지, 왜 같은 질문을 다시 물으면 답이 조금씩 달라지는지 같은 것들입니다. 이 궁금증들은 전부 LLM이 답을 만들어 내는 방식 하나로 이어집니다.이번 포스팅에서는 그 LLM이 무엇이고 어떻게 답을 만드는지 알아보겠습니다.LLM이 무엇인가LLM은 Large Language Model, 큰 언어 모델의 약자입니다.Language Model (언어 모델): ..

Ollama 설치부터 API 호출까지 정리

안녕하세요로컬 LLM 중 하나인 Ollama에 대해 알아보고 설치 및 API 호출하는 방법까지 정리해보도록 하겠습니다.Ollama가 무엇인가Ollama는 로컬 컴퓨터에서 LLM을 내려받아 실행하게 해 주는 도구입니다. 오픈소스로 공개되어 있습니다. 모델 파일을 직접 관리하거나 추론 서버를 따로 띄우지 않아도, 명령 한 줄로 모델을 받고 바로 대화할 수 있습니다.그리고 Ollama는 REST API 서버를 함께 띄웁니다. 설치하면 로컬에 API 엔드포인트가 열리고, 상용 API를 호출하듯 요청을 보낼 수 있습니다. 그래서 터미널에서 대화만 해 보는 용도를 넘어 코드에 붙여 쓰는 것까지 가능합니다.이름에 라마가 들어가서 로고가 라마 이미지인데 상당히 귀엽습니다.왜 로컬에서 돌리는가ChatGPT, Claude..

8장. 프록시와 연관관계 정리

* 해당 포스팅은 김영한님의 '자바 ORM 표준 JPA 프로그래밍' 교재를 학습한 후 내용을 정리한 글입니다.📁 프록시 기초엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아니다.예를들어:회원과 팀 함께 출력:public void printUserAndTeam(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.getTeam(); System.out.println("회원 이름: " + member.getUsername()); System.out.println("팀 이름: " + team.getName()); // 팀도 사용!}→ Member와 Team을 모두 사용하므로 ..

7장. 고급 매핑

* 해당 포스팅은 김영한님의 '자바 ORM 표준 JPA 프로그래밍' 교재를 학습한 후 내용을 정리한 글입니다.📁 상속 관계 매핑관계형 데이터베이스에는 객체지향 언어에서 다루는 '상속'이라는 개념이 없다.대신 슈퍼타입 서브타입 관계( Super-Type Sub-Type Relationship) 라는 모델링 기법이 존재하고이 기법이 객체의 상속 개념과 가장 유사하다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현할 때는 3가지 방법이 있다.조인 전략단일 테이블 전략구현 클래스마다 테이블 전략📁 조인 전략 (Joined Strategy)엔티티 각각을 모두 테이블로 변환하는 전략.자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용한다.* 주의사항객체는 타입으로 구분이 ..