신기 하기 보다는 제가 몰라서 하는 얘기같지만 제목 가지고 오해 큰 기대 안하시길 바랍니다 ^^;;
이번에 공부 목표는 OLLAMA 로 로컬 AI 를 올리고 이걸 시맨틱 커널을 구현해서 ?
질의 → ai 가 api 선택 → 저의 api 호출 해서 → 답변
이게 목적이었습니다. 된다고 들어서 덤볐는데 생각만큼 잘되지 않았어요?
모드는 ollama , Agent 모드로 만들었고 (바이브 코딩)
대략 이런 ui 를 구성했습니다.
API 는 간단하게 news,stock,weather 로 구성하고 질의의 따라 의도된 제 api 를 호출하면 됩니다.
하지만 ollama 모드에서는 api는 찾는데 답변을 제대로 형성 못했어요??
코파일럿을 갈구니 ? ai 모델이 api는 판단하는데 ? 그 응답을 받아서 처리를 못하는것 같다고
(gpu 가 딸려서 심플한 LLM 모델을 써서 한계가 있는것 같습니다)
아 실패인가 했는데 AGENT 모드로 하니까
의도 한대로 답변을 합니다 ;; 아니 도대체 ?? 이게 무슨차이인가
바이브 코딩으로 거의 해서 AGENT 랑 OLLAMA 차이를 잘몰랐습니다.
아니 AGENT 가 정확히 무슨 차이일까?? 나는 GPT 나 어떤 AI API 키도 연결하지 않았는데
저것 왜 잘작동하고 Ollama 는 안될까 ?
agent 모드는 처리 과정이 대략 이렇다고 합니다.
제가 준 질의를 c# 라이브러리가 판단해서 ? 답변하는 구조 라는 말인가??
나는 단지 자연어 처리만 하고 그 답변을 확실히 내가 의도한 API에서 답변만 하면 되는데
(API 도 필요없고 메소드만 있으면 될듯)
이러면 굳이 힘들게 LLM 하지 않아도 된다는 말인가 뭔가 이러면 자연어 프로폼트를 생각보다
어렵게 구현 안해도 된다는 말인가 (실제로 거의 바이브 코딩을 해서 내부 로직을 잘몰랐어요^^)
내부 코드를 보니 그냥 과연 Agent 모드는 키워드 매칭 방식이네요
public async Task<ApiCallResult> DetermineAndCallApiAsync(string prompt)
{
if (string.IsNullOrWhiteSpace(prompt))
{
return new ApiCallResult
{
ApiName = "None",
Data = null,
Success = false
};
}
// 프롬프트를 소문자로 변환하여 키워드 매칭
var lowerPrompt = prompt.ToLower();
// 키워드 매칭 및 API 호출
foreach (var keyword in _keywordMapping.Keys)
{
if (lowerPrompt.Contains(keyword.ToLower()))
{
try
{
// 기본 파라미터 추출 (간단한 구현)
var parameter = ExtractParameter(prompt, keyword);
var response = await _keywordMapping[keyword](parameter);
return new ApiCallResult
{
ApiName = GetApiName(keyword),
Data = response,
Success = true
};
}
catch (Exception)
{
return new ApiCallResult
{
ApiName = GetApiName(keyword),
Data = null,
Success = false
};
}
}
}
// 매칭되는 키워드가 없을 경우 기본 응답 반환
return new ApiCallResult
{
ApiName = "None",
Data = new SampleApiResponse
{
Message = "No matching API found for the given prompt",
Data = null
},
Success = true
};
}
개인적으로 공부한 보람이 약간 있는것 같습니다 아 저렇게 키워드 방식으로 자연어 처리가 되는구나 하구요
엄밀한 AI 처리는 아니고
“서울 날씨는 어때?” 이러면 날씨 키워드를 찾아 아 날씨 API랑 연결하고 서울은 파라미터로 삼네요
-근데 이 키워드를 일일이 노가다로 구현해야 합니다-
문장을 이해하는것이 아니라 그냥 키워드 매칭 방식으로 무식하게 구현하는것였네요
AI를 공부하다가 C# 키워드 매칭을 공부한것 같지만 Discovery 한 느낌입니다.
혹시 sematic 커널 로컬 llm 으로 구현하신분 중에 모델은 뭘 써야 한글 표현이 잘될까요?



