<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>개발 on Yarang's Tech Lair</title><link>https://blog.agentthread.dev/ko/tags/%EA%B0%9C%EB%B0%9C/</link><description>Recent content in 개발 on Yarang's Tech Lair</description><generator>Hugo -- gohugo.io</generator><language>ko</language><lastBuildDate>Tue, 03 Mar 2026 13:01:48 +0900</lastBuildDate><atom:link href="https://blog.agentthread.dev/ko/tags/%EA%B0%9C%EB%B0%9C/index.xml" rel="self" type="application/rss+xml"/><item><title>[blog-api-server] LLM 설정 개선 및 배포</title><link>https://blog.agentthread.dev/ko/post/blog-api-server-llm-%EC%84%A4%EC%A0%95-%EA%B0%9C%EC%84%A0-%EB%B0%8F-%EB%B0%B0%ED%8F%AC/</link><pubDate>Tue, 03 Mar 2026 13:01:48 +0900</pubDate><guid>https://blog.agentthread.dev/ko/post/blog-api-server-llm-%EC%84%A4%EC%A0%95-%EA%B0%9C%EC%84%A0-%EB%B0%8F-%EB%B0%B0%ED%8F%AC/</guid><description>&lt;h2 id="개요"&gt;개요
&lt;/h2&gt;&lt;p&gt;blog-api-server 프로젝트의 LLM 설정을 개선하고 서버에 배포했다.&lt;/p&gt;
&lt;h2 id="llm-설정-개선"&gt;LLM 설정 개선
&lt;/h2&gt;&lt;h3 id="기존-문제"&gt;기존 문제
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;여러 개의 API Key 환경 변수 (&lt;code&gt;ZAI_API_KEY&lt;/code&gt;, &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Provider 분기 로직이 복잡함&lt;/li&gt;
&lt;li&gt;모델 설정이 분산되어 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="변경-사항"&gt;변경 사항
&lt;/h3&gt;&lt;h4 id="환경-변수-단순화"&gt;환경 변수 단순화
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 기존&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ZAI_API_KEY&lt;span style="color:#f92672"&gt;=&lt;/span&gt;xxx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ANTHROPIC_API_KEY&lt;span style="color:#f92672"&gt;=&lt;/span&gt;xxx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ZAI_MODEL&lt;span style="color:#f92672"&gt;=&lt;/span&gt;gpt-4o-mini
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LLM&lt;span style="color:#f92672"&gt;=&lt;/span&gt;ZAI
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 변경 후&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LLM&lt;span style="color:#f92672"&gt;=&lt;/span&gt;ZAI &lt;span style="color:#75715e"&gt;# Provider (ZAI, OPENAI, ANTHROPIC)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LLM_API_KEY&lt;span style="color:#f92672"&gt;=&lt;/span&gt;xxx &lt;span style="color:#75715e"&gt;# 단일 API Key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LLM_MODEL&lt;span style="color:#f92672"&gt;=&lt;/span&gt;glm-4.7 &lt;span style="color:#75715e"&gt;# 기본 모델&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LLM_TIMEOUT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;120&lt;/span&gt; &lt;span style="color:#75715e"&gt;# 타임아웃 (초)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="base_url-자동-설정"&gt;BASE_URL 자동 설정
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LLM_BASE_URLS &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;ZAI&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;https://api.z.ai/api/coding/paas/v4&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;OPENAI&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;https://api.openai.com/v1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;ANTHROPIC&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;https://api.anthropic.com/v1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="코드-구조-개선"&gt;코드 구조 개선
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Translator&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;LLM 기반 번역기&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;api_key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; LLM_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;base_url &lt;span style="color:#f92672"&gt;=&lt;/span&gt; LLM_BASE_URL &lt;span style="color:#75715e"&gt;# 자동 선택&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;model &lt;span style="color:#f92672"&gt;=&lt;/span&gt; LLM_MODEL
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;timeout &lt;span style="color:#f92672"&gt;=&lt;/span&gt; LLM_TIMEOUT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="모델-설정"&gt;모델 설정
&lt;/h2&gt;&lt;h3 id="기본-모델"&gt;기본 모델
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;glm-4.7&lt;/strong&gt; (기본값)&lt;/li&gt;
&lt;li&gt;max_tokens: 8192&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="지원-모델"&gt;지원 모델
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;모델&lt;/th&gt;
					&lt;th&gt;max_tokens&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;glm-4&lt;/td&gt;
					&lt;td&gt;8192&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;glm-4.7&lt;/td&gt;
					&lt;td&gt;8192&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;gpt-4o-mini&lt;/td&gt;
					&lt;td&gt;4096&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;gpt-4o&lt;/td&gt;
					&lt;td&gt;8192&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;claude-3-5-haiku&lt;/td&gt;
					&lt;td&gt;8192&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="팀-구성"&gt;팀 구성
&lt;/h2&gt;&lt;p&gt;blog-api-server 개발 팀을 구성했다.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;역할&lt;/th&gt;
					&lt;th&gt;이름&lt;/th&gt;
					&lt;th&gt;담당&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;팀 리드&lt;/td&gt;
					&lt;td&gt;team-lead&lt;/td&gt;
					&lt;td&gt;전체 관리&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;개발자&lt;/td&gt;
					&lt;td&gt;developer&lt;/td&gt;
					&lt;td&gt;코드 작성, 기능 구현&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;배포 관리자&lt;/td&gt;
					&lt;td&gt;deployer&lt;/td&gt;
					&lt;td&gt;서버 배포, 인프라&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;모니터링&lt;/td&gt;
					&lt;td&gt;monitor&lt;/td&gt;
					&lt;td&gt;로그 분석, 성능 모니터링&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="서버-배포"&gt;서버 배포
&lt;/h2&gt;&lt;h3 id="배포-대상"&gt;배포 대상
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;서버&lt;/strong&gt;: blog.fcoinfup.com (130.162.133.47)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;경로&lt;/strong&gt;: &lt;code&gt;/var/www/blog-api&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="배포-내용"&gt;배포 내용
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;translator.py&lt;/code&gt; 업데이트&lt;/li&gt;
&lt;li&gt;systemd 서비스 재시작&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="배포-결과"&gt;배포 결과
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;● blog-api.service - Blog API Server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Active: active (running)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="다음-단계"&gt;다음 단계
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;번역 API 테스트&lt;/li&gt;
&lt;li&gt;모니터링 대시보드 구축&lt;/li&gt;
&lt;li&gt;로그 파일 롤오버 정책 적용&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;영어 버전:&lt;/strong&gt; &lt;a class="link" href="https://blog.agentthread.dev/post/2026-03-03-001-blog-api-server-llm-config-improvement-and-deployment/" &gt;English Version&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>