<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>기획 |</title><link>https://inhyuk2000.github.io/tags/%EA%B8%B0%ED%9A%8D/</link><atom:link href="https://inhyuk2000.github.io/tags/%EA%B8%B0%ED%9A%8D/index.xml" rel="self" type="application/rss+xml"/><description>기획</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Thu, 20 Aug 2026 00:00:00 +0900</lastBuildDate><image><url>https://inhyuk2000.github.io/media/icon_hu_eee4a95885829ab2.png</url><title>기획</title><link>https://inhyuk2000.github.io/tags/%EA%B8%B0%ED%9A%8D/</link></image><item><title>Version 간 결과 비교/분석</title><link>https://inhyuk2000.github.io/blog/notillm/%EA%B8%B0%ED%9A%8D_0820/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0900</pubDate><guid>https://inhyuk2000.github.io/blog/notillm/%EA%B8%B0%ED%9A%8D_0820/</guid><description>&lt;p&gt;&lt;strong&gt;LangGraph를 사용하기 이전(전부 4o모델) vs 모델 분기 비교 실험&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="결과"&gt;결과&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th style="text-align: right"&gt;Baseline&lt;/th&gt;
&lt;th style="text-align: right"&gt;Routing V2&lt;/th&gt;
&lt;th style="text-align: right"&gt;Change (%)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Runs&lt;/td&gt;
&lt;td style="text-align: right"&gt;85.0000&lt;/td&gt;
&lt;td style="text-align: right"&gt;85.0000&lt;/td&gt;
&lt;td style="text-align: right"&gt;0.0000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Cost ($)&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;0.8520&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;0.7277&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;-14.5903&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Avg Cost ($)&lt;/td&gt;
&lt;td style="text-align: right"&gt;0.0100&lt;/td&gt;
&lt;td style="text-align: right"&gt;0.0086&lt;/td&gt;
&lt;td style="text-align: right"&gt;-14.5903&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mean Latency (s)&lt;/td&gt;
&lt;td style="text-align: right"&gt;4.6433&lt;/td&gt;
&lt;td style="text-align: right"&gt;7.5294&lt;/td&gt;
&lt;td style="text-align: right"&gt;+62.1563&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P50 Latency (s)&lt;/td&gt;
&lt;td style="text-align: right"&gt;4.2594&lt;/td&gt;
&lt;td style="text-align: right"&gt;7.3486&lt;/td&gt;
&lt;td style="text-align: right"&gt;+72.5282&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P95 Latency (s)&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;7.2314&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;9.9255&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;+37.2561&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P99 Latency (s)&lt;/td&gt;
&lt;td style="text-align: right"&gt;9.4063&lt;/td&gt;
&lt;td style="text-align: right"&gt;13.0560&lt;/td&gt;
&lt;td style="text-align: right"&gt;+38.8006&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;LLM-based routing은 비용을 감소시켰지만 sequential LLM calls로 P95 latency가 너무 증가하는 문제점이 생겼다. &lt;strong&gt;Total Cost와 Latency의 문제를 둘 다 잡는 다른 방법&lt;/strong&gt;에 대한 고민이 필요해보였다..&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;LLM Router 까지 두어서 &lt;strong&gt;LLM 모델을 두 번 처리하는 게 문제&lt;/strong&gt;였기에, &lt;span class="high-mark"&gt;&lt;strong&gt;LLM Router를 제거하고 lightweight intent classifier로 대체&lt;/strong&gt;&lt;/span&gt;
하려고 함.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;기존 &lt;code&gt;LLM Router&lt;/code&gt; 대신 &lt;code&gt;sentenceTransformer&lt;/code&gt; + &lt;code&gt;LogisticRegression&lt;/code&gt; 기반 classifier로 구현하고자 함.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="v1-vs-v2-vs-v3"&gt;&lt;code&gt;v1&lt;/code&gt; vs &lt;code&gt;v2&lt;/code&gt; vs &lt;code&gt;v3&lt;/code&gt;&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th style="text-align: right"&gt;V1 Baseline&lt;/th&gt;
&lt;th style="text-align: right"&gt;V2 LLM Router&lt;/th&gt;
&lt;th style="text-align: right"&gt;V3 Classifier&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Runs&lt;/td&gt;
&lt;td style="text-align: right"&gt;85&lt;/td&gt;
&lt;td style="text-align: right"&gt;85&lt;/td&gt;
&lt;td style="text-align: right"&gt;85&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Cost ($)&lt;/td&gt;
&lt;td style="text-align: right"&gt;0.8557&lt;/td&gt;
&lt;td style="text-align: right"&gt;0.7401&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;0.7224&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Avg Cost / Run ($)&lt;/td&gt;
&lt;td style="text-align: right"&gt;0.0101&lt;/td&gt;
&lt;td style="text-align: right"&gt;0.0087&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;0.0085&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mean Latency (s)&lt;/td&gt;
&lt;td style="text-align: right"&gt;4.1386&lt;/td&gt;
&lt;td style="text-align: right"&gt;6.2194&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;3.3433&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P50 Latency (s)&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;3.1119&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;5.4087&lt;/td&gt;
&lt;td style="text-align: right"&gt;3.1164&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P95 Latency (s)&lt;/td&gt;
&lt;td style="text-align: right"&gt;7.4149&lt;/td&gt;
&lt;td style="text-align: right"&gt;11.0379&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;7.0132&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P99 Latency (s)&lt;/td&gt;
&lt;td style="text-align: right"&gt;12.9387&lt;/td&gt;
&lt;td style="text-align: right"&gt;11.9233&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;8.7200&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Calls&lt;/td&gt;
&lt;td style="text-align: right"&gt;85&lt;/td&gt;
&lt;td style="text-align: right"&gt;85&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;67&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Call Rate (%)&lt;/td&gt;
&lt;td style="text-align: right"&gt;100.00&lt;/td&gt;
&lt;td style="text-align: right"&gt;100.00&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;78.82&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extract Rule Correctness&lt;/td&gt;
&lt;td style="text-align: right"&gt;0.8941&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;0.9048&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;0.9024&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extract Rule Correctness (if routed)&lt;/td&gt;
&lt;td style="text-align: right"&gt;-&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;0.9048&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;0.8780&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Route Correctness&lt;/td&gt;
&lt;td style="text-align: right"&gt;-&lt;/td&gt;
&lt;td style="text-align: right"&gt;&lt;strong&gt;1.0000&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;0.9756&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;V3는 V1 대비 비용 15.58%, 평균 Latency 19.22% 감소했고, LLM API 호출도 21.18% 절감함.&lt;/li&gt;
&lt;li&gt;정확도는 V1 0.8941 → V3 0.9024로 유지·소폭 개선되어, 성능 저하 없이 비용과 응답 속도를 함께 개선함.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>LangGraph 도입 검토 및 데이터셋 설계</title><link>https://inhyuk2000.github.io/blog/notillm/%EA%B8%B0%ED%9A%8D_0817/</link><pubDate>Mon, 17 Aug 2026 00:00:00 +0900</pubDate><guid>https://inhyuk2000.github.io/blog/notillm/%EA%B8%B0%ED%9A%8D_0817/</guid><description>&lt;h2 id="langgraph-도입하는-게-맞을까"&gt;&lt;code&gt;LangGraph&lt;/code&gt; 도입하는 게 맞을까?&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;LangGraph&lt;/code&gt;를 &lt;span class="high-mark"&gt;&lt;strong&gt;비용 최적화&lt;/strong&gt;&lt;/span&gt;
를 위해 도입하는 게 좋을 거 같음.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;현재 &lt;code&gt;version&lt;/code&gt;은 ChatGPT 4o 모델을 활용해 사용자 자연어 처리를 함.
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;현재 얼마의 비용이 청구되는 지에 대한 정확한 판단이 필요함. &lt;span class="high-mark"&gt;&lt;strong&gt;문제 설정 필요&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;하지만 사용자 명령이 만약 &lt;strong&gt;안녕&lt;/strong&gt;, &lt;strong&gt;ㅎ2&lt;/strong&gt;, &lt;strong&gt;ㅎㅎ&lt;/strong&gt; 라면? &lt;span class="high-mark"&gt;&lt;strong&gt;굳이 모든 명령들을 전부 &lt;code&gt;4o&lt;/code&gt; 모델로 처리할 필요가 있을까??&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;사용자의 명령을 &lt;code&gt;중요도 낮음&lt;/code&gt;, &lt;code&gt;약간 중요&lt;/code&gt;, &lt;code&gt;매우 중요&lt;/code&gt; 등으로 나눠서, 이에 맞는 수준의 모델로 라우팅해주는 게 좋을 거 같음. &lt;span class="high-mark"&gt;&lt;strong&gt;나중에 구현할 기능&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="version-01"&gt;Version 01.&lt;/h3&gt;
&lt;div class="mermaid"&gt;flowchart TD
START([사용자 입력&lt;br/&gt;prompt + pending 플래그]) --&gt; R{의도 라우터&lt;br/&gt;gpt-4o-mini}
R --&gt;|잡담 / 인사 / ㅎㅎ| S[단순 응답&lt;br/&gt;gpt-4o-mini&lt;br/&gt;tool 없음]
S --&gt; END1([END&lt;br/&gt;채팅 응답만])
R --&gt;|알림 규칙 관련| P{pending?}
P --&gt;|false| E[규칙 추출&lt;br/&gt;gpt-4o&lt;br/&gt;extract_notification_rule]
P --&gt;|true| C[재질문 후속 분류&lt;br/&gt;gpt-4o-mini]
C --&gt;|supplement&lt;br/&gt;보충| M[이전 명령 + 보충&lt;br/&gt;합친 prompt]
C --&gt;|new_command&lt;br/&gt;새 명령| N[이번 prompt만]
M --&gt; E
N --&gt; E
E --&gt;|tool 성공| OK[confirm 문장&lt;br/&gt;gpt-4o]
E --&gt;|정보 부족| ASK[재질문 메시지&lt;br/&gt;ok=false]
OK --&gt; END2([END&lt;br/&gt;규칙 저장])
ASK --&gt; END3([END&lt;br/&gt;앱이 pending 유지])
&lt;/div&gt;
&lt;h3 id="version-02"&gt;Version 02.&lt;/h3&gt;
&lt;div class="mermaid"&gt;flowchart TD
START([사용자 입력&lt;br/&gt;prompt + pending + pendingOriginal]) --&gt; ENTRY{pending=true&lt;br/&gt;AND pendingOriginal 있음?}
ENTRY --&gt;|Yes| RP[resolve_pending]
ENTRY --&gt;|No| R[의도 라우터&lt;br/&gt;gpt-4o-mini&lt;br/&gt;route_intent]
R --&gt;|chitchat&lt;br/&gt;잡담/인사/ㅎㅎ| S[단순 응답&lt;br/&gt;gpt-4o-mini&lt;br/&gt;tool 없음]
S --&gt; END1([END&lt;br/&gt;ok=false&lt;br/&gt;failReason=chitchat&lt;br/&gt;needsSupplement=false])
R --&gt;|extract&lt;br/&gt;알림 규칙 관련| RP
RP --&gt; C{pending 분류?&lt;br/&gt;gpt-4o-mini}
C --&gt;|pending 아님| N[이번 prompt만]
C --&gt;|supplement&lt;br/&gt;보충| M[이전 명령 + 보충&lt;br/&gt;합친 prompt]
C --&gt;|new_command&lt;br/&gt;새 명령| N
M --&gt; E[규칙 추출&lt;br/&gt;gpt-4o&lt;br/&gt;function calling]
N --&gt; E
E --&gt;|성공| OK[confirm 문장&lt;br/&gt;gpt-4o]
E --&gt;|정보 부족| ASK[재질문&lt;br/&gt;ok=false&lt;br/&gt;needsSupplement=true]
E --&gt;|충돌/앱 미해결 등| FAIL[실패&lt;br/&gt;ok=false&lt;br/&gt;needsSupplement=false]
OK --&gt; END2([END&lt;br/&gt;규칙 저장])
ASK --&gt; END3([END&lt;br/&gt;앱이 pending 유지])
FAIL --&gt; END4([END&lt;br/&gt;pending 해제])
&lt;/div&gt;
&lt;h3 id="langgraph-도입-시-routing-버전을-추가-확인-사항"&gt;LangGraph 도입 시 (&lt;code&gt;Routing 버전&lt;/code&gt;을 추가), 확인 사항&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A버전에 비해 B버전에서, &lt;strong&gt;정확도&lt;/strong&gt;가 많이 떨어지지 않는지&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;비용 및 속도&lt;/strong&gt;가 얼마나 줄어드는지&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="evaluation-dataset-구성-기준"&gt;Evaluation Dataset 구성 기준&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Evaluation Dataset&lt;/code&gt;이 특정 유형에 편중되지 않도록, 주요 평가 축을 &lt;code&gt;intent&lt;/code&gt;, &lt;code&gt;time&lt;/code&gt;, &lt;code&gt;target&lt;/code&gt;으로 나누고 각 카테고리 별 최소 케이스 수를 정의했습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;전체 Dataset: &lt;strong&gt;85 cases&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주요 카테고리 별 최소 5 cases 이상&lt;/strong&gt; 확보&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ok=true&lt;/code&gt; 케이스에서는 &lt;code&gt;time&lt;/code&gt;, &lt;code&gt;target&lt;/code&gt; 세부 유형이 모두 포함되도록 구성&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="coverage-확인"&gt;Coverage 확인&lt;/h3&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;모든 주요 카테고리에서 최소 5개 이상의 평가 케이스를 확보하여, 특정 입력 유형이 Dataset에서 완전히 누락되는 것을 방지했습니다.&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;축&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;th style="text-align: right"&gt;개수&lt;/th&gt;
&lt;th style="text-align: right"&gt;기준&lt;/th&gt;
&lt;th style="text-align: center"&gt;상태&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;A. intent&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mute&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;44&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;A. intent&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;allow&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;14&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;A. intent&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;reject&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;27&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;B. time (ok=true 58건)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;duration&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;38&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;B. time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;until_absolute&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;5&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;B. time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;relative_delay&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;5&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;B. time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;daily&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;5&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;B. time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;weekly&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;5&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;C. target (ok=true 58건)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;all&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;11&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;C. target&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;single_app&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;29&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;C. target&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;multi_app&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;5&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;C. target&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;content&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;6&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;C. target&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;app_and_content&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: right"&gt;7&lt;/td&gt;
&lt;td style="text-align: right"&gt;≥5&lt;/td&gt;
&lt;td style="text-align: center"&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;LangGraph 도입해야 한다면 내 프로젝트 서비스를 최적화시켜줄 수 있는 최적의 참조 논문은..?&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Reasoning&lt;/code&gt;과 &lt;code&gt;Action&lt;/code&gt;을 번갈아 수행하면서 외부 환경 / 도구와 상호작용하는 구조&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="2"&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;같은 LLM이 &lt;code&gt;Generator&lt;/code&gt;, &lt;code&gt;Feedback Provider&lt;/code&gt;, &lt;code&gt;Refiner&lt;/code&gt; 역할을 수행하면서 반복적으로 결과 개선&lt;/li&gt;
&lt;li&gt;별도의 &lt;code&gt;Supervised Training&lt;/code&gt;이나 &lt;code&gt;RL&lt;/code&gt; 없이도 &lt;strong&gt;여러 task에서 one-shot generation보다 성능 개선&lt;/strong&gt; 보고&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="3"&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;자연어 &lt;code&gt;reflection&lt;/code&gt; 형태로 &lt;code&gt;memory&lt;/code&gt;에 저장&lt;/strong&gt;하고 다음 &lt;code&gt;attempt&lt;/code&gt;에 활용하는 구조&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LangGraph&lt;/code&gt;에서 &lt;code&gt;state&lt;/code&gt; / &lt;code&gt;memory&lt;/code&gt; / &lt;code&gt;retry loop&lt;/code&gt;를 설계할 때 굉장히 자연스럽게 연결&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="4"&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;틀린 모델이 자기 답을 평가&lt;/strong&gt;하면 틀릴 수 있음.&lt;/li&gt;
&lt;li&gt;검색엔진, 코드 실행기 같은 &lt;strong&gt;외부 도구의 피드백을 사용해 검증&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="5"&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;여러 &lt;code&gt;reasoning candidate&lt;/code&gt;를 만들고 평가하면서 &lt;code&gt;search&lt;/code&gt; / &lt;code&gt;branching&lt;/code&gt; / &lt;code&gt;backtracking&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="6"&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;전체 문제를 먼저 작은 &lt;code&gt;subtask&lt;/code&gt;로 나눈 뒤 실행&lt;/li&gt;
&lt;li&gt;특히 &lt;code&gt;Zero-shot CoT&lt;/code&gt;에서 발생하는 &lt;code&gt;missing-step&lt;/code&gt; 등의 문제를 해결하려는 접근&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="7"&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;reasoning&lt;/code&gt;과 &lt;code&gt;tool observation&lt;/code&gt;을 &lt;strong&gt;분리&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="8"&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Tool Calling&lt;/code&gt;의 중요한 초기 연구&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LLM이 언제 어떤 API를 사용할지를 결정&lt;/strong&gt;하는 것 자체를 연구한 논문&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="9"&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;같은 여러 &lt;code&gt;Agent&lt;/code&gt; 간 &lt;code&gt;interaction&lt;/code&gt;을 일반화한 프레임워크 연구&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LLM&lt;/code&gt;, &lt;code&gt;human input&lt;/code&gt;, &lt;code&gt;tool&lt;/code&gt;을 조합한 &lt;code&gt;customizable/conversable agen&lt;/code&gt;t를 구성하고 다양한 &lt;code&gt;conversation pattern&lt;/code&gt;을 정의&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>