<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>빅웨이브에이아이 기술블로그</title>
    <link>https://bigwaveai.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 30 Jun 2026 02:11:55 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>빅웨이브 이현상</managingEditor>
    <item>
      <title>ChatGPT 프롬프트 팁 시리즈 - (6) Error Identification</title>
      <link>https://bigwaveai.tistory.com/85</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXcnMk/btsGTCC7EcE/gRQCqBAFV3Iq4s5iNHWk8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXcnMk/btsGTCC7EcE/gRQCqBAFV3Iq4s5iNHWk8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXcnMk/btsGTCC7EcE/gRQCqBAFV3Iq4s5iNHWk8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXcnMk%2FbtsGTCC7EcE%2FgRQCqBAFV3Iq4s5iNHWk8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;590&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;빅웨이브에이아이 조상원 님이 정리한 리뷰입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT와 같은 LLM의 환각(Hallucination) 증상에 대해 들어보셨나요?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;아무래도 ChatGPT를 많이 써보신 분들은 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT가 한번씩 틀린 대답을 하는 것을 본 적 있으실 겁니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT는 생성할 단어를 AI가 확률적으로 예측하는 방식이기 때문에,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이런 오류가 존재할 수 있고, 그래서 팩트 체크가 중요하다고 볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이에 그래도 최대한 오류를 출력에서 억제할 수 있는 두 가지 방법을 소개드리겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Fact Check List&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 패턴은 ChatGPT에게 팩트 체크의 역할까지 부여하는 방식입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;간단하게 설명하자면 2단계의 수행을 요청합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. Fact Check가 필요한 리스트를 만들어줘&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. 위 리스트의 신뢰 확률을 계산해봐&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사용자는 위 패턴을 통해서 팩트 체크가 중요한 문서(보고서, 논문 등..) 작성에 도움받을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예시를 통해서 간단하게 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;867&quot; data-origin-height=&quot;356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Gd0CD/btsGTBxsAMQ/xU2Zt13kHYH68kg1MpK4YK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Gd0CD/btsGTBxsAMQ/xU2Zt13kHYH68kg1MpK4YK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Gd0CD/btsGTBxsAMQ/xU2Zt13kHYH68kg1MpK4YK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGd0CD%2FbtsGTBxsAMQ%2FxU2Zt13kHYH68kg1MpK4YK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;867&quot; height=&quot;356&quot; data-origin-width=&quot;867&quot; data-origin-height=&quot;356&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일본 사무라이 문화의 영향에 대해서 질문해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;팩트 체크 목록을 요청하고, 목록에 대한 신뢰도를 평가하도록 프롬프트를 작성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/55W1K/btsGSOYBV60/5GiHG4MOU6yGdzihbU5hWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/55W1K/btsGSOYBV60/5GiHG4MOU6yGdzihbU5hWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/55W1K/btsGSOYBV60/5GiHG4MOU6yGdzihbU5hWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F55W1K%2FbtsGSOYBV60%2F5GiHG4MOU6yGdzihbU5hWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;852&quot; height=&quot;592&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;592&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;요청한 내용에 대해서 일단 Essay 형식으로 출력했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sWHzX/btsGRnm6O6L/8xSrn5RGRMME9k7rm6sAD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sWHzX/btsGRnm6O6L/8xSrn5RGRMME9k7rm6sAD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sWHzX/btsGRnm6O6L/8xSrn5RGRMME9k7rm6sAD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsWHzX%2FbtsGRnm6O6L%2F8xSrn5RGRMME9k7rm6sAD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;614&quot; height=&quot;404&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;팩트 체크 목록과 신뢰도 평가 내용도 같이 제시합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3번 팩트에 대해서는 조금 더 심층적인 분석이나 reference가 필요해 보이는군요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Reflection&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음은 Reflection에 대한 내용입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;한번씩 ChatGPT가 근거가 부족한 의견 및 주장을 펼칠 때가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이번 패턴은 이런 ChatGPT의 의견에 대해서 &quot;거울에 비춰서 보자&quot;라는 의미입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 패턴은 하나의 주장 및 의견과 함께 추론 근거, 가정법, 방법론 등을 요청합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이를 통해 ChatGPT로부터 논리적으로 잘 구성된 답변을 얻을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZIaqe/btsGTFs5ciS/qf8K4n4FsM7gdzx12WfAkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZIaqe/btsGTFs5ciS/qf8K4n4FsM7gdzx12WfAkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZIaqe/btsGTFs5ciS/qf8K4n4FsM7gdzx12WfAkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZIaqe%2FbtsGTFs5ciS%2Fqf8K4n4FsM7gdzx12WfAkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;844&quot; height=&quot;282&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;AI 시대에 맞춰 가장 적합한 직업을 추천받아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프롬프트에 판단 근거에 대한 내용을 추가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;추가적으로 답변의 한계와 유의점도 포함했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;437&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crU5Eq/btsGRofhuO9/iTHm0F04splgaJmKuIyStk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crU5Eq/btsGRofhuO9/iTHm0F04splgaJmKuIyStk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crU5Eq/btsGRofhuO9/iTHm0F04splgaJmKuIyStk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrU5Eq%2FbtsGRofhuO9%2FiTHm0F04splgaJmKuIyStk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;858&quot; height=&quot;437&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;437&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;AI 기반 게임 개발자를 추천하는군요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;약간은 식상하긴 하지만 추천 근거를 아주 구체적으로 제시하는 모습입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chnhE4/btsGT7JEzVY/Nu3jQ1GIxKVxDLkzCT3ZK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chnhE4/btsGT7JEzVY/Nu3jQ1GIxKVxDLkzCT3ZK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chnhE4/btsGT7JEzVY/Nu3jQ1GIxKVxDLkzCT3ZK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchnhE4%2FbtsGT7JEzVY%2FNu3jQ1GIxKVxDLkzCT3ZK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;839&quot; height=&quot;374&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;374&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그리고 직업에 대한 잠재적 한계와 사용자가 겪을 수 있는 유의점도 설명해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 Reflection 패턴은 간단한 주장 및 의견이 필요할 때, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;구체적인 근거를 기반으로 양질의 대답을 얻을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 포스트에서는 Prompt Improvement를 주제로 다양한 패턴들을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;읽어주셔서 감사합니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>기술 블로그</category>
      <category>ChatGPT</category>
      <category>chatgpt 꿀팁</category>
      <category>ChatGPT 잘 쓰는 법</category>
      <category>프롬프트</category>
      <category>프롬프트 잘 쓰는 법</category>
      <author>빅웨이브 이현상</author>
      <guid isPermaLink="true">https://bigwaveai.tistory.com/85</guid>
      <comments>https://bigwaveai.tistory.com/85#entry85comment</comments>
      <pubDate>Wed, 24 Apr 2024 11:55:27 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT 프롬프트 팁 시리즈 - (5) Template</title>
      <link>https://bigwaveai.tistory.com/84</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1eWTn/btsGKxbnFHt/lXTF8hZBuLBI4kXZ5hmB51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1eWTn/btsGKxbnFHt/lXTF8hZBuLBI4kXZ5hmB51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1eWTn/btsGKxbnFHt/lXTF8hZBuLBI4kXZ5hmB51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1eWTn%2FbtsGKxbnFHt%2FlXTF8hZBuLBI4kXZ5hmB51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;590&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;본 내용은 빅웨이브에이아이 조상원 님이 리뷰한 내용입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이번 포스트에서는 Template 패턴에&amp;nbsp; 대해서 알려드리겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;간단히 설명하자면, ChatGPT의 출력의 형태를 정의해서 작업하는 것을 의미합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예를 들어, 특정 양식의 문서를 작성할 때 메타 언어 등으로 구조화된 탬플릿을 만들어서&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;출력을 요청하는 방식입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Key Ideas&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. 탬플릿 출력을 위해 Placeholder(필요한 값) 정의&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. 탬플릿을 구조화하고 Placeholder를 적절한 위치에 배치&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;바로 예시로 넘어가보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예시 - API 링크 탬플릿 만들기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;560&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVcTCB/btsGKxbsBlT/IfP4WiPLDcH9bRF3hPIIH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVcTCB/btsGKxbsBlT/IfP4WiPLDcH9bRF3hPIIH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVcTCB/btsGKxbsBlT/IfP4WiPLDcH9bRF3hPIIH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVcTCB%2FbtsGKxbsBlT%2FIfP4WiPLDcH9bRF3hPIIH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;888&quot; height=&quot;560&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;560&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;RestAPI의 주소를 생성하기 위한 출력을 요청했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;탬플릿이라는 용어와 함께, 예시를 제시하면 맥락에 맞는 출력을 생성해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이와 같이 특정 양식의 문구, 문서, 코드 등 다양한 형태의 템플릿을 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메타 언어로 정의하여 출력 형태로 지정해줄 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 포스트에서는 사실 가장 중요한 부분일 수 있는&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT의 환각 증세를 통제할 수 있는 Fact Check List에 대해서 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>기술 블로그</category>
      <author>빅웨이브 이현상</author>
      <guid isPermaLink="true">https://bigwaveai.tistory.com/84</guid>
      <comments>https://bigwaveai.tistory.com/84#entry84comment</comments>
      <pubDate>Thu, 18 Apr 2024 19:02:58 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT 프롬프트 팁 시리즈 - (4) Recipe</title>
      <link>https://bigwaveai.tistory.com/83</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1607&quot; data-origin-height=&quot;741&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XaZ71/btsGJmBqIpN/yW7J161hQ8NAKDAhdkeBY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XaZ71/btsGJmBqIpN/yW7J161hQ8NAKDAhdkeBY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XaZ71/btsGJmBqIpN/yW7J161hQ8NAKDAhdkeBY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXaZ71%2FbtsGJmBqIpN%2FyW7J161hQ8NAKDAhdkeBY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1607&quot; height=&quot;741&quot; data-origin-width=&quot;1607&quot; data-origin-height=&quot;741&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;빅웨이브에이아이 조상원 님이 정리한 리뷰입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이번 리뷰에서는 Recipe에 대해서 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Recipe, 말 그대로 특정 요리를 할 때 필요한 프로세스를 의미하죠?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;달성하고 싶은 목표가 있고, 어느정도 지식이 있을 때&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT에게 적당히 정보를 주고 완전한 레시피를 찾는 방법입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Key Idea&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. 특정 작업에 대한 스텝 A, B, C가 필요&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. 우선 아는대로 ChatGPT에게 지식 전달&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3. 누락된 단계 보충 요청&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;4. 불필요한 단계 제거 요청&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위 프로세스를 통해서 완전한 형태의 작업 프로세스를 얻을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예시 - 사무실 인테리어 계획 Recipe 작성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;515&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mCfd5/btsGLfnzBru/NhjeqpMaYXzN3NpadxokJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mCfd5/btsGLfnzBru/NhjeqpMaYXzN3NpadxokJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mCfd5/btsGLfnzBru/NhjeqpMaYXzN3NpadxokJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmCfd5%2FbtsGLfnzBru%2FNhjeqpMaYXzN3NpadxokJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;859&quot; height=&quot;515&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;515&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&quot;인테리어 계획&quot;에 대한 Recipe를 만들어보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;추가한 작업과 삭제한 작업에 대해서 출력을 요청합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;덧붙여, 메타언어로 입력을 구조화하고, 페르소나를 부여했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;최종 출력은 표로 확인할 수 있도록 설정했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;867&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHVxIX/btsGK4zOcjg/exFxFU8UZGdWwhN58ZofK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHVxIX/btsGK4zOcjg/exFxFU8UZGdWwhN58ZofK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHVxIX/btsGK4zOcjg/exFxFU8UZGdWwhN58ZofK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHVxIX%2FbtsGK4zOcjg%2FexFxFU8UZGdWwhN58ZofK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;867&quot; height=&quot;438&quot; data-origin-width=&quot;867&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT가 써준 추가 및 삭제 작업입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;간단한 프로세스에 대해서 설명을 했기 때문에 작업 추가 위주로 내용이 구성되어 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mClQV/btsGK6dfXc8/Fxx827kk9fmwEelQHZK8OK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mClQV/btsGK6dfXc8/Fxx827kk9fmwEelQHZK8OK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mClQV/btsGK6dfXc8/Fxx827kk9fmwEelQHZK8OK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmClQV%2FbtsGK6dfXc8%2FFxx827kk9fmwEelQHZK8OK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;839&quot; height=&quot;588&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;588&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;전체 작업프로세스에 대해서 ChatGPT가 표도 만들어줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이렇게 저희 빅웨이브 팀은 사무실 인테리어 프로젝트 계획을 수립할 수 있었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;추가 수정이 필요한 부분에 대해서도 이미 프로세스가 구축이 되었기 때문에,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT가 잘 수정해줄 것으로 기대됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;단순히 프로세스를 만들어달라라는 명령보다, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Recipe 패턴을 통해서 구체적이고 유용한 프로세스를 얻을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 리뷰에서는 Template 패턴에 대해서 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>기술 블로그</category>
      <category>ChatGPT</category>
      <category>ChatGPT 잘 쓰는 법</category>
      <category>프롬프트</category>
      <category>프롬프트 엔지니어링</category>
      <category>프롬프트 잘 쓰는 법</category>
      <author>빅웨이브 이현상</author>
      <guid isPermaLink="true">https://bigwaveai.tistory.com/83</guid>
      <comments>https://bigwaveai.tistory.com/83#entry83comment</comments>
      <pubDate>Thu, 18 Apr 2024 17:22:40 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT 프롬프트 팁 시리즈 - (3) Persona</title>
      <link>https://bigwaveai.tistory.com/82</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;723&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ruqNa/btsGKUxoWB5/QKXm1MiOG2b2WVELMjshK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ruqNa/btsGKUxoWB5/QKXm1MiOG2b2WVELMjshK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ruqNa/btsGKUxoWB5/QKXm1MiOG2b2WVELMjshK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FruqNa%2FbtsGKUxoWB5%2FQKXm1MiOG2b2WVELMjshK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1598&quot; height=&quot;723&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;723&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;빅웨이브에이아이 조상원 님이 정리한 리뷰입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;페르소나 방식의 경우 ChatGPT 사용법에서 가장 유명한 것 중 하나인데요,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;논문에서 얘기하는 구체적인 사례를 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;개념&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;많은 경우에 사용자는 LLM의 출력이 특정 관점을 취하기를 원합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예를 들어, LLM이 프로그래밍 전문가인 것처럼 스크립트를 작성하는 것이 유용할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이번 패턴은 LLM이 어떤 유형의 출력을 생성하고 어떤 세부 사항에 초점을 맞출 것인지 도움이 되는 Persona(외적 인격)를 제공하는 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Key Ideas&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. Persona X 처럼 행동&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. Persona X가 생성할 것 같은 결과물 제시&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예시 1 - 초등학교 교사&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2144&quot; data-origin-height=&quot;1063&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bskU9t/btsGDIXYvvp/qJFmjQzVfeKZOgY9pSkXAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bskU9t/btsGDIXYvvp/qJFmjQzVfeKZOgY9pSkXAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bskU9t/btsGDIXYvvp/qJFmjQzVfeKZOgY9pSkXAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbskU9t%2FbtsGDIXYvvp%2FqJFmjQzVfeKZOgY9pSkXAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2144&quot; height=&quot;1063&quot; data-origin-width=&quot;2144&quot; data-origin-height=&quot;1063&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;? 무슨 말인지 잘 모르겠군요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;조금 쉽게 풀어보기 위해서 '초등학교 교사'라는 페르소나를 부여해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;615&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sKzn6/btsGDz7NB1U/QanmwmIg7DGEsoLfZKzK11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sKzn6/btsGDz7NB1U/QanmwmIg7DGEsoLfZKzK11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sKzn6/btsGDz7NB1U/QanmwmIg7DGEsoLfZKzK11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsKzn6%2FbtsGDz7NB1U%2FQanmwmIg7DGEsoLfZKzK11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;862&quot; height=&quot;615&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;615&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위의 예시 처럼 쉬운 설명이 필요할 때, 초등학교 교사라는 페르소나를 ChatGPT에 부여합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이런 방식으로 쉬운 개념 설명과 예시의 결과물을 얻을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예시 2 - 페르소나를 통해서 원하는 결과 얻기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT는 인공지능 윤리에 기반하여 부정 행위, 범죄 등 사회에 악영향을 미치는 답변을 피하려 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이와 같은 선한 방향성도 AI에 의해서 학습된 의도된 결과로, 이를 페르소나를 통해서 우회할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;253&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCw0S5/btsGEixZCrt/o9LhYz2NV8lLrLMWp0qOJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCw0S5/btsGEixZCrt/o9LhYz2NV8lLrLMWp0qOJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCw0S5/btsGEixZCrt/o9LhYz2NV8lLrLMWp0qOJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCw0S5%2FbtsGEixZCrt%2Fo9LhYz2NV8lLrLMWp0qOJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;854&quot; height=&quot;253&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;253&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;역시 ChatGPT는 컨닝하는 방법을 알려주지 않습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그럼 페르소나를 부여한다면!?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0PdjI/btsGBr4r0TN/mSwGGf1rPV3JlWuk73TT3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0PdjI/btsGBr4r0TN/mSwGGf1rPV3JlWuk73TT3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0PdjI/btsGBr4r0TN/mSwGGf1rPV3JlWuk73TT3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0PdjI%2FbtsGBr4r0TN%2FmSwGGf1rPV3JlWuk73TT3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;880&quot; height=&quot;613&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;613&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;신기하게도 '학교 선생님'이라는 페르소나를 부여하여 선한 의도를 나타내자,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT가 컨닝하는 방법을 알려줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이렇게 페르소나를 활용하면 더욱 사용자가 원하는 답변을 얻거나,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT에게 자신의 의도를 가장 쉬운 방법으로 알려줄 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 리뷰에서는 Recipe(결과물을 얻기 위한 조합 방법)에 대해 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기술 블로그</category>
      <category>ChatGPT</category>
      <category>ChatGPT 잘 쓰는 법</category>
      <category>프롬프트 엔지니어링</category>
      <category>프롬프트 잘 쓰는 법</category>
      <category>프롬프트 페르소나</category>
      <author>빅웨이브 이현상</author>
      <guid isPermaLink="true">https://bigwaveai.tistory.com/82</guid>
      <comments>https://bigwaveai.tistory.com/82#entry82comment</comments>
      <pubDate>Mon, 15 Apr 2024 11:30:25 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT 프롬프트 팁 시리즈 - (2) Output Automater</title>
      <link>https://bigwaveai.tistory.com/81</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;723&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bH90cB/btsGIM8w4bu/7LYjvhmPzGsPl8TWQ7jOwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bH90cB/btsGIM8w4bu/7LYjvhmPzGsPl8TWQ7jOwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bH90cB/btsGIM8w4bu/7LYjvhmPzGsPl8TWQ7jOwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbH90cB%2FbtsGIM8w4bu%2F7LYjvhmPzGsPl8TWQ7jOwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1598&quot; height=&quot;723&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;723&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;빅웨이브에이아이 조상원 님이 정리한 내용입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; 이 패턴의 목적은 대화형 LLM(ChatGPT와 같은)이 제안하는 단계를 자동으로 수행할 수 있는 스크립트나 다른 자동화 아티팩트를 생성하도록 하는 것입니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; 목표는 LLM 원하는 출력을 구현하는 데 필요한 수동 작업을 줄이는 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;작업을 줄이고자 하는 이유는 LLM이 단계별로 수행되어야 할 때가 많기 때문입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; 예를 들어, 파이썬 설정 스크립트 생성을 요청했을 때, 여러 파일을 수정하고 각 파일에 특정 변경을 적용해야 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 경우 ChatGPT를 활용할 때 시간도 많이 소요될 수 있고 최종 결과물의 품질도 떨어질 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메커니즘&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. 단계별 프롬프트 입력이 필요할 시 적용 가능&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. 이러한 단계를 자동화하는 유형의 실행 가능한 아티팩트를 생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;핵심 아이디어: LLM은 구체적인 자동화 단계가 없을 경우 &amp;ldquo;자동화 할 수 없다.&amp;rdquo; 라고 응답할 수 있음!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예시&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpeOA9/btsGmxPYWQc/eKkbUs4e4KkwDNBhlLq7j0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpeOA9/btsGmxPYWQc/eKkbUs4e4KkwDNBhlLq7j0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpeOA9/btsGmxPYWQc/eKkbUs4e4KkwDNBhlLq7j0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpeOA9%2FbtsGmxPYWQc%2FeKkbUs4e4KkwDNBhlLq7j0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;134&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;973&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o4bch/btsGnBxADZr/iZy7giXjN4jjeiRG93i431/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o4bch/btsGnBxADZr/iZy7giXjN4jjeiRG93i431/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o4bch/btsGnBxADZr/iZy7giXjN4jjeiRG93i431/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo4bch%2FbtsGnBxADZr%2FiZy7giXjN4jjeiRG93i431%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;973&quot; height=&quot;626&quot; data-origin-width=&quot;973&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;...(코드 생략)&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;448&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m3QKi/btsGmvLnPON/PqLfyaKbrXO3JmktC7SAB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m3QKi/btsGmvLnPON/PqLfyaKbrXO3JmktC7SAB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m3QKi/btsGmvLnPON/PqLfyaKbrXO3JmktC7SAB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm3QKi%2FbtsGmvLnPON%2FPqLfyaKbrXO3JmktC7SAB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;860&quot; height=&quot;448&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;448&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;위와 같은 방식으로 &quot;자동화&quot; 키워드 및 맥락의 프롬프트를 추가함으로써&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;단계별 작업이 필요한 코드, 혹은 문서 텍스트를 생성할 수 있습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 시리즈에서는 본 논문에서 설명하는 Persona 활용법에 대해서 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기술 블로그</category>
      <category>ChatGPT</category>
      <category>ChatGPT 활용법</category>
      <category>프롬프트</category>
      <category>프롬프트 엔지니어링</category>
      <category>프롬프트 잘 쓰는법</category>
      <author>빅웨이브 이현상</author>
      <guid isPermaLink="true">https://bigwaveai.tistory.com/81</guid>
      <comments>https://bigwaveai.tistory.com/81#entry81comment</comments>
      <pubDate>Thu, 4 Apr 2024 12:12:47 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT 뻔한 팁말고 진짜 제대로 한번 써보자! ChatGPT 프롬프트 팁 시리즈 - (1) Meta Language Creation</title>
      <link>https://bigwaveai.tistory.com/80</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;723&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvLaMF/btsGJntCzNr/GTitTsjdpzZ8tJVlLcvoS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvLaMF/btsGJntCzNr/GTitTsjdpzZ8tJVlLcvoS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvLaMF/btsGJntCzNr/GTitTsjdpzZ8tJVlLcvoS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvLaMF%2FbtsGJntCzNr%2FGTitTsjdpzZ8tJVlLcvoS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1598&quot; height=&quot;723&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;723&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;안녕하세요! 빅웨이브에이아이 이현상입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;대학교 과제, 회사 업무, 연구 등등.. ChatGPT 요즘 많이들 쓰실텐데요,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&quot;ChatGPT 잘 쓰는 법&quot;이라고 검색해도..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;구체적으로 질문하라!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;페르소나를 정의하라!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예시를 들어라!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;뭐 이런 내용들 많이들 보셨을 겁니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사실 이런 팁 정도는 2022년 출시 이후 꾸준히 써보신 분들이라면 다 아는 내용들이죠?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;저는 그런 다 아는 내용들 말고, 2023년에 나온 논문 중에 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT 프롬프트 관련해서 재밌는 게 하나 있어서 알려드릴려고 합니다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;바로 &quot;A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT&quot;라는 논문인데요,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT 답변 성능을 높이기 위한 다양한 방법론들을 정리하는 내용입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이번 리뷰 시리즈에서는 위 논문을 소개해드리면서 직접 적용 예시(한글)도 소개드리겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이번 리뷰 내용은 빅웨이브에이아이의 조상원 님이 정리한 내용입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;229&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Mr2gr/btsGleXTQ2V/9tZyJbawNCT39WVX3dG8RK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Mr2gr/btsGleXTQ2V/9tZyJbawNCT39WVX3dG8RK/img.png&quot; data-alt=&quot;벌써 인용 수가 500회.. ㄷㄷ&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Mr2gr/btsGleXTQ2V/9tZyJbawNCT39WVX3dG8RK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMr2gr%2FbtsGleXTQ2V%2F9tZyJbawNCT39WVX3dG8RK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1044&quot; height=&quot;229&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;229&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;벌써 인용 수가 500회.. ㄷㄷ&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Input Semantics&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT 활용 시 맞춤형 메타 언어를 생성하고 사용하게 만들어서 이를 통해 복잡한 아이디어나 명령을 표준 언어보다 더 간결하고 명확하게 표현 가능합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; 일단 대체 언어를 기반으로 출력을 생성하려면 LLM이 해당 언어의 의미를 이해해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메커니즘: X라는 언어는 지금부터 Y야.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;핵심 아이디어: 혼란을 야기할 수 있는 메타 언어는 사용하지 않는 것이 좋음 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ex) 내가 a라고 말하면 그건 마리 앙투아네트를 의미 하는거야 &lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;메타언어 정의&lt;/b&gt;: 메타언어의 각 요소를 명확히 정의하기 (약어, 기호, 코드 또는 축약어의 의미 포함)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;해석 가이드라인&lt;/b&gt;: 메타언어를 어떻게 해석할 것인지에 대한 명확한 지침 제공. 메타언어의 각 구성 요소가 실제 상황에서 어떻게 적용되는지에 대한 구체적인 예시 포함&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;적절한 문맥 및 사용 사례 제시&lt;/b&gt;: 메타언어를 사용할 구체적인 문맥이나 상황 제시하기&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;메타언어를 정의해야 한다고 했지만, 이를 ChatGPT한테 알려줄 필요는 없습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;질문 시 규칙만 잘 설정해서 제시하면, ChatGPT는 이를 잘 이해합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Example&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXXkEG/btsGmYmfoB4/8Tz1rDzbl5QQoNG6FjhXE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXXkEG/btsGmYmfoB4/8Tz1rDzbl5QQoNG6FjhXE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXXkEG/btsGmYmfoB4/8Tz1rDzbl5QQoNG6FjhXE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXXkEG%2FbtsGmYmfoB4%2F8Tz1rDzbl5QQoNG6FjhXE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;862&quot; height=&quot;381&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;381&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;865&quot; data-origin-height=&quot;126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J4HZh/btsGmwXOOaV/ntlSZM0vwzUGmN2fNY532K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J4HZh/btsGmwXOOaV/ntlSZM0vwzUGmN2fNY532K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J4HZh/btsGmwXOOaV/ntlSZM0vwzUGmN2fNY532K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ4HZh%2FbtsGmwXOOaV%2FntlSZM0vwzUGmN2fNY532K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;865&quot; height=&quot;126&quot; data-origin-width=&quot;865&quot; data-origin-height=&quot;126&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위의 예시와 같이, 복잡한 구조의 설명 및 계산이 필요할 때&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설명을 풀어서 하기보다, 메타 언어를 활용하면 간편하고 안정적인 소통이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 시리즈에서는 ChatGPT의 출력(output)을 커스텀하는 방법에 대해서 설명드리겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기술 블로그</category>
      <category>ChatGPT</category>
      <category>chatgpt 활용</category>
      <category>프롬프트</category>
      <category>프롬프트 엔지니어링</category>
      <category>프롬프트 잘 쓰는 법</category>
      <author>빅웨이브 이현상</author>
      <guid isPermaLink="true">https://bigwaveai.tistory.com/80</guid>
      <comments>https://bigwaveai.tistory.com/80#entry80comment</comments>
      <pubDate>Thu, 4 Apr 2024 11:53:54 +0900</pubDate>
    </item>
    <item>
      <title>Mergekit, LLM을 한번 합쳐보자!</title>
      <link>https://bigwaveai.tistory.com/79</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;빅웨이브 이현상 님이 작성한 기술 리뷰입니다.&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Mergekit?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LLM을 합칠 수 있는 툴킷&lt;/li&gt;
&lt;li&gt;주소 링크&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/arcee-ai/mergekit?tab=readme-ov-file#merge-methods&quot;&gt;GitHub - arcee-ai/mergekit: Tools for merging pretrained large language models.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;특징
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;LLAMA, MISTRAL, GPT-NeoX, StableLM 등 지원&lt;/li&gt;
&lt;li&gt;Linear, SLERP, Task Arithmetic 등 다양한 병합 방법 사용 가능&lt;/li&gt;
&lt;li&gt;VRAM 8GB 수준의 GPU 가속화 가능&lt;/li&gt;
&lt;li&gt;텐서 지연 로딩으로 메모리 사용 낮게 가능&lt;/li&gt;
&lt;li&gt;가중치 값에 대한 보간 그래디언트 적용&lt;/li&gt;
&lt;li&gt;Piecewise 형태로 LLM 모델 레이어를 병합시킴&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;최근에 Kyujin이라는 사람이 SOLAR랑 본인 모델 Mergekit해서 EN, KO 둘 다 1등함&lt;/li&gt;
&lt;li&gt;ML 모델 앙상블이랑 유사한 개념이긴 한데, 조금 더 효율적이고 효과적&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;기능 및 구성 소개&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용법 - argument 사용, jupyter notebook 둘다 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;mergekit-yaml path/to/your/config.yml ./output-model-directory [--cuda] [--lazy-unpickle] [--allow-crimes] [... other options]
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;좋은 모델 나오면 허킹페이스에 업로드 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;# log in to huggingface with an access token (must have write permission)
huggingface-cli login
# upload your model
huggingface-cli upload your_hf_username/my-cool-model ./output-model-directory .
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;yaml 파일 구성
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;merge_method: 모델 병합 방법 설정&lt;/li&gt;
&lt;li&gt;slices: 모델의 레이어 슬라이스 정의&lt;/li&gt;
&lt;li&gt;models: 병합에 쓸 전체 모델 정의&lt;/li&gt;
&lt;li&gt;base_model: 기본 모델 정의&lt;/li&gt;
&lt;li&gt;parameters: 다양한 파라미터 가중치 설정&lt;/li&gt;
&lt;li&gt;dtype: 병합할 때 데이터 유형&lt;/li&gt;
&lt;li&gt;tokenizer_source: 토크나이저 뭐 쓸지?&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;병합 방법론 유형&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;985&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dRyKVS/btsE7oanD4j/4wzkLQHD0Zk2zH5muScNX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dRyKVS/btsE7oanD4j/4wzkLQHD0Zk2zH5muScNX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dRyKVS/btsE7oanD4j/4wzkLQHD0Zk2zH5muScNX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdRyKVS%2FbtsE7oanD4j%2F4wzkLQHD0Zk2zH5muScNX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;765&quot; height=&quot;377&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;985&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Linear: 그냥 가중치를 평균함, 정규화 기능 지원&lt;/li&gt;
&lt;li&gt;&lt;b&gt;slerp:&lt;/b&gt; 하나를 기본 모델로 설정해서 구면 보간 수행, 가장 성능이 좋다고 알려져 있음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구면 보간: 데이터 포인트를 구면상의 점으로 간주해서 smooth한 곡선 혹은 곡면을 그리는 방식으로 없는 값 채워 넣음&lt;/li&gt;
&lt;li&gt;기본 모델의 가중치 값과 다른 모델의 가중치 값을 합칠 때 smooth한 곡선 혹은 곡면 형태가 나타나도록 보간 함수로 조정&lt;/li&gt;
&lt;li&gt;모델 2개일때만 돌릴 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1900&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by4gDW/btsE93DdYNo/z5WP2W3LyO5kypDEVrV1GK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by4gDW/btsE93DdYNo/z5WP2W3LyO5kypDEVrV1GK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by4gDW/btsE93DdYNo/z5WP2W3LyO5kypDEVrV1GK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby4gDW%2FbtsE93DdYNo%2Fz5WP2W3LyO5kypDEVrV1GK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;379&quot; height=&quot;360&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1900&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;task_arithmetic: 다른 모델의 가중치에서 기본 모델의 가중치를 빼 작업 벡터(편차)를 생성한 후, 이를 선형적으로 병합(여러 개일 때)하고 기본 모델을 다시 더하는 방식
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;병합할 모델이 여러 개일 때 적용할 수 있는 방법론&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ties: 작업 벡터를 희소화(sparsify, 작은 값은 0처)하고 부호 합의(값의 부호 확인, 불일치 시 희소화) 알고리즘을 통해 모델 간 간섭을 해소&lt;/li&gt;
&lt;li&gt;dare: 작업 벡터를 희소화하고 새로운 재조정 기법을 적용하여 모델 간 간섭을 줄임, task_arithmetic과 ties와 붙일 수 있음&lt;/li&gt;
&lt;li&gt;passthrough: 입력 텐서를 변경하지 않고 그대로 전달하여 레이어 병합에 사용되며, 특히 하나의 입력 모델만 있는 경우 유용함&lt;/li&gt;
&lt;li&gt;yaml 파일 구성 예시&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;slices:
  - sources:
      - model: psmathur/orca_mini_v3_13b #오르카 미니 LLM, 허깅페이스에서 불러옴
        layer_range: [0, 40] #레이어 개수에 따라서 설정
      - model: garage-bAInd/Platypus2-13B #플래티푸스2 LLM, 허깅페이스에서 불러옴
        layer_range: [0, 40] #레이어 개수에 따라서 설정

merge_method: slerp #병합 방법 중 slerp 방법론 활용
base_model: psmathur/orca_mini_v3_13b #기본 모델 설정
parameters:
  t:
    - filter: self_attn #어텐션 스코어 가중치
      value: [0, 0.5, 0.3, 0.7, 1] # 가능한 조합들
    - filter: mlp #최종 분류 로짓값 가중치
      value: [1, 0.5, 0.7, 0.3, 0]
    - value: 0.5 # 기본 모델이 얼마나 가중치를 가질 것인지
dtype: float16 #저장된 가중치 dtype
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;3개 모델도 병합 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;slices:
  - sources:
      - model: psmathur/orca_mini_v3_13b
        layer_range: [0, 40]
      - model: garage-bAInd/Platypus2-13B
        layer_range: [0, 40]
merge_method: slerp
base_model: psmathur/orca_mini_v3_13b
parameters:
  t:
    - filter: self_attn
      value: [0, 0.5, 0.3, 0.7, 1]
    - filter: mlp
      value: [1, 0.5, 0.7, 0.3, 0]
    - value: 0.5 # fallback for rest of tensors
dtype: float16
name: gradient-slerp
---
models:
  - model: gradient-slerp
    parameters:
      density: [1, 0.7, 0.1] # density gradient
      weight: 1.0
  - model: WizardLM/WizardMath-13B-V1.0
    parameters:
      density: 0.33
      weight:
        - filter: mlp
          value: 0.5
        - value: 0
merge_method: ties
base_model: TheBloke/Llama-2-13B-fp16
parameters:
  normalize: true
  int8_mask: true
dtype: float16
name: gradient-slerp-ties
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;Setting&lt;/h1&gt;
&lt;pre class=&quot;vala&quot;&gt;&lt;code&gt;# Dev Container GPU 세팅
# - devcontainer.json
&quot;runArgs&quot;: [
		&quot;--gpus&quot;,
		&quot;all&quot;
	]

# 깃 클론
git clone &amp;lt;https://github.com/cg123/mergekit.git&amp;gt;
# 경로 설정
cd mergekit
# jupyter notebook 출력 위젯 설치
pip install ipywidgets
# 깃에 세팅된 패키지 설치
pip install -e .
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CUDA 붙여져 있으면 pip 설치할 때 pytorch gpu 붙음. 가속화 사용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;실행&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;argument를 활용해도 되지만, jupyter notebook으로도 실행 예제 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;# 변수 세팅
OUTPUT_PATH = &quot;./merged&quot;  # 저장될 경로
LORA_MERGE_CACHE = &quot;/tmp&quot;  # 로라 병합 캐시 저장 경로
CONFIG_YML = &quot;./examples/gradient-slerp.yml&quot;  # config(설정) yml 파일 경로 
COPY_TOKENIZER = True  # 토크나이저 있는거 쓰기
LAZY_UNPICKLE = True  # 실험적인 저용량 모델 로더 기능 활성화
LOW_CPU_MEMORY = True  # 서버 성능 좋으면 True 하면 됨
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 패키지 임포트
import torch
import yaml

from mergekit.config import MergeConfiguration
from mergekit.merge import MergeOptions, run_merge

# yml 파일 설정값 불러오기
with open(CONFIG_YML, &quot;r&quot;, encoding=&quot;utf-8&quot;) as fp:
    merge_config = MergeConfiguration.model_validate(yaml.safe_load(fp))

run_merge(
    merge_config,
    out_path=OUTPUT_PATH,
    options=MergeOptions(
        lora_merge_cache=LORA_MERGE_CACHE,
        cuda=torch.cuda.is_available(), # GPU 세팅
        copy_tokenizer=COPY_TOKENIZER, # 토크나이저
        lazy_unpickle=LAZY_UNPICKLE, 
        low_cpu_memory=LOW_CPU_MEMORY,
    ),
)
print(&quot;Done!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;820&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2u9Ww/btsE9PrFZwP/ZggFQUdat0Ik5J0qpVuE90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2u9Ww/btsE9PrFZwP/ZggFQUdat0Ik5J0qpVuE90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2u9Ww/btsE9PrFZwP/ZggFQUdat0Ik5J0qpVuE90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2u9Ww%2FbtsE9PrFZwP%2FZggFQUdat0Ik5J0qpVuE90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;633&quot; height=&quot;260&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;820&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LAZY_UNPICKLE, LOW_CPU_MEMORY False로 하니까 커널 crash 발생.&amp;hellip;&lt;/li&gt;
&lt;li&gt;True로 하니까 해결!&lt;/li&gt;
&lt;li&gt;기본적으로 GPU 가속화 활용하더라도 시간이 꽤 걸림 20~30분&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;결과&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;./merged 경로에 병합된 모델 및 관련 정보들이 자동으로 저장됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXLlvs/btsFbuUCqtg/xqnOUmUjKjDKwiQqKnvoqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXLlvs/btsFbuUCqtg/xqnOUmUjKjDKwiQqKnvoqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXLlvs/btsFbuUCqtg/xqnOUmUjKjDKwiQqKnvoqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXLlvs%2FbtsFbuUCqtg%2FxqnOUmUjKjDKwiQqKnvoqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;306&quot; height=&quot;337&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2205&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;커스텀 테스트로 한국어 open-KoLLM 리더보드 1등(Solar), 2등(DataVortexS) 병합해봤는데 코드 잘 돌아감&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oDJFs/btsE8zJrTWI/Ttt4UNik6QvBkBhLpvtZAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oDJFs/btsE8zJrTWI/Ttt4UNik6QvBkBhLpvtZAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oDJFs/btsE8zJrTWI/Ttt4UNik6QvBkBhLpvtZAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoDJFs%2FbtsE8zJrTWI%2FTtt4UNik6QvBkBhLpvtZAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;335&quot; height=&quot;262&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1562&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;병합된 모델 로드해서 간단하게 로컬에서 추론 시연해보려 했으나, 로컬 서버 메모리 문제로 테스트는 실패..&lt;/li&gt;
&lt;li&gt;
&lt;h1&gt;결론&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최근 Open-Ko-LLM 리더보드에서 SOLAR + DPO + Mergekit을 활용한 모델들이 상위권 유지 중&lt;/li&gt;
&lt;li&gt;llama-cpp(로컬 LangChain)로도 돌릴려고 해봤는데, merge된 local safetensors를 GGUF(llama-cpp 지원 확장자)로 변환하는게 현재 지원이 안됨&lt;/li&gt;
&lt;li&gt;Mergekit을 활용하여 허깅페이스에서 공개된 모델들을 아주 쉽게 병합할 수 있음&lt;/li&gt;
&lt;li&gt;Mergekit에서 병합 모델을 가장 사용하기 쉬운 구조는 허깅페이스에 업로드해서 쓰는 것으로 보임&lt;/li&gt;
&lt;li&gt;실제 허깅페이스에 모델 업로드 해놓음, 바로 Langchain 붙일 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://huggingface.co/coolwin20/merged_solar_vortexS&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://huggingface.co/coolwin20/merged_solar_vortexS&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708505670891&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;coolwin20/merged_solar_vortexS &amp;middot; Hugging Face&quot; data-og-description=&quot;merged2 This is a merge of pre-trained language models created using mergekit. Merge Details Merge Method This model was merged using the SLERP merge method. Models Merged The following models were included in the merge: Configuration The following YAML co&quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/coolwin20/merged_solar_vortexS&quot; data-og-url=&quot;https://huggingface.co/coolwin20/merged_solar_vortexS&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cmf6Ke/hyVmRUgke6/xAKvhEkYNkFuGSgw9hZgY0/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648&quot;&gt;&lt;a href=&quot;https://huggingface.co/coolwin20/merged_solar_vortexS&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/coolwin20/merged_solar_vortexS&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cmf6Ke/hyVmRUgke6/xAKvhEkYNkFuGSgw9hZgY0/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;coolwin20/merged_solar_vortexS &amp;middot; Hugging Face&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;merged2 This is a merge of pre-trained language models created using mergekit. Merge Details Merge Method This model was merged using the SLERP merge method. Models Merged The following models were included in the merge: Configuration The following YAML co&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;huggingface.co&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1657&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FHR4s/btsE7swZMx2/aBdz8hTHHPsK5Y63sUX710/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FHR4s/btsE7swZMx2/aBdz8hTHHPsK5Y63sUX710/img.png&quot; data-alt=&quot;Mergekit을 활용하여&amp;amp;nbsp; 쉽게 허깅페이스 업로드 및 활용 가능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FHR4s/btsE7swZMx2/aBdz8hTHHPsK5Y63sUX710/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFHR4s%2FbtsE7swZMx2%2FaBdz8hTHHPsK5Y63sUX710%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;453&quot; height=&quot;375&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1657&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Mergekit을 활용하여&amp;nbsp; 쉽게 허깅페이스 업로드 및 활용 가능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>기술 블로그</category>
      <category>AI</category>
      <category>LLM</category>
      <category>mergekit</category>
      <category>거대언어모델</category>
      <category>딥러닝</category>
      <author>빅웨이브 이현상</author>
      <guid isPermaLink="true">https://bigwaveai.tistory.com/79</guid>
      <comments>https://bigwaveai.tistory.com/79#entry79comment</comments>
      <pubDate>Wed, 21 Feb 2024 17:55:59 +0900</pubDate>
    </item>
    <item>
      <title>RLHF - 어떻게 LLM의 성능을 향상시킬 수 있을까?</title>
      <link>https://bigwaveai.tistory.com/77</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;빅웨이브에이아이 이원석 님의 리뷰입니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LLM 모델인 GPT-4, PaLM, LLama 등은 범용적인 목적에 맞게, 매우 큰 모델 사이즈와 매우 방대한 양의 데이터로 사전 학습이 수행됨&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일반적인 LLM의 경우 방대한 양의 데이터로 부터 매우 다양한 도메인 지식을 습득&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;But, 사전 학습 데이터에서 욕설, 편향적인 정보, 부정확한 정보를 담은 문서 등 적절치 못한 데이터를 다수 포함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;데이터 클렌징 및 필터링 등 방대한 양의 데이터를 사람이 전부 처리하는 것은 한계가 존재&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이에 따라, 모델이 부적절한 문장이나 단어를 선택하여 다음 문장을 생성하는 일이 빈번하게 발생&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;생성 모델 자체도 Next-token prediction 방식으로 학습 되기 때문에 최대한 확률적으로 높은 문장을 생성하는 것, 이로인한 환각 및 비윤리적 답변이 문제가 됨&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;807&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZIDdQ/btsDQ1gk5Zu/MmSkSxBXEIcmFGGetZ3H1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZIDdQ/btsDQ1gk5Zu/MmSkSxBXEIcmFGGetZ3H1k/img.png&quot; data-alt=&quot;그림 출처:&amp;amp;amp;nbsp; https://tech.scatterlab.co.kr/luda-rlhf/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZIDdQ/btsDQ1gk5Zu/MmSkSxBXEIcmFGGetZ3H1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZIDdQ%2FbtsDQ1gk5Zu%2FMmSkSxBXEIcmFGGetZ3H1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;637&quot; height=&quot;257&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;807&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 출처:&amp;amp;nbsp; https://tech.scatterlab.co.kr/luda-rlhf/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; LLM의 능력을 적절하게 활용하기 위해서 사람의 의도와 방향에 맞게 생성 모델을 통제할 수 있어야 하며 최근의 LLM들은 &lt;span style=&quot;background-color: #f1f1ef;&quot; data-token-index=&quot;1&quot;&gt;Supervised Fine-tuning (SFT)&lt;/span&gt;&amp;nbsp;방식과&amp;nbsp;&lt;span style=&quot;background-color: #f1f1ef;&quot; data-token-index=&quot;3&quot;&gt;Reinforcement Learning from Human Feedback (RLHF)&lt;/span&gt;&amp;nbsp;방식을 통해 생성 모델의 성능을 고도화함&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1692&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Of1Kl/btsDQSjC9PH/QMIW1GcKfAaIfdaodk1N4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Of1Kl/btsDQSjC9PH/QMIW1GcKfAaIfdaodk1N4K/img.png&quot; data-alt=&quot;그림 출처:&amp;amp;amp;nbsp; twitter.com/anthrupad&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Of1Kl/btsDQSjC9PH/QMIW1GcKfAaIfdaodk1N4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOf1Kl%2FbtsDQSjC9PH%2FQMIW1GcKfAaIfdaodk1N4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;587&quot; height=&quot;497&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1692&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 출처:&amp;amp;nbsp; twitter.com/anthrupad&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Unsupervised Learning (Pre-training)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사전 학습을 통해서 생성 모델을 학습하는 단계로, 대형 생성 모델은 강력하지만 사람이 원하는 의도대로 동작하기 어려우며 서비스에 바로 적용하기 힘든 상태&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사전 학습된 Domain 지식을 통해서 모델의 성능이 크게 좌지우지 될 수 있으며 fine-tune 단계는 생성 모델이 답변을 잘 낼 수 있도록 보조하는 역할 정도로 생각할 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Supervised Fine-tuning(SFT)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;특정 도메인 혹은 크라우드 소싱 등으로 구축된 양 질의 데이터 Instruct, Input, Reponse 쌍을 통해서 fine-tune 하는 과정이며 instruct-tuning이라고도 함&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;해당 과정을 통해 생성 모델이 사람의 의도에 맞는 문장을 생성하는 법을 익히며 사전 학습 단계에서 지식 습득이 제대로 되었다면 SFT 단계에서 적은 수의 양질의 데이터 만으로도 충분한 성능을 낼 수 있음**(LIMA : Less is more Alignment 참고!)**&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;아래와 같이 지시사항에 대한 답변을 생성해낼 수 있도록 예시 데이터를 주고 학습을 수행하는 것&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;lt;|system|&amp;gt;
귀하는 지시를 매우 잘 따르는 인공지능 비서입니다. 최대한 많이 도와주세요.&amp;lt;/s&amp;gt;
&amp;lt;|user|&amp;gt;
다음 질문에 답해 주세요: 문맥: 오스틴은 도시의 밤 문화를 좋아해서 외출할 준비를 했습니다.  
질문: 오스틴은 왜 이렇게 했을까요?  
다음 중 문맥에 따라 이 질문에 가장 잘 맞는 답은 무엇인가요?  
A: 최고의 모습을 보이다 
B: 클럽에서 어울리다 
C: 파티에 나가다
정답&amp;lt;/s&amp;gt;
&amp;lt;|assistant|&amp;gt;
B: 클럽에서 놀기&amp;lt;/s&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Reinforcement learning from human feedback(RLHF)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;797&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ug4qv/btsDRpIaFVC/ybcCQS1KjiymeYeaO9Kh40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ug4qv/btsDRpIaFVC/ybcCQS1KjiymeYeaO9Kh40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ug4qv/btsDRpIaFVC/ybcCQS1KjiymeYeaO9Kh40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fug4qv%2FbtsDRpIaFVC%2FybcCQS1KjiymeYeaO9Kh40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;614&quot; height=&quot;245&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;797&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;SFT 모델에 추가적으로 사람의 피드백을 보상으로 한 강화 학습을 적용하여 사람의 의도에 부합하는 답변을 생성 하도록 하는 과정&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;SFT의 경우 주어진 문맥에 대해서 모델이 모범 답안을 주어서 올바른 답변을 생성하도록 학습이 진행된다면, RLHF 의 경우 &amp;ldquo;너는 그렇게 답변해서는 안된다!&amp;rdquo; 를 알려주는 역할 또는 A 문장 보다 B 문장이 좋다고 알려주는 역할을 수행&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위와 같이 답변에 대한 긍/부정적 평가 혹은 순위 정보를 피드백 하여 사람의 선호도를 학습하는 방법론을 &lt;b&gt;Learning from Human Feedback 혹은 Human Preference Alignment 라함&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;가장 대표적인 방법이 &lt;b&gt;RLHF&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;RLHF&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;강화 학습은 주어진 환경(Enviroment)에 대한 상태(State)에 따라 Policy 모델이 행동(Action)을 하게 되고, 그 일련의 과정에서 얻은 보상(Reward)를 기반으로 각 상태 또는 행동에 대한 가치를 평가하여 학습하는 방법론&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;840&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ImGx4/btsDT3SaGti/NaYgAnQqhxL37Kj37FJ6n1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ImGx4/btsDT3SaGti/NaYgAnQqhxL37Kj37FJ6n1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ImGx4/btsDT3SaGti/NaYgAnQqhxL37Kj37FJ6n1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FImGx4%2FbtsDT3SaGti%2FNaYgAnQqhxL37Kj37FJ6n1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;688&quot; height=&quot;289&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;840&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서 중요한 점은&amp;nbsp;&lt;b&gt;어떤 행동이 정답인지 레이블로 존재하는 supervised learning과는 달리, 모델이 한 행동이 적절한지 아닌지를 알려주게됨&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;바둑의 예시로 현재 상황에서 너가 둬야하는 적절한 수의 위치는 (6, 15)야라고 정답을 말해주는 supervised learning과는 달리, 강화 학습은 모델이 한 행동에 대해&amp;nbsp;너가 둔 수는 -1만큼 보상을 받아&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;라고 알려주는 것&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rdpAJ/btsDUVzleZP/yJVmB9un6rSPguUccecWx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rdpAJ/btsDUVzleZP/yJVmB9un6rSPguUccecWx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rdpAJ/btsDUVzleZP/yJVmB9un6rSPguUccecWx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrdpAJ%2FbtsDUVzleZP%2FyJVmB9un6rSPguUccecWx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;728&quot; height=&quot;275&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위 과정을 LLM 학습에 빗대어 위 그림과 같이 표현 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;instruct-tune을 통해 학습된 LLM이 입력된 prompt로 context를 생성하는데 context를 생성 한 것을 토대로 reward를 주는데 이 reward에 대한 부분을 사람이 직접 feedback을 의미함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예를 들어,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Human : 오늘 뭔가 아무것도 하기 싫은걸?&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Assistant : 그럼 때려쳐!&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Assistant : 왜 그래? 무슨일이야?!&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위의 문맥에서 1번 보다는 2번이 좋다라는 피드백을 주는 것으로 1번은 부정적인 보상, 후자는 긍정적인 보상을 주어 모델을 학습하는 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;RLHF는 SFT가 완료된 모델에 대해서 수행하는 것을 전제로 한다. 그러나 Reward를 주는 행위를 전부 사람이 수행하는 것이 가능한가? 시간과 비용이 많이 들 것!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따라서 &lt;b&gt;Reward Model&lt;/b&gt;을 통해서 이를 대신 수행&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Reward Model&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Reward Model은 모델이 한 행동(모델이 생성한 문장)에 대해서 사람이 매번 리워드를 평가 할 수 없기에 &lt;b&gt;모델이 생성한 문장에 대해서 자동으로 평가할 수 있는 모델을 학습한 것&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1443&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/umcLl/btsDULXOZDx/KVYx7SEirsUvI98eYyVq01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/umcLl/btsDULXOZDx/KVYx7SEirsUvI98eYyVq01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/umcLl/btsDULXOZDx/KVYx7SEirsUvI98eYyVq01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FumcLl%2FbtsDULXOZDx%2FKVYx7SEirsUvI98eYyVq01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;719&quot; height=&quot;519&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1443&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;간단하게 생각하면 Reward Model 또한 지도 학습을 통해서 학습되는 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따라서, Reward Model 학습을 위해서 초기에 Reward에 대해 사람이 레이블링 한 데이터셋이 필요&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Reward 에 대한 레이블을 사람이 직접 매긴 점수의 형태로도 사용할 수 있으나 점수의 경우 사람마다 그에 대한 척도가 달라 편향이 발생할 수 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;많이 채택하는 방식으로 &lt;b&gt;(Prompt, Chosen Response, Reject Response)&lt;/b&gt; 의 형태로 데이터를 구성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;초기 SFT로 학습 된 모델을 통해 각 Prompt로 부터 여러 가지 답변을 생성 후 생성 된 답변들 중 positive한 답변과 negative한 답변을 나누어 위와 같이 데이터 구성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이때 Bradley-Terry 모델이라는 두 후보 우위에 대한 확률을 계산하는 모델로 Chosen Response가 Reject Response 보다 답변이 더 좋을 확률을 계산&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;주어진 Prompt 에 대해&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;P(Chosen Response &amp;gt; Reject Response | Prompt)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Chosen Response가 좋을 확률을 높이는 방향으로 학습 &amp;rArr; &lt;b&gt;negative 답변에 대한 logit은 작아지고, positive 답변에 대한 logit은 커지게 학습되게 됨&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u7k3G/btsDTvVrM2k/mFeHb2ciUxkKyPzv7i7Blk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u7k3G/btsDTvVrM2k/mFeHb2ciUxkKyPzv7i7Blk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u7k3G/btsDTvVrM2k/mFeHb2ciUxkKyPzv7i7Blk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu7k3G%2FbtsDTvVrM2k%2FmFeHb2ciUxkKyPzv7i7Blk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;739&quot; height=&quot;201&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습이 완료된 Reward Model은 위 그림처럼 각 Response에 대한 응답 점수를 낼 수 있음&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Fine Tuning with RLHF(PPO &amp;amp; KL Divergence)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;654&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nPcM7/btsDWP6sO4p/hfUTSmbIp4ZJlWqN8OEPf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nPcM7/btsDWP6sO4p/hfUTSmbIp4ZJlWqN8OEPf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nPcM7/btsDWP6sO4p/hfUTSmbIp4ZJlWqN8OEPf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnPcM7%2FbtsDWP6sO4p%2FhfUTSmbIp4ZJlWqN8OEPf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;707&quot; height=&quot;231&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;654&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;학습된 Reward Model을 활용하여 RLHF 학습하는 과정은 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;준비된 Prompt 데이터 셋 instruct-LLM 입력&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Prompt 가 완성된 결과를 Reward Model 입력 및 Reward를 추출하고 강화학습 알고리즘으로 전달&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;강화학습에 사용하는 알고리즘은 Proximal Policy Optimization 으로 보상 점수에 대한 로스를 계산하고 LLM 높은 Reward를 산출할 수 있도록 최적화를 수행&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그러나, 위의 학습 과정에서는 취약점이 존재&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;모델이 지나치게 높은 리워드를 내는 것에 목표를 가지다보니 리워드 모델의 취약점 및 편향을 찾아내고 그 부분만을 집중적으로 공략하여 높은 리워드 점수를 내도록 할수가 있는데 이를 &lt;b&gt;리워드 해킹(Reward Hacking) 또는 Mode Collapse 라 함&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이를 방지하기 위한 Regulrization term 이 추가되는 이 항이 KL divergence term &amp;rArr; KL Penalty&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;870&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5IVFG/btsDVpNKPtY/7kMN41gbKrQK05ZD59HtL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5IVFG/btsDVpNKPtY/7kMN41gbKrQK05ZD59HtL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5IVFG/btsDVpNKPtY/7kMN41gbKrQK05ZD59HtL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5IVFG%2FbtsDVpNKPtY%2F7kMN41gbKrQK05ZD59HtL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;870&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;870&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;KL divergence term의 경우 레퍼런스 모델을 기준으로 하여 학습되는 모델이 레퍼런스 모델의 분포로부터 너무 크게 벗어나지 않도록 하는 역할을 수행&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;레퍼런스 모델의 경우 전체 weight에 대한 freeze 후에 사용되는 형태로 보상을 높이다 모델의 생성형태가 환각의 형태에 가까울때 그에 벗어나지 않도록 중재해주는 역할을 수행할 수 있는 것!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;RLHF 학습 불안정성 및 한계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;RLHF는 생성 모델, 리워드 모델, 레퍼런스 모델들의 상호작용을 통해서 강화학습 수행&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이에 따라 학습이 불안정하여 쉽게 over-fitting이 발생하고, 하이퍼 파라미터에 상당히 민감한 특징을 가짐&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;특히, Reward Model robust 하지 않으면 학습 성능에 치명적인 악영향을 초래할수 있음&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이를 방지하기 위해 Reward Model 학습 시 negative sample을 증강 하거나 원래 모델 분포를 벗어나지 않기 위해 pre-training에 사용했던 데이터를 다시 넣어서 학습하는 Pre-training-mix 방법론 등을 사용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한, 상호작용을 위한 모델의 수가 최소 3개로 학습 시 필요한 일반 학습보다 컴퓨팅 자원의 수가 더 많이 필요&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;DPO(Direct Preference Optimization)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;RLHF의 구현 복잡성 및 학습 불안정성의 문제를 보완하기 위한 대체 방법론으로 아래와 같은 특징을 가짐&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;학습 시 RLHF 보다 더 적은 수 모델을 활용하여 GPU 자원 사용량이 적으며 학습 속도가 빠름&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;간단한 학습 방식과 더 적은 하이퍼 파라미터 튜닝으로 안정적인 학습&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기존 RLHF보다 더 좋은 성능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;해당 방법론의 특징은 리워드 모델 학습용 데이터 셋을 직접적으로 사용하여 positive 답변에 대한 확률은 높아지게, negative 확률은 낮아지도록 학습하는 방식을 제안&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btdWqF/btsDQUV0VNo/buKU4Fx7eF2TOoEcIHSDuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btdWqF/btsDQUV0VNo/buKU4Fx7eF2TOoEcIHSDuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btdWqF/btsDQUV0VNo/buKU4Fx7eF2TOoEcIHSDuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtdWqF%2FbtsDQUV0VNo%2FbuKU4Fx7eF2TOoEcIHSDuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1195&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; 학습 시 레퍼런스 모델이 계산한 확률 대비 학습하는 모델이 계산한 확률을 리워드 점수로 하며 이를 implict Reward라 정의 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpJX3y/btsDQ2lWJ06/w553kgfJI9ilUxyAatyFlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpJX3y/btsDQ2lWJ06/w553kgfJI9ilUxyAatyFlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpJX3y/btsDQ2lWJ06/w553kgfJI9ilUxyAatyFlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpJX3y%2FbtsDQ2lWJ06%2Fw553kgfJI9ilUxyAatyFlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;216&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;216&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;식을 보면 간단히 알 수 있는데 y_w을 positive 답변, y_l을 negative 답변이라 할 때&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;학습 중인 모델과 레퍼런스 모델의 positive 답변 생성에 대한 확률 비율이 negative 답변 생성에 대한q비율 보다 커지도록 학습하는 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;정리하면, DPO는 Reward Model 학습용 데이터를 직접 활용하여 수행될 수 있으며 학습 중 레퍼런스 모델은 필히 필요함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1393&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2c3E0/btsDW7Z5feO/CYfThqtqkrDjpejixORNhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2c3E0/btsDW7Z5feO/CYfThqtqkrDjpejixORNhk/img.png&quot; data-alt=&quot;https://aihub.or.kr/leaderboard/view.do?currMenu=500&amp;amp;amp;topMenu=102&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2c3E0/btsDW7Z5feO/CYfThqtqkrDjpejixORNhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2c3E0%2FbtsDW7Z5feO%2FCYfThqtqkrDjpejixORNhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1393&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1393&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://aihub.or.kr/leaderboard/view.do?currMenu=500&amp;amp;topMenu=102&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; aihub에서 진행중인 LLM 성능 리더보드에서도 DPO 방법론을 활용한 모델의 성능이 상위권에 위치하는 것을 확인가능 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;b&gt;Rejection Sampling Fine-tuning(Best of N)&lt;/b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;해당 방법론은 먼저 생성 모델이 각 컨텍스들 별로 모델 분포에 따라 답변 후보 문장 N개를 생성 후 답변 후보 문장에 대해서 리워드 스코어를 계산&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;특정 스코어 이상의 답변 후보들을 최종 답변으로 채택, 이때 특정 스코어 이상의 답변 후보를 채택하는 대신 가장 높은 스코어의 답변 한개를 고를 수 도 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이에 따라 &lt;b&gt;Best-of N Samling&lt;/b&gt;이라 함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위에 방법대로 Sampling한 답변들을 정답 답변 레이블로 활용하여 SFT 방식과 동일하게 학습 수행&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이를 통해 리워드가 높은 문장이 생성될 확률이 높아지는 모델이 학습&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;학습 과정 중 리워드 모델이나 레퍼런스 모델이 필요없는 &lt;b&gt;간단한 방식임에도 매우 높은 성능을 보여줌!&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;하지만 Negative Sample에 대한 학습 기회가 적다는 단점이 존재&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이애 따라 LLama-2-Chat은 &lt;b&gt;1) Rejection Sampling fine-tunning 2) RLHF fine-tunning을 추가 진행하는 방식으로 결합하여 더 높은 성능을 추구하는 방식으로 학습&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;RLHF 코드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;huggingface에 RLHF를 쉽게 수행할 수 있도록 TRL(&lt;b&gt;&lt;a href=&quot;https://huggingface.co/docs/trl&quot;&gt;Transformer Reinforcement Learning&lt;/a&gt;&lt;/b&gt;) 를 공개함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://github.com/huggingface/trl&quot;&gt;https://github.com/huggingface/trl&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위 패키지를 레퍼런스로 학습을 수행할 수 있는 코드 레파지토리를 첨부&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;추후업데이트 예정 github&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;참고자료&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://tech.scatterlab.co.kr/alt-rlhf/&quot;&gt;https://tech.scatterlab.co.kr/alt-rlhf/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://tech.scatterlab.co.kr/luda-rlhf/&quot;&gt;https://tech.scatterlab.co.kr/luda-rlhf/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/huggingface/trl&quot;&gt;https://github.com/huggingface/trl&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://medium.com/@madhur.prashant7/rlhf-reward-model-ppo-on-llms-dfc92ec3885f&quot;&gt;https://medium.com/@madhur.prashant7/rlhf-reward-model-ppo-on-llms-dfc92ec3885f&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://moon-walker.medium.com/리뷰-meta-ai의-논문-lima-less-is-more-for-alignment-결국-llm의-pre-training이-가장-중요하다-f3c9ea885f5a&quot;&gt;https://moon-walker.medium.com/리뷰-meta-ai의-논문-lima-less-is-more-for-alignment-결국-llm의-pre-training이-가장-중요하다-f3c9ea885f5a&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/huggingface/alignment-handbook/tree/main?tab=readme-ov-file&quot;&gt;https://github.com/huggingface/alignment-handbook/tree/main?tab=readme-ov-file&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://towardsdatascience.com/fine-tune-better-chat-models-with-distilled-identity-preference-optimization-ipo-99cddc819a48&quot;&gt;https://towardsdatascience.com/fine-tune-better-chat-models-with-distilled-identity-preference-optimization-ipo-99cddc819a48&lt;/a&gt; (DPO 개선을 위한 IPO 로스)&lt;/p&gt;</description>
      <category>기술 블로그</category>
      <category>DPO</category>
      <category>LLM</category>
      <category>LLM 성능 개선</category>
      <category>RLHF</category>
      <category>강화학습</category>
      <author>빅웨이브 이현상</author>
      <guid isPermaLink="true">https://bigwaveai.tistory.com/77</guid>
      <comments>https://bigwaveai.tistory.com/77#entry77comment</comments>
      <pubDate>Wed, 24 Jan 2024 16:25:55 +0900</pubDate>
    </item>
    <item>
      <title>LangChain: LLM 서비스를 어떻게 개발할 수 있을까?</title>
      <link>https://bigwaveai.tistory.com/76</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;Introduction&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;안녕하세요! 빅웨이브에이아이 이현상입니다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;요즘 들어 블로그 포스트를 거의 올리지 못해 저도 참 아쉬웠는데요,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사실 저도 직장 근무를 하면서 회사 블로그 운영하기가 쉽지는 않더라구요 ㅜㅜ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그래서 아에 블로그를 지금처럼.. 방치하기 보다는, 저희 회사의 월간 세미나로 정리되는 내용을 하나씩 공유드리고자 합니다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;최근 저희 회사에서는 최신 트렌드에 발맞춰서 LLM(Large Language Model) 및 생성형 AI 관련 내용들을 연구하고 있는데요,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이 밖에도 추후 AI 관련 트렌드에 맞춰 정리된 내용들을 지속적으로 전달해드리려고 해요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;오늘은 LangChain이라는 LLM 어플리케이션 개발을 위한 프레임워크를 소개해드리겠습니다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;빅웨이브에이아이 이현상 님의 리뷰입니다.&lt;/blockquote&gt;
&lt;h1&gt;1. LangChain이란?&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LLM 기반 어플리케이션 개발을 위한 프레임워크, &lt;b&gt;다양한 LLM관련 기능들을 결합(체인)하여 손쉽게 사용하도록 지원&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Harrison Chase라는 사람이 2022년 Robust Intelligence 근무 시절 시작한 오픈소스 프로젝트, &lt;b&gt;JavaScript와 파이썬에서 패키지 형식으로 지원&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;핵심 기능 2가지&lt;/span&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;상황 인식 - LLM을 소스(지침, 예시, 콘텐츠 등)와 연결&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;추론(Reasoning) - LLM 기반 특정 추론 유도&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프레임워크 구성&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;LangChain 라이브러리&lt;/b&gt;: Python 및 JS 라이브러리, 어플리케이션 개발을 위한 LLM Chain(다양한 기능 결합) 지원&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;LangSmith&lt;/b&gt;: LLM Chain을 디버깅, 테스트, 평가 및 모니터링할 수 있는 개발자 플랫폼&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;LangServe&lt;/b&gt;: LLM Chain을 REST API로 배포하기 위한 라이브러리&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;LangChain 템플릿&lt;/b&gt;: 다양한 작업을 위한 기본 아키텍처 제공&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2023&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c98ybf/btsDWr5JmN7/fM6c3LbNxmbkPkjSVHt0Z1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c98ybf/btsDWr5JmN7/fM6c3LbNxmbkPkjSVHt0Z1/img.png&quot; data-alt=&quot;LangChain 구성도!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c98ybf/btsDWr5JmN7/fM6c3LbNxmbkPkjSVHt0Z1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc98ybf%2FbtsDWr5JmN7%2FfM6c3LbNxmbkPkjSVHt0Z1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;2023&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2023&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;LangChain 구성도!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LangChain 개발 생애 주기&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;개발: LangChain 탬플릿 가지고 어플리케이션 기능 개발&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;생산화: LangSmith로 LLM 체인 검사, 테스트, 모니터링&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;배포: LangServe로 모든 LLM 체인 API 개발&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;패키지 주요 구성&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LangChain: LLM의 아키텍처를 구성하는 상황 인지, 기능 체인, 에이전트 및 검색(Retrieval) 전략&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Langchain-Core: 기본 추상화 및 언어&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LangChain-Community: 서드 파티(타 프레임워크) 통합&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;패키지 주요 모듈&lt;/span&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Chains: LLM 관련 도구, 전처리 등 기능 제공, LCEL(&lt;b&gt;LangChain Expression Language&lt;/b&gt;) 활용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Agents: 에이전트(작업 주체)가 LLM을 활용하여 어떤 작업을 수행할 지 선택&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Retrieval: 언어 생성에 문서 참고, 문서를 텍스트 벡터 형식으로 저장하여 최적화&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Model I/O(Input/Output): 모델의 입출력 관리 모듈, 전세계 언어 관련 모델과 상호작용할 수 있는 블록 방식 기능 제공&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Memory: 언어 생성에서 과거의 상호작용 기록이 필요한 경우 이를 메모리 형태로 관리&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Callbacks: 로깅, 모니터링, 스트리밍(ChatGPT와 같이 실시간 답변 생성) 등 LLM 어플리케이션의 다양한 단계와 연결하는 기능&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;2. Python LangChain 환경 세팅 (Local)&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;pip install로 간단하게 설치 가능, Anaconda 가상 환경이나 Dev Container 활용 권장&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;VS code Anaconda Dev Container + pip install&lt;/span&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Anaconda 설치&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;VS code 설치&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Docker Desktop 설치&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Dev Container 세팅&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;pip install 실행&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LangChain 버전 확인&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oY5Oc/btsDW3DlvZU/E6FmkQiiLA8RzwX2jRkzB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oY5Oc/btsDW3DlvZU/E6FmkQiiLA8RzwX2jRkzB1/img.png&quot; data-alt=&quot;VsCode Dev Container&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oY5Oc/btsDW3DlvZU/E6FmkQiiLA8RzwX2jRkzB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoY5Oc%2FbtsDW3DlvZU%2FE6FmkQiiLA8RzwX2jRkzB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1139&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1139&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;VsCode Dev Container&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Requirements.txt&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;langchain==0.1.0 &lt;br /&gt;langchain-openai==0.0.2 &lt;br /&gt;beautifulsoup4==4.12.2 &lt;br /&gt;faiss-cpu==1.7.4 &lt;br /&gt;langchainhub==0.1.14 &lt;br /&gt;langserve[all]==0.0.39 &lt;br /&gt;tavily-python==0.1.9 &lt;br /&gt;fastapi==0.109.0 &lt;br /&gt;uvicorn==0.23.2 &lt;br /&gt;urllib3==2.1.0&lt;/p&gt;
&lt;h1&gt;3. Python LangChain 예제&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;OpenAI Playground API 키 발급(유료 주의, 그래도 GPT 3.5의 경우 매우 저렴)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;pip install -r requirements.txt로 패키지 세팅&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;코드 시작!&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1) Simple 예제&lt;/h2&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# 패키지 세팅
from langchain_openai import ChatOpenAI
os.environ[&quot;OPENAI_API_KEY&quot;] = &quot;...&quot;
llm = ChatOpenAI()
# 간단하게 API 텍스트 호출
llm.invoke(&quot;LangSmith로 Testing과 Evaluation을 어떻게 할 수 있어?&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brRTdi/btsDWIe7uzw/zzKHdxN2ha823dK7t4dli0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brRTdi/btsDWIe7uzw/zzKHdxN2ha823dK7t4dli0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brRTdi/btsDWIe7uzw/zzKHdxN2ha823dK7t4dli0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrRTdi%2FbtsDWIe7uzw%2FzzKHdxN2ha823dK7t4dli0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;78&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;패키지 불러와서 변수 설정하고 invoke로 텍스트 호출할 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# OpenAI Chat API 프롬프트 세팅
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
    (&quot;system&quot;, &quot;너는 월드 클래스 급의 문서 작성 전문가야. 한번 잘 써봐&quot;),
    (&quot;user&quot;, &quot;{input}&quot;)
])

# 백 슬래쉬로 변수 객체에 대해 chain 걸 수 있음
chain = prompt | llm

# prompt 포함 생성
chain.invoke({&quot;input&quot;: &quot;LangSmith로 Testing과 Evaluation을 어떻게 할 수 있어?&quot;})&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;62&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZQtIO/btsDQbDE0b0/G3kw8gkZ74RauJtqTWmNAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZQtIO/btsDQbDE0b0/G3kw8gkZ74RauJtqTWmNAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZQtIO/btsDQbDE0b0/G3kw8gkZ74RauJtqTWmNAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZQtIO%2FbtsDQbDE0b0%2FG3kw8gkZ74RauJtqTWmNAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;62&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;62&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프롬프트를 양식대로 코드 작성하여 체인(|)을 설정할 수 있음, chain.invoke로 텍스트 생성 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# 출력되는 text 후처리로 string만 추출
from langchain_core.output_parsers import StrOutputParser

output_parser = StrOutputParser()

chain = prompt | llm | output_parser

# prompt, parser 포함 생성
chain.invoke({&quot;input&quot;: &quot;LangSmith로 Testing과 Evaluation을 어떻게 할 수 있어?&quot;})&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kHR0Q/btsDWq6PXLW/Ss3ZVqPaYaipR1CRz4rC81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kHR0Q/btsDWq6PXLW/Ss3ZVqPaYaipR1CRz4rC81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kHR0Q/btsDWq6PXLW/Ss3ZVqPaYaipR1CRz4rC81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkHR0Q%2FbtsDWq6PXLW%2FSs3ZVqPaYaipR1CRz4rC81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;89&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;string만 추출하는 등 전처리 및 후처리 과정도 chain에 결합할 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2) Retrieval(검색 기능) 붙이기&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Retrieval 이란 LangChain의 주요 기능 중 하나로, 학습된 생성 모델이 알기 어려운 정보라도 문서 형태로 주어지면 이를 참고하여 보다 정확한 텍스트를 생성할 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;문서를 임베딩 벡터 형태로 저장해두고 이를 chain하여 답변 생성에서 활용할 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 웹 사이트 URL로 문서 등록
from langchain_community.document_loaders import WebBaseLoader
loader = WebBaseLoader(&quot;&amp;lt;https://docs.smith.langchain.com/overview&amp;gt;&quot;)

docs = loader.load()

# 임베딩 임포트
from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings()

# FAISS(Facebook AI Similarity Search)로 문서를 벡터화
from langchain_community.vectorstores import FAISS
from langchain.text_splitter import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter()
documents = text_splitter.split_documents(docs)
vector = FAISS.from_documents(documents, embeddings)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;웹사이트를 로드하여 문서화, OpenAI 임베딩 방식으로 FAISS 활용하여 벡터 추출&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 프롬프트 탬플릿 만들기
# 입력값으로 context(문서), input(질문) 설정
from langchain.chains.combine_documents import create_stuff_documents_chain

prompt = ChatPromptTemplate.from_template(&quot;&quot;&quot;해당 질문에 대해서 오직 주어진 context만을 기반하여 답변을 작성해줘:

&amp;lt;context&amp;gt;
{context}
&amp;lt;/context&amp;gt;

Question: {input}&quot;&quot;&quot;)

document_chain = create_stuff_documents_chain(llm, prompt)

# 바로 prompt에 문서 내용 넣는 방식으로도 가능하긴 함
from langchain_core.documents import Document

document_chain.invoke({
    &quot;input&quot;: &quot;LangSmith로 Testing과 Evaluation을 어떻게 할 수 있어?&quot;,
    &quot;context&quot;: [Document(page_content=&quot;LangSmith 개요와 사용자 가이드라인&quot;)]
})
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;프롬프트에 LangChain Document 양식으로 텍스트를 직접 넣을 수도 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 만들어놓은 벡터 retriever와 document_chain 연동
from langchain.chains import create_retrieval_chain

retriever = vector.as_retriever()
retrieval_chain = create_retrieval_chain(retriever, document_chain)

# retrieval chain에 질문 넣어서 답변 생성
response = retrieval_chain.invoke({&quot;input&quot;: &quot;LangSmith로 Testing과 Evaluation을 어떻게 할 수 있어?&quot;})
print(response[&quot;answer&quot;])
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;만들어놓은 벡터를 chain으로 연동하여 답변 생성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Retrieval 적용 전 vs 후 비교, 확실히 적용 후 적합한 텍스트를 생성하는 듯!&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;Retrieval 적용 전&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;Retrieval 적용 후&lt;/span&gt; &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;'LangSmith를 테스트하고 평가하기 위해 다음과 같은 단계를 따를 수 있습니다.\n\n1. 데이터 준비: 테스트 및 평가를 위해 사용할 데이터를 수집하고 준비합니다. 이 데이터는 가능한 한 다양한 유형과 주제를 포함해야 합니다.\n\n2. 테스트 데이터 설정: 수집한 데이터에서 테스트에 사용할 부분을 선택합니다. 일반적으로 데이터 세트의 일부를 테스트 데이터로 분리하여 모델의 성능을 평가합니다.\n\n3. 모델 학습: LangSmith 모델을 학습시킵니다. 이 단계에서는 모델의 파라미터를 조정하고 최적화 알고리즘을 사용하여 모델을 학습시킵니다. 모델을 학습시킬 때는 훈련 데이터를 사용합니다.\n\n4. 모델 테스트: 학습된 모델을 사용하여 테스트 데이터를 예측합니다. 예측 결과를 테스트 데이터의 실제 결과와 비교하여 모델의 성능을 평가합니다. 이를 통해 모델이 새로운 입력에 대해 얼마나 정확하게 예측하는지 알 수 있습니다.\n\n5. 모델 평가: 모델의 성능을 평가하기 위해 다양한 지표를 사용할 수 있습니다. 일반적으로 분류 문제의 경우 정확도, 정밀도, 재현율, F1 점수 등을 사용합니다. 회귀 문제의 경우 평균 제곱 오차(MSE)나 평균 절대 오차(MAE) 등을 사용할 수 있습니다.\n\n6. 모델 개선: 모델의 성능을 향상시키기 위해 다양한 방법을 시도할 수 있습니다. 예를 들어, 모델의 구조를 변경하거나 하이퍼파라미터를 조정하여 최적의 모델을 찾을 수 있습니다.\n\n7. 추가 테스트 및 평가: 모델을 개선한 후에는 다시 테스트 데이터를 사용하여 성능을 평가합니다. 이를 통해 모델의 개선 여부를 확인할 수 있습니다.\n\n8. 반복: 필요한 경우 위 단계를 반복하여 모델을 계속 개선할 수 있습니다. 데이터의 다양성을 높이거나 모델 구조를 변경하여 더 나은 성능을 얻을 수 있습니다.\n\nLangSmith의 테스트와 평가는 이러한 단계를 따라 진행될 수 있으며, 이를 통해 모델의 성능을 정량적으로 평가하고 개선할 수 있습니다.')&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;LangSmith를 사용하여 Testing과 Evaluation을 수행하는 방법에 대해 알려드리겠습니다. LangSmith를 사용하여 프롬프트 또는 체인에 대한 변경 사항을 테스트하는 가장 기본적인 방법은 데이터 포인트를 사용하여 체인을 실행하고 출력을 시각화하는 것입니다. 여전히 기술적인 발전이 있지만, 출력물을 눈으로 확인하는 것에는 대체불가능한 것은 없습니다. 현재, 데이터 포인트 위에서 체인을 실행하는 작업은 클라이언트 측에서 수행되어야 합니다. LangSmith 클라이언트를 사용하면 데이터셋을 가져와서 체인을 실행하고 결과를 로깅하여 데이터셋과 관련된 새 프로젝트에 결과를 기록하는 것이 쉽습니다. 그런 다음 결과를 검토할 수 있습니다. 또한, 웹 앱에서 직접 피드백을 할당하고 테스트 프로젝트마다 집계 통계를 표시하여 실행에 대한 피드백을 기록하는 것도 쉽게 만들었습니다. 또한, 이러한 실행 결과를 평가하는 것도 더욱 쉽게 만들었습니다. 이를 위해 오픈 소스인 LangChain 라이브러리에 일련의 평가자를 추가했습니다. 이러한 평가자는 테스트 실행을 시작할 때 지정할 수 있으며, 테스트 실행이 완료되면 결과를 평가합니다. 솔직히 말하면, 이러한 평가자 중 대부분은 완벽하지 않습니다. 맹신해서는 안 되는 것들이라고 권장하지는 않습니다. 그러나 이러한 평가자는 살펴봐야 할 예제를 안내하는 데 유용하다고 생각합니다. 데이터 포인트의 수가 증가하고 각각을 수동으로 확인하기가 불가능해지는 경우 특히 가치가 있습니다. 인간 평가는 모델 동작에 대한 일관된 및 확장 가능한 정보를 얻는 데 도움이 되는 자동 평가 메트릭에 대한 완전한 대체물은 아직 없습니다. LangSmith는 주석 큐를 통해 실행을 수동으로 검토하고 주석을 추가하는 것을 쉽게 만들어줍니다. 이러한 큐를 사용하면 모델 유형이나 자동 평가 점수와 같은 기준에 따라 실행을 선택하고 사람에 의한 검토를 위해 큐에 추가할 수 있습니다. 리뷰어로서는 입력, 출력 및 기존 태그를 빠르게 확인한 후 자신의 피드백을 추가할 수 있습니다. 이를 통해 주관적인 품질을 평가하거나, 자동 평가된 실행의 일부를 샘플링하고 유효성을 검증하여 자동 메트릭이 여전히 신뢰할 수 있고 올바른 정보를 캡처하는지 확인하는 데 사용할 수 있습니다. 이렇게 큐를 사용하여 작성된 주석은 소스 실행에 &quot;피드백&quot;으로 할당되므로 나중에 필터링하고 분석하기 쉽습니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3) 대화형 LangChain 만들기&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Chat History를 생성하여 대화형 LangChain을 만들 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 프롬프트 양식 정의
from langchain.chains import create_history_aware_retriever
from langchain_core.prompts import MessagesPlaceholder

prompt = ChatPromptTemplate.from_messages([
    MessagesPlaceholder(variable_name=&quot;chat_history&quot;),
    (&quot;user&quot;, &quot;{input}&quot;),
    (&quot;user&quot;, &quot;Given the above conversation, generate a search query to look up in order to get information relevant to the conversation&quot;)
])
retriever_chain = create_history_aware_retriever(llm, retriever, prompt)

# Retrieval을 위한 문서 관련 추가 출력값 생성
from langchain_core.messages import HumanMessage, AIMessage

chat_history = [HumanMessage(content=&quot;Can LangSmith help test my LLM applications?&quot;), AIMessage(content=&quot;Yes!&quot;)]
retriever_chain.invoke({
    &quot;chat_history&quot;: chat_history,
    &quot;input&quot;: &quot;Tell me how&quot;
})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3LOKh/btsDUe6Wn73/KEAR40qQMiuKRhFAzbYwD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3LOKh/btsDUe6Wn73/KEAR40qQMiuKRhFAzbYwD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3LOKh/btsDUe6Wn73/KEAR40qQMiuKRhFAzbYwD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3LOKh%2FbtsDUe6Wn73%2FKEAR40qQMiuKRhFAzbYwD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;237&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;237&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;4번째 Document가 ChatGPT로 추가 생성된 Document, 이걸 또 chain으로 활용할 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 위에서 만든 추가 생성 텍스트도 같이 묶어서 chain 수행
prompt = ChatPromptTemplate.from_messages([
    (&quot;system&quot;, &quot;아래의 문맥을 바탕으로 사용자의 질문에 답변:\\n\\n{context}&quot;),
    MessagesPlaceholder(variable_name=&quot;chat_history&quot;),
    (&quot;user&quot;, &quot;{input}&quot;),
])
document_chain = create_stuff_documents_chain(llm, prompt)

retrieval_chain = create_retrieval_chain(retriever_chain, document_chain)

# 대화형으로 답변 생성
chat_history = [HumanMessage(content=&quot;내 어플리케이션을 테스트하는 것에 LangSmith를 활용할 수 있어?&quot;), AIMessage(content=&quot;네!&quot;)]
retrieval_chain.invoke({
    &quot;chat_history&quot;: chat_history,
    &quot;input&quot;: &quot;어떻게 도움이 될 수 있는지 한국어로 얘기해줘.&quot;
})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;401&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XmC9o/btsDUfY3PON/MmmuvzbVPTUJ8X4S1tZRW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XmC9o/btsDUfY3PON/MmmuvzbVPTUJ8X4S1tZRW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XmC9o/btsDUfY3PON/MmmuvzbVPTUJ8X4S1tZRW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXmC9o%2FbtsDUfY3PON%2FMmmuvzbVPTUJ8X4S1tZRW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;401&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;401&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LangSmith 문서 및 앞에서 생성한 텍스트까지 연계하여 최종 답변 생성&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4) Agent 활용 웹 서칭 기능 붙이기&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Tavily API를 활용하여 LangChain Hub에서 Agent 불러와서 기능 연동, 검색 내용을 기반으로 답변을 생성할 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# retriever 도구 세팅
from langchain.tools.retriever import create_retriever_tool
import os

retriever_tool = create_retriever_tool(
    retriever,
    &quot;langsmith_search&quot;,
    &quot;Search for information about LangSmith. For any questions about LangSmith, you must use this tool!&quot;,
)

# TAVILY API 세팅
os.environ[&quot;TAVILY_API_KEY&quot;] = &quot;...&quot;

from langchain_community.tools.tavily_search import TavilySearchResults
search = TavilySearchResults()

tools = [retriever_tool, search]&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;from langchain_openai import ChatOpenAI
from langchain import hub
from langchain.agents import create_openai_functions_agent
from langchain.agents import AgentExecutor

# 에이전트 및 프롬프트, LLM 세팅
prompt = hub.pull(&quot;hwchase17/openai-functions-agent&quot;)
llm = ChatOpenAI(model=&quot;gpt-3.5-turbo&quot;, temperature=0)
agent = create_openai_functions_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 에이전트 작업 실행(답변 생성)
agent_executor.invoke({&quot;input&quot;: &quot;어떻게 LangSmith를 활용하여 LLM 어플리케이션을 테스트할 수 있지?&quot;})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVuAXh/btsDQflxLy9/sTscLXP3w4GGca918QLPT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVuAXh/btsDQflxLy9/sTscLXP3w4GGca918QLPT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVuAXh/btsDQflxLy9/sTscLXP3w4GGca918QLPT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVuAXh%2FbtsDQflxLy9%2FsTscLXP3w4GGca918QLPT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;583&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;583&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;검색 기능을 연동하는 것은 효과적일 수 있으나, 검색된 URL이 제대로 된 정보를 가지고 있지 않은 경우의 위험성이 존재, 그리고 한국어로 질문 및 답변 유도 시 제대로 돌아가지 않는 경우도 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5) LangChain 서빙&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;서빙도 FastAPI + Uvicorn 활용해서 간단하게 수행 가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;터미널에서 python &lt;a href=&quot;http://serve.py&quot;&gt;serve.py&lt;/a&gt; 실행&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;#serve.py
from typing import List
import os

from fastapi import FastAPI
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langchain_community.document_loaders import WebBaseLoader
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.tools.retriever import create_retriever_tool
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_openai import ChatOpenAI
from langchain import hub
from langchain.agents import create_openai_functions_agent
from langchain.agents import AgentExecutor
from langchain.pydantic_v1 import BaseModel, Field
from langchain_core.messages import BaseMessage
from langserve import add_routes

# 환경 변수 설정
os.environ[&quot;OPENAI_API_KEY&quot;] = &quot;...&quot;
os.environ[&quot;TAVILY_API_KEY&quot;] = &quot;...&quot;

# 1. Retriever 생성, 웹사이트 문서로 만들고 임베딩 벡터로 변환
loader = WebBaseLoader(&quot;&amp;lt;https://docs.smith.langchain.com/overview&amp;gt;&quot;)
docs = loader.load()
text_splitter = RecursiveCharacterTextSplitter()
documents = text_splitter.split_documents(docs)
embeddings = OpenAIEmbeddings()
vector = FAISS.from_documents(documents, embeddings)
retriever = vector.as_retriever()

# 2. Retriever 툴 만들기
retriever_tool = create_retriever_tool(
    retriever,
    &quot;langsmith_search&quot;,
    &quot;Search for information about LangSmith. For any questions about LangSmith, you must use this tool!&quot;,
)

search = TavilySearchResults()
tools = [retriever_tool, search]

# 3. 웹 검색 기능이 포함된 
prompt = hub.pull(&quot;hwchase17/openai-functions-agent&quot;)
llm = ChatOpenAI(model=&quot;gpt-3.5-turbo&quot;, temperature=0)
agent = create_openai_functions_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 4. 앱 정의
app = FastAPI(
  title=&quot;LangChain Server&quot;,
  version=&quot;1.0&quot;,
  description=&quot;A simple API server using LangChain's Runnable interfaces&quot;,
)

# 5. chain 라우팅 RestAPI URL 추가

# Pydantic Schema 정의 (API 입력값)
class Input(BaseModel):
    input: str
    chat_history: List[BaseMessage] = Field(
        ...,
        extra={&quot;widget&quot;: {&quot;type&quot;: &quot;chat&quot;, &quot;input&quot;: &quot;location&quot;}},
    )

# Pydantic Schema 정의 (API 출력값)
class Output(BaseModel):
    output: str

# 라우팅 실제로 추가하기
add_routes(
    app,
    agent_executor.with_types(input_type=Input, output_type=Output),
    path=&quot;/agent&quot;,
)

# .py 파일 실행 (uvicorn)
if __name__ == &quot;__main__&quot;:
    import uvicorn

    uvicorn.run(app, host=&quot;0.0.0.0&quot;, port=8000)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;FASTAPI docs 바로 발행해 줌&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;847&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CsvET/btsDSpnBCrC/Sv8SpI8z30FO23hUNImHf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CsvET/btsDSpnBCrC/Sv8SpI8z30FO23hUNImHf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CsvET/btsDSpnBCrC/Sv8SpI8z30FO23hUNImHf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCsvET%2FbtsDSpnBCrC%2FSv8SpI8z30FO23hUNImHf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;847&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;847&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Playground 형태의 테스트 UI도 만들어줌&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;789&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pivUH/btsDQSw5uQW/wY6D1ykmki9ZEkjsMibad1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pivUH/btsDQSw5uQW/wY6D1ykmki9ZEkjsMibad1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pivUH/btsDQSw5uQW/wY6D1ykmki9ZEkjsMibad1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpivUH%2FbtsDQSw5uQW%2FwY6D1ykmki9ZEkjsMibad1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;675&quot; height=&quot;266&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;789&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1079&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xJZpj/btsDVqFQCOu/ktF5s3wuyONx7jQtEcAloK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xJZpj/btsDVqFQCOu/ktF5s3wuyONx7jQtEcAloK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xJZpj/btsDVqFQCOu/ktF5s3wuyONx7jQtEcAloK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxJZpj%2FbtsDVqFQCOu%2FktF5s3wuyONx7jQtEcAloK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;569&quot; height=&quot;307&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1079&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1&gt;4. LangChain Template 예제&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;간단한 paper 리스트 추출 template, npm으로 app 추가하는 것처럼 쉽게 할 수 있음, 구조화된 형식의 텍스트 생성 필요할 때 활용할 수 있을 것&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;단, Templates 서빙하기 전에 필요한 API key를 잘 정리해둘 것&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;// LangChain Templates 생성(도커 서빙)
pip install -U langchain-cli
langchain app new sum_app --package extraction-openai-functions
langchain serve
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따로 프론트엔드 template을 제공하지 않음. 백엔드 서빙 아키텍처 형태로 제공됨. test는 playground에서 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1886&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cx6iPo/btsDXbnO47G/l3583NO7qzzlrugm2hnJXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cx6iPo/btsDXbnO47G/l3583NO7qzzlrugm2hnJXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cx6iPo/btsDXbnO47G/l3583NO7qzzlrugm2hnJXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcx6iPo%2FbtsDXbnO47G%2Fl3583NO7qzzlrugm2hnJXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1886&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1886&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;따로 프론트엔드 template을 제공하지 않음. 백엔드 서빙 아키텍처 형태로 제공됨. test는 playground에서 가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LangChain 보유 Template 리스트&lt;/span&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://python.langchain.com/docs/templates/mongo-parent-document-retrieval&quot;&gt;mongo-parent-document-retrieval&lt;/a&gt;: ****문서를 청크 단위 분할 기법으로 Retrieval 고도화&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://python.langchain.com/docs/templates/rag-semi-structured&quot;&gt;Semi-Structured RAG&lt;/a&gt;: 텍스트와 테이블 포함 데이터 Retrieval 기능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://python.langchain.com/docs/templates/rag-timescale-hybrid-search-time&quot;&gt;Temporal RAG&lt;/a&gt;: 시간 요소가 중요한 문서(SNS 게시물, 뉴스 등) Retrieval&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://python.langchain.com/docs/templates/rag-fusion&quot;&gt;RAG-Fusion&lt;/a&gt;: 다중 쿼리를 생성한 다음 Fusion을 활용하여 Retrieval 문서 순위를 다시 지정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://python.langchain.com/docs/templates/rag-pinecone-multi-query&quot;&gt;Multi-Query Retriever&lt;/a&gt;: LLM으로 여러 쿼리를 생성하고 모든 쿼리에 대한 문서를 Retrieval&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://python.langchain.com/docs/templates/guardrails-output-parser&quot;&gt;Guardrails Output Parser&lt;/a&gt;: Guardrails-ai를 사용하여 LLM 출력을 검증&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://python.langchain.com/docs/templates/chat-bot-feedback&quot;&gt;ChatBot Feedback&lt;/a&gt;: LangSmith를 사용하여 챗봇 응답을 평가할 수 있는 기능&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그 외는 Reference의 LangChain Template 참고하시길..&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;5. 결론&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;실제 배포 환경에서는 Template 예제처럼 langchain CLI로 도커 서빙하는 것이 정석으로 보임&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;기본적으로 ChatGPT 등의 SaaS 외의 LLM 모델을 활용할 경우 웹/앱 개발 시 LangChain 프레임워크 필수&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;온프레미스 환경에서의 LangChain 구축&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;데이터 보안이나 외부망 활용이 제한되는 경우, 필수적으로 LangChain 프레임워크를 활용해야할 것으로 판단됨&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클라우드 환경에서의 LangChain 구축&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Azure 클라우드 기반으로 &lt;b&gt;&lt;b&gt;Azure Databricks&lt;/b&gt;&lt;/b&gt; 등의 다양한 기능을 활용하여 LangChain 어플리케이션을 개발할 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예시: &lt;a href=&quot;https://yolo-paper-app.azurewebsites.net/&quot;&gt;https://yolo-paper-app.azurewebsites.net/&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;멀티모달 LangChain 적용 가능성&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;LangChain은 ChatGPT4의 Vision 기술과 결합될 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이미지 생성 및 해석의 영역에서 Retreival, Agent 기능이 결합될 수 있을 것&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예시: 뉴스, 교재, 소설 등 삽화 생성, AI 기반 갤러리 도슨트 서비스 등..&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;GPT Assistants API: Playground와 API에서 LangChain의 기능들을 손쉽게 활용할 수 있도록 서비스 제공 중, ChatGPT의 기능과 최적화된 형태로 제공됨&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;향후 ChatGPT 기반 웹/앱 개발 시에는 OpenAI의 API를 사용할 것인지, LangChain 프레임워크를 활용할 것인지 결정해야 하는 부분이 존재할 것&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Reference&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://python.langchain.com/docs/get_started/introduction&quot;&gt;https://python.langchain.com/docs/get_started/introduction&lt;/a&gt;, Official Documentation&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://python.langchain.com/docs/templates/&quot;&gt;https://python.langchain.com/docs/templates/&lt;/a&gt;, LangChain Templates&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/LangChain&quot;&gt;https://en.wikipedia.org/wiki/LangChain&lt;/a&gt;, Wikipedia&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.samsungsds.com/kr/insights/what-is-langchain.html&quot;&gt;https://www.samsungsds.com/kr/insights/what-is-langchain.html&lt;/a&gt;, Samsung SDS Post&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=IZGBshGqB3g&quot;&gt;https://www.youtube.com/watch?v=IZGBshGqB3g&lt;/a&gt;, GPT4 Vision + LangChain&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기술 블로그</category>
      <category>AI</category>
      <category>deep learning</category>
      <category>LangChain</category>
      <category>LLM</category>
      <category>거대언어모델</category>
      <category>딥러닝</category>
      <category>인공지능</category>
      <author>빅웨이브 이현상</author>
      <guid isPermaLink="true">https://bigwaveai.tistory.com/76</guid>
      <comments>https://bigwaveai.tistory.com/76#entry76comment</comments>
      <pubDate>Wed, 24 Jan 2024 15:39:14 +0900</pubDate>
    </item>
    <item>
      <title>AI로 블로그 쓰기  - ChatGPT를 가장 쉽게 활용하는 방법</title>
      <link>https://bigwaveai.tistory.com/60</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;시작&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;안녕하세요! 빅웨이브의 이현상입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://bigwaveai.tistory.com/58&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;지난 포스트&lt;/a&gt;에서는 텍스트 생성 AI인 GPT 기술을 소개드리고 ChatGPT와 NaverCLOVA 테스트 내용을 간략하게 공유드렸는데요,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이번에는 본격적으로 AI를 활용하여 블로그를 작성하는 방법과 동시에,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;AI로 작성한 블로그를 같이 포스트해보고자 합니다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;거두절미하고 바로 시작하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ChatGPT 사용법&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이미 많은 분들이 ChatGPT를 사용하고 있을 것이라고 생각합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그럼에도 아직 컴퓨터나 AI 기술이 익숙하지 않으신 분들은 어디서부터 시작해야할 지 막막할 수 있겠는데요,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;오늘의 포스트에서는 최대한 쉽게 ChatGPT로 블로그를 작성하는 방식에 대해서 소개드리려고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;우선 가장 중요한 원칙은 바로 &quot;상호작용&quot;인데요,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;어렵게 생각할 필요없이 ChatGPT는 이전의 대화 내용을 기억하고 있기 때문에 원하는 수정 사항을 그대로 전달하면 끝입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;즉, 사람과 대화하듯이 지시어를 입력하면 원하는 결과에 가까운 출력물을 얻을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT를 사용하는 사이트는 아래의 링크를 참고하세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://openai.com/blog/chatgpt/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://openai.com/blog/chatgpt/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1677218701364&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;ChatGPT: Optimizing Language Models for Dialogue&quot; data-og-description=&quot;We&amp;rsquo;ve trained a model called ChatGPT which interacts in a conversational way. The dialogue format makes it possible for ChatGPT to answer followup questions, admit its mistakes, challenge incorrect premises, and reject inappropriate requests. ChatGPT is &quot; data-og-host=&quot;openai.com&quot; data-og-source-url=&quot;https://openai.com/blog/chatgpt/&quot; data-og-url=&quot;https://openai.com/blog/chatgpt/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jhqbB/hyRIrr2KFG/nHobSH44YxKkTZfokYyK3k/img.jpg?width=2047&amp;amp;height=2047&amp;amp;face=0_0_2047_2047,https://scrap.kakaocdn.net/dn/b6Afwr/hyRIp14YlW/AdW3BWRFW2ZTKcAft2ghdk/img.jpg?width=2047&amp;amp;height=2047&amp;amp;face=0_0_2047_2047&quot;&gt;&lt;a href=&quot;https://openai.com/blog/chatgpt/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://openai.com/blog/chatgpt/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jhqbB/hyRIrr2KFG/nHobSH44YxKkTZfokYyK3k/img.jpg?width=2047&amp;amp;height=2047&amp;amp;face=0_0_2047_2047,https://scrap.kakaocdn.net/dn/b6Afwr/hyRIp14YlW/AdW3BWRFW2ZTKcAft2ghdk/img.jpg?width=2047&amp;amp;height=2047&amp;amp;face=0_0_2047_2047');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;ChatGPT: Optimizing Language Models for Dialogue&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;We&amp;rsquo;ve trained a model called ChatGPT which interacts in a conversational way. The dialogue format makes it possible for ChatGPT to answer followup questions, admit its mistakes, challenge incorrect premises, and reject inappropriate requests. ChatGPT is&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;openai.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;서론 파트 작성&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;AI로 작성할 블로그 포스트의 주제는 바로 &quot;비전 분야 생성 AI&quot;입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;제가 소개할 생성 AI의 기술들인 Dalle2, Stable Diffusion2, Gen-1을 키워드화하여 ChatGPT에 입력해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;417&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpjJg5/btr0yintGyf/I52amNKn95ImoW4tk30fj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpjJg5/btr0yintGyf/I52amNKn95ImoW4tk30fj0/img.png&quot; data-alt=&quot;잘하긴 잘하는데.. 흠&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpjJg5/btr0yintGyf/I52amNKn95ImoW4tk30fj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpjJg5%2Fbtr0yintGyf%2FI52amNKn95ImoW4tk30fj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;723&quot; height=&quot;417&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;417&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;잘하긴 잘하는데.. 흠&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;꽤 고품질의 텍스트를 생성했지만, 입력값의 정보가 부족했는지 설명이 미완성이거나 부정확한 정보를 출력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;예를 들어, Gen-1은 Runway에서 개발한 Stable Diffusion 기반 영상 합성 기술입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;조금 더 정보를 추가해서 다시 입력해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;755&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxCB8q/btr0HS1mRw0/HpKvCSPiMBRx8NZynpK4w1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxCB8q/btr0HS1mRw0/HpKvCSPiMBRx8NZynpK4w1/img.png&quot; data-alt=&quot;개떡같이 말해도 찰떡같이 알아듣는 ChatGPT&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxCB8q/btr0HS1mRw0/HpKvCSPiMBRx8NZynpK4w1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxCB8q%2Fbtr0HS1mRw0%2FHpKvCSPiMBRx8NZynpK4w1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;755&quot; height=&quot;386&quot; data-origin-width=&quot;755&quot; data-origin-height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;개떡같이 말해도 찰떡같이 알아듣는 ChatGPT&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;텍스트-이미지 생성의 키워드 추가와 ()로 영상 생성 모델이라는 것을 암시적으로 표현한 결과,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;꽤나 자연스러운 블로그 서론을 작성해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;특히 재밌는 점은 ChatGPT가 Dalle2, Stable Diffusion2 버전의 모델이 이전 버전 대비 성능이 개선되었다는 사실을 매끄럽게 표현하고,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Gen-1의 경우 괄호 안에 넣은 내용을 제대로 반영했다는 점입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다만 주의할 점은&lt;b&gt; 한번 잘못된 텍스트가 이전 대화에서 나왔을 경우 뒤의 대화에서도 이상하게 생성&lt;/b&gt;하는 경향이 있어서 이상한 텍스트가 나오면 새로 챗을 쓰시길 바랍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;해당 내용은 약간의 수정을 거쳐서 다음 포스트의 텍스트로 입력했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그런데, ChatGPT가 생성한 내용을 티스토리 블로그 작성에 붙여넣기 하니까 HTML 형식 때문인지 이질적으로 표시가 되는 문제가 발생했습니다,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;899&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AHah3/btr0AxjYJ2V/VzXioi1POLUCiOKkgvE0h0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AHah3/btr0AxjYJ2V/VzXioi1POLUCiOKkgvE0h0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AHah3/btr0AxjYJ2V/VzXioi1POLUCiOKkgvE0h0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAHah3%2Fbtr0AxjYJ2V%2FVzXioi1POLUCiOKkgvE0h0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;899&quot; height=&quot;261&quot; data-origin-width=&quot;899&quot; data-origin-height=&quot;261&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이러한 경우에는 간단하게 메모장에 옮겼다가 다시 붙여넣는 방식을 활용할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;913&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDJkjw/btr0zFJmxIK/SN4UehV9efKvhcxQytwGvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDJkjw/btr0zFJmxIK/SN4UehV9efKvhcxQytwGvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDJkjw/btr0zFJmxIK/SN4UehV9efKvhcxQytwGvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDJkjw%2Fbtr0zFJmxIK%2FSN4UehV9efKvhcxQytwGvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;913&quot; height=&quot;598&quot; data-origin-width=&quot;913&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;현재 저는 실제 다음 포스트를 현재 포스트와 같이 작성하고 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;해당 포스트가 올라가는 시점에서는 다음 포스트를 같이 보실 수 있을겁니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;본론 파트 작성 - Dalle2, Stable Diffusion2, Gen-1&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이번 포스트의 흐름은 간단한 개념 소개와 흥미로운 예시를 보여주고자 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;간단한 개념 소개를 위한 텍스트 작성을 위해서 ChatGPT를 굴려보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;807&quot; data-origin-height=&quot;689&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQSfRc/btr0AM9gvrr/pV26PBPOVu5zVuAgBbzowK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQSfRc/btr0AM9gvrr/pV26PBPOVu5zVuAgBbzowK/img.png&quot; data-alt=&quot;같은 OpenAI의 서비스라 그런지 잘하는 모습!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQSfRc/btr0AM9gvrr/pV26PBPOVu5zVuAgBbzowK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQSfRc%2Fbtr0AM9gvrr%2FpV26PBPOVu5zVuAgBbzowK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;807&quot; height=&quot;689&quot; data-origin-width=&quot;807&quot; data-origin-height=&quot;689&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;같은 OpenAI의 서비스라 그런지 잘하는 모습!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;간단하게 논문 Abstract 참고해서 키워드만 부여했더니 딱 한번만에 생각보다 훨씬 정확하고 완성도 있는 형태의 블로그 본론이 작성되었습니다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;해당 내용도 팩트 체크와 약간의 수정을 거쳐서 다음 포스트에 입력했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이정도면 AI에 대한 지식이 하나도 없어도 특정 분야에 대한 지식이 있으면 충분히 활용할 수 있는 수준으로 보입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Stable Diffusion2, Gen-1에 대해서도 같은 방식으로 텍스트를 생성했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;블로그 길이가 점점 길어지다보니 내용을 축약해서 활용했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpePnp/btr0JNS16yW/jRjBhKUgcvSRNSikzzucKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpePnp/btr0JNS16yW/jRjBhKUgcvSRNSikzzucKK/img.png&quot; data-alt=&quot;뒤의 주관적인 해석 내용 빼고는 아주 훌륭!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpePnp/btr0JNS16yW/jRjBhKUgcvSRNSikzzucKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpePnp%2Fbtr0JNS16yW%2FjRjBhKUgcvSRNSikzzucKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;737&quot; height=&quot;580&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;뒤의 주관적인 해석 내용 빼고는 아주 훌륭!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;458&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLbwO6/btr01VkzPGK/6P8KmQkuKELc04C4gKtxe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLbwO6/btr01VkzPGK/6P8KmQkuKELc04C4gKtxe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLbwO6/btr01VkzPGK/6P8KmQkuKELc04C4gKtxe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLbwO6%2Fbtr01VkzPGK%2F6P8KmQkuKELc04C4gKtxe1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;728&quot; height=&quot;458&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;458&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Stable Diffusion2 설명에서는 키워드의 팩트에 따라서 다소 딱딱한 느낌의 글이 생성되었고,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Gen-1 설명에서는 그래도 AI의 사전 지식을 기반으로 맥락에 따라서 자연스러운 내용을 생성했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;마무리&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이번 포스트에서는 ChatGPT를 활용하여 직접 이미지 및 비디오 생성 AI에 대한 블로그를 작성해보았는데요,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;써보면서 느낀 점은 확실히 편하긴 하지만 팩트 체크에 있어서 잘못된 정보가 있는 것을 확인했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그렇기 때문에 나름 첨삭을 하거나, 다시 생성하는 절차를 여러 번 반복했고요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그럼에도 최근에 제가 써본 챗봇 중에서는 영어 한국어 포함 단연 성능이 압도적인 것으로 보입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://bigwaveai.tistory.com/59&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;제가 ChatGPT로 작성한 블로그&lt;/a&gt;는 해당 링크를 확인하실 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;a href=&quot;https://bigwaveai.tistory.com/59&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://bigwaveai.tistory.com/59&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1677576949240&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;이미지 생성 AI&quot; data-og-description=&quot;시작 현재 인공지능 기술은 놀라운 발전을 이루고 있습니다. 이 중에서도 최근에 등장한 텍스트-이미지 생성 AI인 Dalle2, Stable Diffusion2, 그리고 영상 생성 AI인 Gen-1은 많은 이들의 관심을 받고 있&quot; data-og-host=&quot;bigwaveai.tistory.com&quot; data-og-source-url=&quot;https://bigwaveai.tistory.com/59&quot; data-og-url=&quot;https://bigwaveai.tistory.com/59&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c0WISj/hyRMqlHHAG/GnsjJRIPwIyZWl7haJ7dF0/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/jKNXf/hyRMlkm67j/4myo5XZGDQA07FA9aSde5k/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/c5uaOy/hyRMksfEFi/yEPeAzXEhaYn1OLrLMokD0/img.png?width=1513&amp;amp;height=801&amp;amp;face=0_0_1513_801&quot;&gt;&lt;a href=&quot;https://bigwaveai.tistory.com/59&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bigwaveai.tistory.com/59&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c0WISj/hyRMqlHHAG/GnsjJRIPwIyZWl7haJ7dF0/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/jKNXf/hyRMlkm67j/4myo5XZGDQA07FA9aSde5k/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/c5uaOy/hyRMksfEFi/yEPeAzXEhaYn1OLrLMokD0/img.png?width=1513&amp;amp;height=801&amp;amp;face=0_0_1513_801');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;이미지 생성 AI&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;시작 현재 인공지능 기술은 놀라운 발전을 이루고 있습니다. 이 중에서도 최근에 등장한 텍스트-이미지 생성 AI인 Dalle2, Stable Diffusion2, 그리고 영상 생성 AI인 Gen-1은 많은 이들의 관심을 받고 있&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bigwaveai.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;여기서 AI로 블로그 글쓰기를 마무리 하는건 좀 아쉽죠?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;ChatGPT Demo를 제공하는 서비스가 퀄리티가 높긴 하지만,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이를 더욱 응용해서 활용할 수 있는 Playground를 추후 포스트에서 보여드리도록 하겠습니다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Playground는 텍스트 생성 시 세부 파라미터 설정이나 버전 관리, 등의 모든 측면에서 편의성이 확실한데요,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다음 기술 블로그의 주제로 Playground를 통해서 어떻게 더 높은 퀄리티의 블로그를 작성할 수 있는지 보여드리도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이번 포스트는 여기까지 입니다. 감사합니다!&lt;/span&gt;&lt;/p&gt;</description>
      <category>기술 블로그</category>
      <category>AI로 블로그 쓰기</category>
      <category>ChatGPT</category>
      <category>GPT</category>
      <category>GPT3</category>
      <category>playground</category>
      <author>빅웨이브 이현상</author>
      <guid isPermaLink="true">https://bigwaveai.tistory.com/60</guid>
      <comments>https://bigwaveai.tistory.com/60#entry60comment</comments>
      <pubDate>Fri, 24 Feb 2023 17:42:31 +0900</pubDate>
    </item>
  </channel>
</rss>