[ Flowise ] Chatflow 만들어봄. 로그라인을 2개 뽑는
[ AI ] Flowise 설치
[ AI ] 개인 GPT? ollama exaone설치약 1달 전 ChatGPT 구독을 해지하고 Cursor로 갈아탔다. 이유는 GPT가 멍청해져서? "믿었던 챗GPT가 환각률 48%라니...", 챗GPT 어쩌나테크크런치 오픈AI 사내 벤치마크서 나온
525easy.tistory.com
일단 호기롭게 설치는 했으나 장벽이 매우 많았다.
일단 영어를 못해서 번역기를 필수로 쓴다. 근데
일단 뭔 말인지 알아들을 수 없다. 그나마 저건 알아보기 쉽다.
자치령 대표는 Agent다... AI를 별도로 공부한 것도 아니기 때문에
langchain이라던가 이것저것 모르는 것 투성이인데 저러기 때문에 매우 난감하다.
그러는 와중에 커서는 뭐같이 질문해도 찰떡같이 알아먹어주니 접을까 하는 생각이 심하게 들었다.
근데... 무료는 또... 못참긴 한다. 그것도 저사양?인 내 컴퓨터에서 돌아가기 때문이다.
데스크탑에서 실행 중이긴 한데 조만간 노트북으로 워크플로우 복사 후 사용해볼 예정이다.
[ Cursor ] 커서로 100개 에피소드 대본 쓰기
퇴사 후 현재 시점 기준 거의 4달이 다 되어 간다.약 1달 전 이런 저런 일?은 나는 열심히 한 것 같은데, 대본이 제대로 된 것은 하나도 존재하지 않았다.이번달 초 드라이브나 깃허브, 콘솔 등 권
525easy.tistory.com
뭐 어쩌다보니 하기 싫은 비주얼노벨 기반 게임을 만들고 있는 상황이다.
욕을 좀 하자면 지난 기간 동안 뭘 하고 알아보긴 했는가 싶다. 물론 내가 아닌 다른 사람.
우선 비주얼노벨이고 뭐고 시나리오를 만들어야 하니 친구에게 질문을 던졌다. ( 욕한 사람 아님 )
나름 독립영화도 찍고 웹드라마 대본도 쓰고 전공자기도 하니 매우 적합하다고 여겨졌다.
정보도 대략적으로 얻었고... 직접적으로 구글링을 몇번 하니 AI를 사용한 웹툰 제작 보조 서비스들이 꽤 많았다.
그리고 실제로 사용을 해보니 Flowise로 유사하게 만들어볼 수 있을 것 같았다. 물론 구글 잼민이를 시켜서
우선 무엇으로 만들지 질문을 해봤다. Flowise의 경우 사이트에 접속하면 뭔가 느낌이 오는 것은 저 두 메뉴다.
뭐 내가 복잡한 것을 쓰진 않을 것 같고, 사실상 학습 곡선이 낮다 하는 Chatflow로 하는 것이 적당해보였다.
뭐 그러다보니 어떻게 만드냐?를 진행했고, 위와 같은 답변을 받았다.
이 때부터 파국의 시작이다.
분명 잘 따라 했는데 이상한 결과가 나왔다. 요약하면 내 질문을 AI가 "인간"이 말한 것으로 바꾸고 "AI"가 답변하는
일종의 대화로 답변을 제공 받았다. 아직 파국은 안왔다.
뭔가 프롬프트 자체가 길어졌다. 이 때만 해도 Ollama + Exaone이라 그런가 싶었다.
여전히 같은 문제가 발생하자 잼민이가 이런 형태로 프롬프트를 수정하라고 답변을 해줬다.
이 때부터 문제가 모델이 아니라는 것을 느꼈다.
채팅을 시도해봤으나 에러 메시지가 나왔고, 분명 입력을 했는데 제이슨 포맷이 아니고 값이 다 비어있다고 했다.
또 프롬프트를 제공해주더니 자신감있게 말했다. "다음과 같은 JSON 형식의 응답을 생성하려고 노력할 것입니다."
본격적으로 에러 발생이 시작 되었다.
Flowise에서 프롬프트 내 JSON을 쓸 경우 중괄호( '{' )의 경우 2번 써서 이스케이프 해야 된다고 한다.
이 것 가지고 몇번을 반복했으나 해결은 되지 않았다.
여전히 안되길래 GPT와 클로드에게도 문제를 알려줬더니 클로드는 중괄호를 떡칠을 시켜서 바로 꺼버렸다.
거의 1시간동안 똑같은 메시지만 보니 멘탈이 나가서 이것 저것 바꿨더니 에러 메시지가 바뀌었다.
근데 결국 해결은 안되었고
몇번 더 반복하다가 잼민이도 꺼버린 뒤 역시 사람이 최고다 라는 생각이 들었고 구글링을 시작했다.
그러다가 Flowise에 관한 몇가지 글을 발견했다.
Flowise와 LLM을 활용한 에러 분석 자동화
LLM으로 에러 원인 분석과 해결 방안 제시까지 자동화하고, 팀의 생산성을 향상시킨 이야기를 들려드립니다.
toss.tech
사실상 코드의 경우 알아보지도 못하니 패스하고, 노드 구성과 프롬프트 탬플릿을 중점적으로 보았다.
일단 직접적으로 프롬프트에 중괄호를 쓰지 않고 있다는 것을 알았다. 그 뒤...
무료 플랜이지만 4o는 몇번 쓸 수 있다.
위 글의 매우 잘 작성 된 프롬프트를 레퍼런스로 던져주고 내 요구사항에 부합하는 형태로 변경을 지시했다.
프롬프트 엔지니어링 잘 못하면 AI가 쓴 프롬프트가 더 잘먹는다는 것은 이미 알 사람은 알 것이다.
답변을 적용해보니 뭔가 잘 나오는데 요상한 형태로 나오기 시작했다. 그 때
[LLM] Flowise 사용법 & LLM 프롬프트 엔지니어링 예시(Getting Started with Flowise & Prompt Engineering Examples for
1. Flowise에 대하여 & LLM 연동 준비하기[ Flowise에 대하여 ]Flowise란 시각적인 인터페이스를 제공하는 오픈 소스 LLM(대형 언어 모델) 워크플로 빌더로, 코드를 작성하지 않고도 다양한 LLM 기반 애플리
mangkyu.tistory.com
새로운 분의 글을 줍줍했다.
상세하게 설명도 되어 있었고 토스의 글보다 내가 알아보기 쉬웠다.
글 중 중요한 부분이 있는데, 프롬프트 구성과 프롬프트 내 중괄호(이하 변수)의 사용 부분이였다.
나의 경우 GPT나 잼민이, 클로드와 같이 외부 AI의 API를 쓸 것이 아니고 Ollama로 구동 시킬 것이라 저 글과 다르다.
OverView
사용 노드 :Chat Ollama, Prompt Template, Structured Output Parser, LLM Chain
입력 형태 :
장르: 장르
키워드: 키워드
가이드라인: 가이드라인
출력 형태 :
{
"logline_01": "로그라인 1",
"logline_02": "로그라인 2"
}
기본 셋팅
참고 유튜브
구글링 중 발견한 Ollama를 써서 Flowise를 돌리는 영상
참고 유튜브를 따라하면 잘 작동하는데, 저 영상의 단점이 있다.
Ollama 세션 종료 방법을 안알려준다. 명령어도 안쓰는데 휙휙 넘어가있다.
VS Code에서 ollama, flowise 실행
2개의 터미널을 실행 시키는데, CMD로 해보니 실수로 터미널을 끄는 상황이 발생해서 VS Code를 사용했다.
아래 쪽에 마우스를 올리면 ⇕ 이런게 나오는데 왼쪽 누르고 쭉 올리면 위와 같이 숨겨진 창이 등장한다.
컴퓨터를 키면 알아서 실행 되어 있는 경우도 있는데, 참고 영상처럼
ollama serve
를 입력해서 확인해봐야 한다. 실행되는 터미널이 있다면 아래와 같은 메시지가 나온다.
Error: listen tcp 127.0.0.1:11434: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
이러면 당황하지 말고
작업표시줄에서 Ollama를 종료해준 뒤 ollama serve를 해주면 된다.
그 뒤 우측을 보면 +를 발견하는데 눌러주고
npx flowise start
위 명령어를 입력하면 된다. 정상적 스타트가 되었으면
위 이미지처럼 나온다. 그러면
http://localhost:3000/
로 flowise를 실행해주면 된다.
잘 돌아가나 확인하고 싶으면 터미널 창 좌측에 flowise를 드래그하면 ollama와 flowise 둘 다 분할 창으로 확인할 수 있다.
이제 Flowise 채팅에서 Ollama가 실행 되면 좌측에 뭔가 막 바뀐다.
사용 노드
ChatOllama
API를 쓰지 않고 Ollama를 통해 구동 시킬 것이기 때문에 ChatOllama 노드를 사용했다.
별도의 그건 필요 없고 model name만 내가 사용하는 exaone3.5로 설정해줬다. 이 외는 그냥 기본 값으로 유지했다.
Prompt Template
흔히 생각하는 프롬프트 엔지니어링을 한 것을 넣는 노드인데, GPT를 시켜서 만든 프롬프트를 넣어주고,
맨 위에는 {input}을 작성해줬다. 변수는 노드 안에 Format Prompt Values를 눌러주고
요 부분에서 중간거를 눌러준 뒤
위와 같이 해서 사용자 입력을 토대로 작성할 수 있도록 해주었다. 줍줍 글 2번째 분이 이와 같은 방식을 사용했다.
Structured Output Parser
얘는 답변 형식을 지정하는 노드인데, Description은 비워도 잘 작동 된다.
이전 Prompt Template 노드의 Template 부분에 작성한 프롬프트이다.
여기서 적어둔 출력 형식에 해당하는 것들을 다 변수로 만들어주었다.
LLM Chain
진짜 별거 없다. 출력할 때 이것저것 연결해서 답변을 설정하는 노드 같은데,
복잡하게 할 수 있을 정도면 아마 Agentflow로 이동할 것 같다.
만들려고 하는 것이 복잡하게 알아서 끝까지 끝내는 것이 아니고 단계별로 출력할 것이기 때문에 여러개의 Chatflow를 쓸 것 같다.
노드 연결
각 노드들의 우측 아래에 점을 누른뒤 드래그해서 위처럼 연결해주면 된다.
프롬프트 형식과 다른 형태의 입력을 시도했는데 의외로 잘 나왔다.
그 와중에... 캐릭터 생성 Chatflow를 만드는 중
둘이 같다... 흠... 그렇다