본문 바로가기

MY아이디어

[아이디어] AI끼리 싸움을 붙이면..

가끔씩 생각한적이 있다, AI끼리 썰전을 펼치고, 그걸 지켜보면 얼마나 잼있을까??

내말이 맞네, 네말이 맞네 하며 인간처럼 치고박고 하는 것을 지켜보는 관음증 환자가 되면 얼마나 짜릿한 느낌일까!!!

 

AI모델은 각각 특색이 있다.

어떤분야에 더 집중하여 학습을 시켰는지에 따라서, 모델별로 더 답변을 잘 주는 부분이 미세하게 존재한다.

그렇기 때문에, AI모델 하나만 선택해서 사용하는것보다는 여러 AI모델들을 늘어놓고, 질문을 모든 AI모델에게 하는 방법이 더 좋은 정보를 얻을수있지 않을까? 생각한적이 있다.

 

이런 방식에 가장 적합하다고 생각한 아이디어가, AI들끼리 구성된 개발팀을 만들면 어떨까? 라는 생각이다.

 

그래서 바로 만들어 봤다.

서비스 이름은 'My Dev Team' !!!

 

AI모델별로

'친절하고 꼼꼼한 시니어 백앤드 개발자',

'빠르고 냉철한 시니어 백앤드 개발자',

'아이디어가 넘치는 백앤드 개발자',

'창조적인 시니어 디자이너',

'유식하고 지식이 풍부한 시니어 프론트 개발자'라는 메타포를 적용하고 (프롬프트에 룰로 각각의 성격과 능력을 위와같이 정리해줬다),

 

이 AI개발팀에게 개발에 대한 질문을 하고 각각의 분야에 대해서,

서로 의견을 공유하고, 의견을 주고 받으며, 더 좋은 의견을 만들어 가고,

나중에는, 의견들의 결론을 종합해서 대답해주는 서비스가 있으면 어떨까? 라는 아이디어가 떠올랐다.

 

바로... 시도해봤다 ㅋ

완벽하게 만들려면 시간이 오래걸릴것 같지만, 생각한 아이디어로 충분히 구현이 가능할것같다는 결론은 내렸다.

 

 

 

 

우선 mcp를 위해 langchain보다는 spring ai를 사용하였다.

ai쪽 개발은 거의 처음이라, langchain의 학습난이도가 좀 있어서, 빠르게 만들기위해서는 익숙한 spring 생태계의 spring-ai 모듈을 사용했다.

(다음번에는 langchain으로 만들어 봐야지...)

 

학습모델은 우선 공짜인 ollama를 사용하였다.

많은 학습모델을 pull 받아서 바로 사용할수있기에 엄청 편했다.

나중에는 chatgpt나 클로드등의 모델을 연동하면, 훨씬 퀄리티가 좋아질것같다. (비용이 많이 들겠지만..)

 

MY Dev Team 서비스를 만들때,

가장 큰 고민 부분이 하나 있었다.

 

상당히 답이 안나오는 부분이긴했는데...뭐냐면,

 

A ai가 답변을 했다고 하면, A ai의 답변에 대해서 B,C,D ai중에 누가 그 답변을 이어 받아서, 의견(답변)을 줘야 하느냐이다..

A의 답변에 대해서 B,C,D 모두에게 답변을 요청할수도있지만, AI모델이 모두 답변을 하기위해서는 상당한 CPU, GPU 자원이 들고,

시간또한 많이 든다.(거의 평균 30초?!)

 

이부분을 아래와 같이 플로우 설계를 하였다.

마치 쇼프로의 mc처럼 의견들을 중재하고, 진행을 할 Decision AI를 하나 더 만들었다.

그리고 Decision AI 모델은 A,B,C,D의 대화를 항상 청취하고 있다. (대화의 컨텍스트를 유지함)

 

Decision AI 모델은 코드 학습 모델이 아닌, 대화에 대한 객관적 판단/정보 파악을 주로 학습한 가벼운 모델로 선정했다.

(이유는 빠른 응답을 위해 Decision AI는 지식이 중요하지 않고, 중간에서 MC와 같이, 누가 질문/답변을 더 잘할지만 판단해 주면 되기에,무거운 모델은 사치라고 생각했다)

 

[플로우의 예는 아래와 같다.]

1) A가 답변이 끝났다.

2) Decision AI가 A의 답변에 대해서, 가장 잘 응답/의견을 줄수있는 AI를 선택한다. (예: B가 선택)

3) Decision AI가 선택한 B에게 A의 답변에 대해서 의견을 묻는다.

4) B가 답변을 한다.

5) 2번으로 돌아가 Loop를 돌며 지속적으로 의견을 묻고 답한다.

6) Decision AI는 Loop를 돌며 각각의 AI들에게 의견을 묻고 결론을 내려야 할 시점이라고 판단하면, 대화를 끝내고 summary하여 대화를 마무리한다.

7) 사용자는 위 1-5번의 대화를 지켜본다. (FT에서 채팅이 계속 표현되며 진행된다)

 

나중에 좀더 발전시키면,

프롬프트의 명확할 룰 정리와 의견과 답변 그리고 반론등을 더 구분지어 Decision ai에게 컨텍스트 전달하게 하면,

(아마 벡터 디비나, 그래프 디비를 도입을 해야할것같다 ㅠ)

 

마치 사람들끼리의 대화와 같은 리얼한 대화가 될것으로 보인다.

 

이 서비스는 시간을 투자하여, 천천히 발전해 봐야겠다.

역시 백앤드 개발자라도, AI 대세에는 적응해야 하는가보다...ㅠ