Skip to content

πŸ¦œπŸ’¬ LangGraph 개발자λ₯Ό μœ„ν•œ Next 기반 ν”„λ‘ νŠΈμ—”λ“œ μ›Ήμ•±

License

Notifications You must be signed in to change notification settings

teddynote-lab/agent-chat-ui

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Agent Chat UI

TeddyNote Chat

LangGraph μ—μ΄μ „νŠΈλ₯Ό μœ„ν•œ Next.js 기반 μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€. YAML 기반 섀정을 ν†΅ν•œ 높은 μ»€μŠ€ν„°λ§ˆμ΄μ§• μ˜΅μ…˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

원본 ν”„λ‘œμ νŠΈμΈ https://github.com/langchain-ai/agent-chat-ui 을 μ°Έκ³ ν•˜μ—¬ μˆ˜μ •ν•œ ν”„λ‘œμ νŠΈ μž…λ‹ˆλ‹€.

κ°œμš”

Agent Chat UIλŠ” Next.js 15둜 κ΅¬μΆ•λœ ν”„λ‘œλ•μ…˜ μˆ˜μ€€μ˜ μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€λ‘œ, LangGraph μ„œλ²„μ™€μ˜ μ›ν™œν•œ μƒν˜Έμž‘μš©μ„ μ§€μ›ν•©λ‹ˆλ‹€. YAML 기반 섀정을 ν†΅ν•œ UI μ»€μŠ€ν„°λ§ˆμ΄μ§•, 파일 μ—…λ‘œλ“œ, λŒ€ν™” 기둝 관리, μ‹€μ‹œκ°„ 슀트리밍 응닡 λ“±μ˜ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

μš”κ΅¬μ‚¬ν•­

ν”„λ‘ νŠΈμ—”λ“œ (agent-chat-ui)

  • Node.js 18.x 이상
  • npm 9.x 이상 (νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €)

λ°±μ—”λ“œ (react-agent)

  • Python 3.11 이상
  • uv (Python νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €)
  • OpenAI API ν‚€ (λ˜λŠ” λ‹€λ₯Έ LLM API ν‚€)

μ„€μΉ˜ 방법

1. μ €μž₯μ†Œ 클둠

git clone https://github.com/teddylee777/agent-chat-ui.git
cd agent-chat-ui

2. μ˜μ‘΄μ„± μ„€μΉ˜

npm install

3. LangGraph λ°±μ—”λ“œ μ„œλ²„ μ„€μ •

이 μ±„νŒ… UIλŠ” LangGraph λ°±μ—”λ“œ μ„œλ²„μ™€ μ—°κ²°ν•˜μ—¬ λ™μž‘ν•©λ‹ˆλ‹€. 둜컬 개발 ν™˜κ²½μ—μ„œ ν…ŒμŠ€νŠΈν•˜λ €λ©΄ λ¨Όμ € λ°±μ—”λ“œ μ„œλ²„λ₯Ό μ„€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

λ°±μ—”λ“œ μ„œλ²„ μ„€μΉ˜

# λ°±μ—”λ“œ μ €μž₯μ†Œ 클둠
git clone https://github.com/teddylee777/react-agent
cd react-agent

# ν™˜κ²½ λ³€μˆ˜ μ„€μ •
cp .env.example .env
# .env νŒŒμΌμ„ νŽΈμ§‘ν•˜μ—¬ ν•„μš”ν•œ API ν‚€ μ„€μ • (OPENAI_API_KEY λ“±)

# LangGraph 개발 μ„œλ²„ μ‹€ν–‰
uv run langgraph dev

λ°±μ—”λ“œ μ„œλ²„κ°€ http://localhost:2024μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€.

ν”„λ‘ νŠΈμ—”λ“œ ν™˜κ²½ λ³€μˆ˜ μ„€μ •

agent-chat-ui λ””λ ‰ν† λ¦¬λ‘œ λŒμ•„μ™€μ„œ .env νŒŒμΌμ„ μƒμ„±ν•©λ‹ˆλ‹€:

cd ../agent-chat-ui
cp .env.example .env

둜컬 κ°œλ°œμ„ μœ„ν•œ ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€:

# ν•„μˆ˜: LangGraph API μ—”λ“œν¬μΈνŠΈ (둜컬 개발용)
NEXT_PUBLIC_API_URL=http://localhost:2024

# ν•„μˆ˜: Assistant/Graph ID
NEXT_PUBLIC_ASSISTANT_ID=agent

# 선택: ν”„λ‘œλ•μ…˜ 배포용
LANGGRAPH_API_URL=https://your-deployment.langgraph.app
LANGSMITH_API_KEY=lsv2_...

μ‹€ν–‰ 방법

개발 λͺ¨λ“œ

1단계: LangGraph λ°±μ—”λ“œ μ„œλ²„ μ‹€ν–‰

λ¨Όμ € λ°±μ—”λ“œ μ„œλ²„λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€ (react-agent λ””λ ‰ν† λ¦¬μ—μ„œ):

cd react-agent
uv run langgraph dev

λ°±μ—”λ“œ μ„œλ²„κ°€ http://localhost:2024μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€.

2단계: ν”„λ‘ νŠΈμ—”λ“œ 개발 μ„œλ²„ μ‹€ν–‰

μƒˆ 터미널 창을 μ—΄μ–΄ ν”„λ‘ νŠΈμ—”λ“œ μ„œλ²„λ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€:

cd agent-chat-ui
npm run dev

ν”„λ‘ νŠΈμ—”λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ http://localhost:3000μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€.

이제 λΈŒλΌμš°μ €μ—μ„œ http://localhost:3000에 μ ‘μ†ν•˜λ©΄ LangGraph λ°±μ—”λ“œμ™€ μ—°κ²°λœ μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν”„λ‘œλ•μ…˜ λΉŒλ“œ

ν”„λ‘œλ•μ…˜ μ„œλ²„λ₯Ό λΉŒλ“œν•˜κ³  μ‹œμž‘ν•©λ‹ˆλ‹€:

npm run build
npm start

기타 λͺ…λ Ήμ–΄

# λ¦°ν„° μ‹€ν–‰
npm run lint

# λ¦°νŒ… 문제 μžλ™ μˆ˜μ •
npm run lint:fix

# Prettier둜 μ½”λ“œ ν¬λ§·νŒ…
npm run format

# μ½”λ“œ 포맷 검사
npm run format:check

μ„€μ •

μ„€μ • 파일

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ public λ””λ ‰ν† λ¦¬μ˜ YAML νŒŒμΌλ“€μ„ 톡해 μ„€μ •λ©λ‹ˆλ‹€. 이 νŒŒμΌλ“€μ€ λΈŒλžœλ”©λΆ€ν„° UI λ™μž‘κΉŒμ§€ μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€μ˜ λͺ¨λ“  츑면을 μ œμ–΄ν•©λ‹ˆλ‹€.

μ£Όμš” μ„€μ • 파일

  1. public/chat-config.yaml - μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€ 전체 μ„€μ •

    • λΈŒλžœλ”©, λ²„νŠΌ, 도ꡬ, λ©”μ‹œμ§€, μŠ€λ ˆλ“œ, ν…Œλ§ˆ, UI λ™μž‘ 등을 μ œμ–΄
  2. public/chat-openers.yaml - λŒ€ν™” μ‹œμž‘ μ˜ˆμ‹œ 질문

    • λžœλ”© νŽ˜μ΄μ§€μ— ν‘œμ‹œλ  질문 λͺ©λ‘ (μ΅œλŒ€ 4개 ꢌμž₯)

μ„€μ • μ˜΅μ…˜

πŸ“„ chat-config.yaml

Branding μ„Ήμ…˜
μ˜΅μ…˜ νƒ€μž… μ„€λͺ… μ˜ˆμ‹œ
appName string 헀더에 ν‘œμ‹œλ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 이름 "Agent Chat"
logoPath string public 디렉토리 λ‚΄ 둜고 이미지 경둜 "/logo.png"
logoWidth number 둜고 λ„ˆλΉ„(ν”½μ…€) 32
logoHeight number 둜고 높이(ν”½μ…€) 32
Buttons μ„Ήμ…˜
μ˜΅μ…˜ νƒ€μž… μ„€λͺ… κΈ°λ³Έκ°’
enableFileUpload boolean 파일 μ—…λ‘œλ“œ λ²„νŠΌ ν‘œμ‹œ/μˆ¨κΉ€ true
fileUploadText string 파일 μ—…λ‘œλ“œ λ²„νŠΌ ν…μŠ€νŠΈ "Upload PDF or Image"
submitButtonText string 전솑 λ²„νŠΌ ν…μŠ€νŠΈ "Send"
cancelButtonText string μ·¨μ†Œ λ²„νŠΌ ν…μŠ€νŠΈ "Cancel"
Tools μ„Ήμ…˜
μ˜΅μ…˜ νƒ€μž… μ„€λͺ… κΈ°λ³Έκ°’
showToolCalls boolean 기본적으둜 도ꡬ 호좜 ν‘œμ‹œ true
displayMode string "detailed" λ˜λŠ” "compact" "detailed"
enabledTools string[] ν™œμ„±ν™”ν•  도ꡬ λͺ©λ‘ (λΉ„μ–΄μžˆμœΌλ©΄ λͺ¨λ‘ ν™œμ„±ν™”) []
disabledTools string[] λΉ„ν™œμ„±ν™”ν•  도ꡬ λͺ©λ‘ []
Messages μ„Ήμ…˜
μ˜΅μ…˜ νƒ€μž… μ„€λͺ… κΈ°λ³Έκ°’
maxWidth number λ©”μ‹œμ§€ μ»¨ν…Œμ΄λ„ˆ μ΅œλŒ€ λ„ˆλΉ„(ν”½μ…€) 768
enableMarkdown boolean λ§ˆν¬λ‹€μš΄ λ Œλ”λ§ ν™œμ„±ν™” true
enableMath boolean LaTeX μˆ˜μ‹ λ Œλ”λ§ ν™œμ„±ν™” true
enableCodeHighlight boolean μ½”λ“œ ꡬ문 κ°•μ‘° ν™œμ„±ν™” true
enableTables boolean ν…Œμ΄λΈ” λ Œλ”λ§ ν™œμ„±ν™” true
Threads μ„Ήμ…˜
μ˜΅μ…˜ νƒ€μž… μ„€λͺ… κΈ°λ³Έκ°’
showHistory boolean λŒ€ν™” 기둝 μ‚¬μ΄λ“œλ°” ν‘œμ‹œ false
enableDeletion boolean λŒ€ν™” μ‚­μ œ κΈ°λŠ₯ ν—ˆμš© true
enableTitleEdit boolean λŒ€ν™” 제λͺ© λ³€κ²½ κΈ°λŠ₯ ν—ˆμš© true
autoGenerateTitles boolean λŒ€ν™” 제λͺ© μžλ™ 생성 true
Theme μ„Ήμ…˜
μ˜΅μ…˜ νƒ€μž… κ°’ κΈ°λ³Έκ°’
fontFamily string "sans", "serif", "mono" "sans"
fontSize string "small", "medium", "large" "medium"
colorScheme string "light", "dark", "auto" "light"
UI μ„Ήμ…˜
μ˜΅μ…˜ νƒ€μž… μ„€λͺ… κΈ°λ³Έκ°’
autoCollapseToolCalls boolean μ™„λ£Œ ν›„ 도ꡬ 호좜 μžλ™ μ ‘κΈ° true
chatWidth string "default" (768px) λ˜λŠ” "wide" (1280px) "default"
Features μ„Ήμ…˜
μ˜΅μ…˜ νƒ€μž… μ„€λͺ… κΈ°λ³Έκ°’
artifactViewer boolean Artifact λ·°μ–΄ ν™œμ„±ν™” true
fileUploads boolean 파일 μ—…λ‘œλ“œ ν™œμ„±ν™” true
imagePreview boolean 이미지 미리보기 ν™œμ„±ν™” true
pdfPreview boolean PDF 미리보기 ν™œμ„±ν™” true

πŸ“„ chat-openers.yaml

λŒ€ν™” μ‹œμž‘ μ˜ˆμ‹œ 질문 λͺ©λ‘μ„ μ„€μ •ν•©λ‹ˆλ‹€. λžœλ”© νŽ˜μ΄μ§€μ— λ²„νŠΌ ν˜•νƒœλ‘œ ν‘œμ‹œλ©λ‹ˆλ‹€.

μ˜΅μ…˜ νƒ€μž… μ„€λͺ…
chatOpeners string[] μ˜ˆμ‹œ 질문 λͺ©λ‘ (μ΅œλŒ€ 4개 ꢌμž₯)

μ˜ˆμ‹œ:

chatOpeners:
  - "였늘의 λ‚ μ”¨λŠ” μ–΄λ•Œ?"
  - "AI λ‰΄μŠ€ κ²€μƒ‰ν•΄μ€˜. ν‘œλ‘œ μ •λ¦¬ν•΄μ€˜."
  - "LLM λ™μž‘ 원리가 κΆκΈˆν•΄."
  - "μ—μ΄μ „νŠΈκ°€ 뭐야?"

μ„€μ • μ˜ˆμ‹œ

chat-config.yaml μ˜ˆμ‹œ

# Application branding
branding:
  appName: "ν…Œλ””λ…ΈνŠΈ μ±—"
  logoPath: "/logo.png"
  logoWidth: 32
  logoHeight: 32

# Chat interface buttons
buttons:
  enableFileUpload: true
  fileUploadText: "PDF λ˜λŠ” 이미지 μ—…λ‘œλ“œ"
  submitButtonText: "전솑"
  cancelButtonText: "μ·¨μ†Œ"

# Tool display settings
tools:
  showToolCalls: true
  displayMode: "detailed"
  enabledTools: []
  disabledTools: []

# Message display settings
messages:
  maxWidth: 768
  enableMarkdown: true
  enableMath: true
  enableCodeHighlight: true
  enableTables: true

# Thread/Conversation settings
threads:
  showHistory: false
  enableDeletion: true
  enableTitleEdit: true
  autoGenerateTitles: true

# UI Theme settings
theme:
  fontFamily: "sans"
  fontSize: "medium"
  colorScheme: "light"

# UI Behavior settings
ui:
  autoCollapseToolCalls: true
  chatWidth: "default"

# Feature flags
features:
  artifactViewer: true
  fileUploads: true
  imagePreview: true
  pdfPreview: true

chat-openers.yaml μ˜ˆμ‹œ

chatOpeners:
  - "였늘의 λ‚ μ”¨λŠ” μ–΄λ•Œ?"
  - "AI λ‰΄μŠ€ κ²€μƒ‰ν•΄μ€˜. ν‘œλ‘œ μ •λ¦¬ν•΄μ€˜."
  - "LLM λ™μž‘ 원리가 κΆκΈˆν•΄."
  - "μ—μ΄μ „νŠΈκ°€ 뭐야?"
  - "λ…ΈνŠΈλ₯Ό μ°Ύμ•„μ€˜."
  - "LangGraph에 λŒ€ν•΄ μ•Œλ €μ€˜."

μ‚¬μš©μž κ°€μ΄λ“œ μ»€μŠ€ν„°λ§ˆμ΄μ§•

전체 μ‚¬μš©μž κ°€μ΄λ“œλŠ” public/full-description.md에 μœ„μΉ˜ν•©λ‹ˆλ‹€. 이 λ§ˆν¬λ‹€μš΄ νŒŒμΌμ€ μ‚¬μš©μžκ°€ λžœλ”© νŽ˜μ΄μ§€μ—μ„œ "μžμ„Έν•œ μ„€λͺ… 보기" λ²„νŠΌμ„ 클릭할 λ•Œ ν‘œμ‹œλ©λ‹ˆλ‹€.

κ°€μ΄λ“œ μ—…λ°μ΄νŠΈ 방법

  1. public/full-description.md νŒŒμΌμ„ νŽΈμ§‘ν•©λ‹ˆλ‹€
  2. ν‘œμ€€ λ§ˆν¬λ‹€μš΄ 문법을 μ‚¬μš©ν•©λ‹ˆλ‹€
  3. νŒŒμΌμ„ μ €μž₯ν•˜λ©΄ 변경사항이 μ¦‰μ‹œ λ°˜μ˜λ©λ‹ˆλ‹€ (μž¬λΉŒλ“œ λΆˆν•„μš”)

κ°€μ΄λ“œ ꡬ쑰 ꢌμž₯사항

  • μ‹œμž‘ν•˜κΈ°: κΈ°λ³Έ μ‚¬μš© 방법
  • μ£Όμš” κΈ°λŠ₯: μƒμ„Έν•œ κΈ°λŠ₯ μ„€λͺ…
  • μ„€μ •: μ΅œμ’… μ‚¬μš©μžλ₯Ό μœ„ν•œ μ„€μ • μ˜΅μ…˜
  • 팁과 μš”λ Ή: κ³ κΈ‰ μ‚¬μš© νŒ¨ν„΄
  • 문제 ν•΄κ²°: 일반적인 문제 및 ν•΄κ²° 방법

파일 μ—…λ‘œλ“œ 지원

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λ‹€μŒ 파일 ν˜•μ‹μ„ μ§€μ›ν•©λ‹ˆλ‹€:

  • 이미지: JPEG, PNG, GIF, WebP
  • λ¬Έμ„œ: PDF

파일 μ—…λ‘œλ“œ 방법:

  • μ±„νŒ… μž…λ ₯창의 클립 μ•„μ΄μ½˜ 클릭
  • νŒŒμΌμ„ μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€λ‘œ λ“œλž˜κ·Έ μ•€ λ“œλ‘­
  • ν΄λ¦½λ³΄λ“œμ—μ„œ 이미지 λΆ™μ—¬λ„£κΈ°

ν”„λ‘œλ•μ…˜ 배포

ν”„λ‘œλ•μ…˜ ν™˜κ²½ λ³€μˆ˜

# Public λ³€μˆ˜ (ν΄λΌμ΄μ–ΈνŠΈμ— λ…ΈμΆœ)
NEXT_PUBLIC_ASSISTANT_ID=agent
NEXT_PUBLIC_API_URL=https://your-site.com/api

# Private λ³€μˆ˜ (μ„œλ²„ μΈ‘ μ „μš©)
LANGGRAPH_API_URL=https://your-agent.langgraph.app
LANGSMITH_API_KEY=lsv2_...

배포 ν”Œλž«νΌ

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λ‹€μŒ ν”Œλž«νΌμ— 배포할 수 μžˆμŠ΅λ‹ˆλ‹€:

  • Vercel: Next.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ꢌμž₯
  • Netlify: Next.js κΈ°λŠ₯ μ™„λ²½ 지원
  • Docker: μ»¨ν…Œμ΄λ„ˆν™”λœ 배포 μ˜΅μ…˜
  • 전톡적인 ν˜ΈμŠ€νŒ…: λͺ¨λ“  Node.js ν˜ΈμŠ€νŒ… μ œκ³΅μ—…μ²΄

ν”„λ‘œλ•μ…˜ λΉŒλ“œ

npm run build

이 λͺ…령은 .next 디렉토리에 μ΅œμ ν™”λœ ν”„λ‘œλ•μ…˜ λΉŒλ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

μ•„ν‚€ν…μ²˜

기술 μŠ€νƒ

  • ν”„λ ˆμž„μ›Œν¬: Next.js 15.x (React 19)
  • μŠ€νƒ€μΌλ§: Tailwind CSS 4.x
  • μƒνƒœ 관리: React Hooks + nuqs (URL μƒνƒœ)
  • UI μ»΄ν¬λ„ŒνŠΈ: Radix UI primitives
  • λ§ˆν¬λ‹€μš΄: react-markdown (remark/rehype ν”ŒλŸ¬κ·ΈμΈ)
  • μ½”λ“œ ν•˜μ΄λΌμ΄νŒ…: react-syntax-highlighter
  • μˆ˜μ‹ λ Œλ”λ§: KaTeX
  • API 톡합: LangGraph SDK

μ£Όμš” μ˜μ‘΄μ„±

  • @langchain/langgraph-sdk: LangGraph ν΄λΌμ΄μ–ΈνŠΈ 라이브러리
  • framer-motion: μ• λ‹ˆλ©”μ΄μ…˜ 라이브러리
  • next-themes: ν…Œλ§ˆ 관리
  • sonner: ν† μŠ€νŠΈ μ•Œλ¦Ό
  • js-yaml: YAML μ„€μ • νŒŒμ‹±

κ³ κΈ‰ κΈ°λŠ₯

Artifact λ Œλ”λ§

μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€λŠ” μ‚¬μ΄λ“œ νŒ¨λ„μ—μ„œ artifact (μ½”λ“œ, λ¬Έμ„œ, μ‹œκ°ν™”)λ₯Ό λ Œλ”λ§ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ArtifactλŠ” LangGraph μ„œλ²„ 응닡 메타데이터λ₯Ό 톡해 κ΄€λ¦¬λ©λ‹ˆλ‹€.

도ꡬ 호좜 κ°€μ‹œμ„±

μ‚¬μš©μžλŠ” μ±„νŒ… μž…λ ₯창의 렌치 μ•„μ΄μ½˜μ„ μ‚¬μš©ν•˜μ—¬ 도ꡬ 호좜의 κ°€μ‹œμ„±μ„ μ „ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μˆ¨κΉ€ μƒνƒœμ—μ„œλŠ” μ΅œμ’… μ‘λ‹΅λ§Œ ν‘œμ‹œλ˜μ–΄ κΉ”λ”ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

μžλ™ μ ‘κΈ° λ™μž‘

μ„€μ •μ—μ„œ autoCollapseToolCallsκ°€ ν™œμ„±ν™”λ˜λ©΄ AI 응닡이 μ™„λ£Œλœ ν›„ 도ꡬ 호좜 세뢀사항이 μžλ™μœΌλ‘œ μ ‘ν˜€ λŒ€ν™” 기둝을 κΉ”λ”ν•˜κ²Œ μœ μ§€ν•©λ‹ˆλ‹€.

λŒ€ν™” 관리

  • λŒ€ν™”λŠ” μƒμ„±λœ 제λͺ©κ³Ό ν•¨κ»˜ μžλ™μœΌλ‘œ μ €μž₯λ©λ‹ˆλ‹€
  • μ‚¬μš©μžλŠ” λŒ€ν™” 이름을 λ³€κ²½ν•˜κ±°λ‚˜ μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€
  • μ‚¬μ΄λ“œλ°”μ—μ„œ λŒ€ν™” 기둝에 λΉ λ₯΄κ²Œ μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€
  • μŠ€λ ˆλ“œ μƒνƒœλŠ” λΈŒλΌμš°μ € μ„Έμ…˜ 간에 μœ μ§€λ©λ‹ˆλ‹€

문제 ν•΄κ²°

일반적인 문제

문제: ν”„λ‘ νŠΈμ—”λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹œμž‘λ˜μ§€ μ•ŠμŒ ν•΄κ²°: Node.js 버전(18+)을 ν™•μΈν•˜κ³  npm install을 λ‹€μ‹œ μ‹€ν–‰ν•˜μ„Έμš”

문제: LangGraph λ°±μ—”λ“œ μ„œλ²„μ— μ—°κ²°ν•  수 μ—†μŒ ν•΄κ²°:

  • NEXT_PUBLIC_API_URL ν™˜κ²½ λ³€μˆ˜κ°€ http://localhost:2024둜 μ„€μ •λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ„Έμš”
  • λ°±μ—”λ“œ μ„œλ²„κ°€ μ‹€ν–‰ 쀑인지 ν™•μΈν•˜μ„Έμš” (cd react-agent && uv run langgraph dev)
  • λ°±μ—”λ“œ μ„œλ²„ ν„°λ―Έλ„μ—μ„œ μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό ν™•μΈν•˜μ„Έμš”

문제: λ°±μ—”λ“œ μ„œλ²„κ°€ μ‹€ν–‰λ˜μ§€ μ•ŠμŒ ν•΄κ²°:

  • Python 버전(3.11+)κ³Ό uvκ°€ μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ„Έμš”
  • react-agent/.env νŒŒμΌμ— ν•„μš”ν•œ API ν‚€κ°€ μ„€μ •λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ„Έμš”
  • uv sync λͺ…λ Ήμ–΄λ‘œ μ˜μ‘΄μ„±μ„ λ‹€μ‹œ μ„€μΉ˜ν•˜μ„Έμš”

문제: 파일 μ—…λ‘œλ“œκ°€ μž‘λ™ν•˜μ§€ μ•ŠμŒ ν•΄κ²°:

  • public/chat-config.yamlμ—μ„œ buttons.enableFileUpload: true λ˜λŠ” features.fileUploads: true둜 μ„€μ •λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ„Έμš”
  • μ„€μ • λ³€κ²½ ν›„ λΈŒλΌμš°μ €λ₯Ό κ°•λ ₯ μƒˆλ‘œκ³ μΉ¨ν•˜μ„Έμš”

문제: λŒ€ν™” μ‹œμž‘ μ˜ˆμ‹œκ°€ ν‘œμ‹œλ˜μ§€ μ•ŠμŒ ν•΄κ²°:

  • public/chat-openers.yaml 파일이 μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜μ„Έμš”
  • chatOpeners 배열에 μ΅œμ†Œ 1개 μ΄μƒμ˜ 질문이 μžˆλŠ”μ§€ ν™•μΈν•˜μ„Έμš”
  • λΈŒλΌμš°μ €λ₯Ό κ°•λ ₯ μƒˆλ‘œκ³ μΉ¨ν•˜μ„Έμš”

문제: μ„€μ • 변경사항이 λ°˜μ˜λ˜μ§€ μ•ŠμŒ ν•΄κ²°:

  • public/chat-config.yaml λ˜λŠ” public/chat-openers.yaml νŒŒμΌμ„ μˆ˜μ •ν•œ ν›„ λΈŒλΌμš°μ €λ₯Ό κ°•λ ₯ μƒˆλ‘œκ³ μΉ¨(Ctrl+Shift+R / Cmd+Shift+R)ν•˜μ—¬ μΊμ‹œλ₯Ό μ§€μš°μ„Έμš”
  • 개발 μ„œλ²„λ₯Ό μž¬μ‹œμž‘ν•΄λ³΄μ„Έμš”: npm run dev

λΌμ΄μ„ μŠ€

MIT License

Copyright (c) 2025 TeddyNote

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

참고 자료

About

πŸ¦œπŸ’¬ LangGraph 개발자λ₯Ό μœ„ν•œ Next 기반 ν”„λ‘ νŠΈμ—”λ“œ μ›Ήμ•±

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 95.2%
  • CSS 3.1%
  • JavaScript 1.3%
  • Makefile 0.4%