42에서 밋업을 한다는 소식이 들렸다.
빠질 내가 아니지. 레스고
ai를 통해 협업하는 구조 ( 지휘자 ) - 다중 협업
랭체인은 개발 스택(언어 등)이 맞지 않아서 처음부터 ai 추천 기능을 개발해야하지만,
상관 없이 C#, 파이썬, java를 지원하기때문에 있는 앱에다가 ai 기능을 삽입할 수 있고, 크기도 작아서 랭체인보다 잘 돌아간다.
기업용 앱 친화적 ( 보안 뛰어남, 레거시 앱에다가 기능 추가 잘됨 -> 하위호환 잘됨 ).
-> 랭체인은 하위호환을 지원하지않아서 업데이트가 됐는데 그 때 부터 버그가 생길 수도 있다.
플러그인 (ai모델이 사용할 수 있는 함수)
멀티 에이전트(페르소나) 지원
커넥터, 히스토리, 플러그인, 에이전트, RAG
ai 모델을 오케스트레이션 하기 위해 커널에다가 ai 모델을 추가해야하는데 이때 사용하는게 connector이다.
-> 이렇게 하면 터미널에 작동하는 GPT 정도이다.
-> 이때 작업을 대신 수행할 수 있는 "플러그인을 만들거다."
ex) getWeather(), getName() ...
커널입장에서는 어떤 함수(플러그인)을 써야 날씨를 알 수 있는 지 모른다.
이 작업을 수행하기 위해 @DefineKernelFuctuon 어노테이션을 추가해야됨.
이 어노테이션 안에 이 함수가 어떤 함수인지 코드를 쓴다.
" 이번엔 " 서울 알려줘 라고 하면 커널에서는 뭔 말인 지 알 수가 없다.
이 때 chatHistory라는 치팅 페이퍼를 주면 사용자가 질문을 입력할때마다, "히스토리" 에다가 기억을 하게 해준다. (사용자 질문, ai 답변)
이러면 kernel은 대화의 맥락을 이해하고 , 이번엔 이라고 하면 알아듣는다.
인터넷에 검색해줘 -> RAG기능 !
외부에서 검색한 답변을 바탕으로 답변을 생성(벡터 데이터도 포함)
ex) sql도 포함할 수 있다. 전부 jdbc를 쓰면 됨.

이렇게 벡터 서비스를 만들었다 -> 이제 읽고 쓰게 만들자! -> 임베딩 서비스(검색어, 새로 추가할 데이터를 임베딩을 거쳐서 벡터화된 다음에 접근을 하게 됨)
쿼리 프로바인딩 ( 쿼리할때 보호를 하는 역할)
제품 기획 가능? -> 다중 에이전트 협업으로 아이디어 구상, 마케팅, 디자인, 검토까지 해준다.
MCP를 사용하면 설정 파일에 몇 줄 추가하는 것만으로도 쉽게 플러그인을 추가할 수 있다.
-> MCP를 자바를 준비중이다 ㅠ_ㅠ
Semantic-Kernel-java
https://github.com/microsoft/semantic-kernel-java
copilot as frontend <-> Agents as backend
Copilot : Ai를 위한 UI
Agent : Copilot을 통해 입력받은 사용자의 요구사항을 자동으로 알아서 처리하는 개체
AI Tooling 또는 Funtion Calling
하지만 Funtion Calling을 구현하는 방법이 에이전트 프레임워크마다, 랭귀지 모델마다 구현 방법이 다 다르다.
-> 표준화 시킬 수 있는 방법이 뭘까?
-> MCP !
Model context Protocol
Protocol을 정의한 명세
LLM(Model)에 맥락(Context)을 추가해주는 규약(Protocol)
MCP는 RAG와 비슷하면서도 다르다.
MCP 클라이언트 (데스크탑 어플리케이션, 챗봇 ..)
MCP 서버는 MCP 명세로 따라간 서버들
이 될 수 있다.
어딘가에 배포된 서버(상당 수가 웹 기반, 즉 마치 MCP 서버가 API처럼 작용한다는 소리)
-> UI 프론트엔드 / API 백엔드 MCP 클라이언트 / MCP 서버
-> UI 프론트엔드 / MCP 서버
원하는 언어를 선정하면 됨.
빌더 정의하기.
api나 엔드포인트가 없는 대신에 tool을 사용
Tool이라고 정의되어있으면 다 긁어와서 브로드캐스트
빌더를 앱으로 빌딩
웹 기반이니까 엔드포인트 하나는 필요함.
app.MapMcp();
app.Run(); 해주면 됨.
[McpServerToolType]
public class EchoTool
{
[McpServerTool]
[Description("Echoes the input back.")]
public static string Echo
{
~~
}
이런 식으로 [] 안에 정의를 해주면 툴로 인식을 한다.
< MCPclient > 를 싱글톤으로 연결
클라이언트 트렌스포트와 옵션을 파라미터로 집어넣은 다음 디펜던시를 만든다. (ClinetTransport,clientOptions를 삽입)
웹 기반의 MCP 서버가 Copliot 윗 단에 만들어진다.
내 컴퓨터를 읽어들여서 파일을 읽어들이고, 삭제시키고, 모든 것을 할 수 있다.
서비스를 이용해 내 컴퓨터에 있는 자원들을 활용할 수 있다는 점이 큰 취약점이다.
인증, 권한 부여, 프롬프트 인젝션에 대비를 해야한다.
믿을만한 회사에서 나온 걸 사용 , 개인이 한 걸 사용할려면 docker같은 컨테이너 환경 활용
목적 이외에 다른 것을 하면 안되니까
누가 와서 갑자기 프롬프트를 안좋은 목적으로 강화 시킬 수 있으니까.
간단하게 구현 ! => 리퀘스트 헤더에다가 API 키 헤더값을 같이 보내면 됨.
인증을 하는 미들웨어를 밑에 추가
서버 쪽 api 키가 날라오면 서버를 실행시키고,
안 맞거나, 안날라오면 서버 에러 때려버리면 됨.
MCP 클라이언트 / 서버
https://github.com/modelcontextprotocol/csharp-sdk/tree/main/samples
https://aka.ms/mcp/dotnet/samples
데모 샘플
https://github.com/devkimchi/openai-mcp-agent-dotnet
vscode에서 MCP 서버 사용하기
https://aka.ms/vscode/mcp
vscode에서 에이전트 모드
https://aka.ms/vscode/agent
ui를 개발 코드로 옮기는 과정을 MCP가 자동으로 옮겨준다면?
전부터 느낀거지만 프론트는 상위 몇퍼만 빼면 코더들은 거의 대체될 듯... 아 물론 백엔드도 마찬가지겠지만,
기업 입장에선 유지보수 측면에서 몇 명만 채용하는 너낌으로 갈 거 같음.
요새 풀스택을 선호하기도 하고, 짧은 식견으로 보기엔 그러하다.