2025/01 26

[01/19] <어둠속의유산> 2일차

음. 생일에 이러고있으니까 약간 현타오지만. 생일이 뭐...특별한가! 라고 마인드 컨트롤. Dialogue 스타일을 바꿨다. 게임 창 사이즈도 바꾸고, 대화와 맵이 잘 보이도록 했다. 원래는 시스템 메세지를 위한 스타일을 따로 만들었었는데, 화자의 Portrait을 레이아웃 밖으로 꺼내서 화자가 없을때 Portrait만 가리면 되도록했다. 그렇게해서 System Style을 떼냈다. 튜토리얼을 만들었다. 잔디밭이 휑했는데 기본적인 조작법을 아래에 알려주고, 해당 키를 누르면 하이라이트 되도록 했다. 하이라이트하기 위해서 Shader를 사용했고, 키를 누르지 않고있다면 Shader Parameter를 초기화 하는식으로 구현했는데...이게 맞나 싶다. 코드가 너무 verbose함. 새벽에 잠이안와서 튜토리얼..

게임/게임개발 2025.01.19

[01/18] <어둠속의유산> 1일차

RPG Marker MZ 에셋 준비, 몇가지 무료 SFX를 itch.io에서 다운받음 상태머신을 활용한 캐릭터 움직임 구현 타일맵을 구성하는 중, 합쳐진 타일의 기준점이 중앙에가있어서 타일맵의 그리드에 딱딱 맞지 않게 그려지는 문제가 있었는데, 렌더링 > 텍스트 원점을 내가 그려지길 원하는 쪽으로 바꿔주었더니 잘된다. 집 안, 바깥, 우주까지 필요한 맵들을 준비했다.우주는 GodotShaders에서 우주 셰이더를 다운받아서 구현했다. DialogSystem 라이브러리중 가장 유명한 Dialogic을 사용해봤다. 커스텀하는데 진짜 피똥쌈...아직 개별 스타일을 만드는 방법을 몰라서 전체를 커스텀했다. 다음엔 Dialogic말고 다른걸 써볼까...넘 복잡하다. 캐릭터가 다가가서 Interaction을 하는 ..

게임/게임개발 2025.01.18

[ComfyUI] AI를 이용한 배너광고 자동 생성 워크플로우

가능한 사람의 손을 거치지 않고 다음과 같은 형식의 배너 광고를 생성하는 것이 나의 목표였다.사실 이 첨부사진은 자동으로 만들어낸 이미지다!입력으로는 게임 일러스트 사진을주고, 광고 문구를 제공해주었다.이 광고 배너를 만든 ComfyUI 워크플로우를 하나하나 뜯어보면서 어떻게 구성했는지 설명해보겠다. Step1. 배너 크기만큼 늘리기어떤 AspectRatio를 가진 이미지라도 가로배너 이미지로 만들어주기 위해 좌측의 Padding 값을 계산하는 단계다. 세로형 이미지의 경우 이미지가 정방형이라고 가정했을때 생기는 좌우 패딩만큼의 간격을 오른쪽에 추가해준다. 을 하게되면 패딩한 만큼 이미지 옆에 회색 공간이 생기고, 마스크도 그에 맞춰서 생성된다. Step2. 마스킹된 영역 흐리게 채우기이전 단계에서 마스..

[LangChain] LLM Workflow: Routing 구현

Routing은 이전 단계의 결과에따라 다음 단계를 비결정적으로 정의할 수 있도록 한다.  RunnableLambda 혹은 RunnableBranch를 이용하는 방법이있지만, 현재는 RunnableLambda를 사용하는 방법이 권장된다.  RunnableLambda는 Python callable을 Runnable로 바꿔주기만하는데, 별도로 RunnableBranch를 사용하기보다는 Python 코드 분기문을 통해 처리를 하라는 것이다. 실습유저의 질문이 파이썬 혹은 코틀린 프로그래밍과 관련 있을 경우, 이에 최적화된 프롬프트로 답변할 수 있도록 분기처리를 추가해볼 것이다. 먼저, 질문이 파이썬이나 코틀린과 관련되어있는지만 확인하는 체인을 준비한다.from langchain_core.prompts impo..

[LangChain] LLM Workflow : 병렬처리 구현

실행하려는 체인들이 각각 독립적일때, 메모리를 더 사용해서 수행시간을 단축시키기 위해 체인을 병렬처리할 수 있다. RunnableParallel을 이용해 체인을 병렬처리해보았다. RunnableParallel역시 다른 Runnable~시리즈처럼 Runnable 표준 인터페이스를 상속한다. 구현코드제공된 주제에 따라 간단한 설명과, 시를 써달라는 요청을 했다.from langchain_ollama.llms import OllamaLLMmodel = OllamaLLM( model="gemma2:2b")from langchain_core.prompts import PromptTemplateprompt1 = PromptTemplate.from_template( """ {topic}에 대해서 1줄..

[LangChain] LLM Workflow : Chaining 구현

LLM을 이용한 애플리케이션을 만들때, 가장 단순한 구조는 사용자의 입력을 받아 LLM이 질문에 대해 응답을 생성하고, 출력하는 Input - LLM - Output으로 이루어진 체인이다. 작업 요구 사항에 따라 여러 단계의 과정이 추가되어야하거나, 혹은 하나의 LLM에서 나온 응답을 다음 LLM이 받아서 처리하는 연속적인 처리 구조로 만들어야할 수 있다. 이러한 체이닝 구조의 워크플로우를 LangChain을 이용해 구현해보았다. LangChain에서 실행가능한 모든 것들은 Runnable이다. 이 Runnable은 LCEL이라는 LangChain에서 사용하는 도메인 랭귀지를 이용해 선언적으로 사용할 수 있다. | 연산자를 이용해 이전단계의 출력을 다음단계로 보내는 식이다.chain = (prompt |..

프롬프팅 팁

애매모호함 피하기프롬프트 엔지니어링의 개념을 설명해 줘. 설명은 간결하게 몇 문장으로만 하고 너무 자세히는 하지 말아 줘.>> 프롬프트 엔지니어링은 인공지능(AI) 모델을 효율적으로 훈련시키기 위해 설계된 훈련 질문을 만드는 기술입니다. 이는 학습 과정에 도움을 주고, AI의 성능과 정확도를 향상시킬 수 있도록 신중하게 작성된 질문이나 프롬프트를 만들어내는데 초점을 맞춥니다. 이 과정은 인간의 전문 지식, 언어학, 그리고 머신러닝 원리를 결합하여 교육적 가치를 높이고 모델의 일반화 능력을 강화하는 것을 목표로 합니다.고등학생에게 프롬프트 엔지니어링의 개념을 2~3문장으로 설명해줘>> 프롬프트 엔지니어링은 인공지능(AI)이 학습하고 더 잘 이해할 수 있도록 설계된 질문이나 프롬프트를 만드는 기술입니다. 이..

프롬프팅의 기법

제로샷 프롬프팅(Zero-shot Prompting)어떤 예시나 설명없이 직접 모델에 응답을 요구하는 프롬프팅.Q: 2+2는 무엇인가요?A:>> 4입니다. 원샷 프롬프팅(One-shot Prompting)하나의 예시를 제공하여 응답을 요구하는 프롬프팅. 퓨샷 프롬프팅(Few-shot Prompting)몇 가지 예시를 제공하여 응답을 요구하는 프롬프팅.Q: 2+2는 무엇인가요?A: 4Q: 2*6은 무엇인가요?A: 12Q: 2/2?A: 1Q: 2^8?A:>> A: 256 CoT(Chain-of-Thought Prompting, 생각의 사슬)중간 추론 단계를 통해 복잡한 추론을 가능하게 하는 프롬프팅.CoT가 없는 프롬프트:이 집합 {4, 8, 9, 15, 12, 2, 1}에서 홀수의 합은 짝수입니다.A: 답..

파인 튜닝 관련 용어

에포크(Epoch)전체 데이터셋을 한 번 완전히 학습하는 단위로, 여러 epoch를 거치면서 모델이 점진적으로 학습된다.과적합(Over fitting)모델이 학습 데이터에 너무 맞춰져서 새로운 데이터에 대한 일반화 성능이 떨어지는 현상이다.손실(Loss)모델의 예측값과 실제값의 차이를 수치화 한 것으로, 학습 과정에서 이를 최소화 하는 것이 목표다.배치 크기(Batch Size)한 번에 처리하는 데이터의 양으로, 메모리 사용량과 학습 속도에 영향을 미친다.학습률(Learning Rate)모델이 한 번에 얼마나 많이 학습할지 결정하는 하이퍼파라미터로, 너무 크면 학습이 불안정하고, 너무 작으면 학습이 느리다.검증세트(Validation Set)학습 중간에 모델의 성능을 평가하고 과적합을 감지하기 위해 사용..