ใ……ใ…Žใ…‡ commited on
Commit
884f080
ยท
1 Parent(s): 48dc552

feat: replace Mermaid code with SVG architecture diagram image

Browse files
CodeWeaver/ui/app.py CHANGED
@@ -325,49 +325,16 @@ def create_demo() -> gr.Blocks:
325
 
326
  #### ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ
327
 
328
- ```mermaid
329
- graph TD
330
- %% ์Šคํƒ€์ผ ์ •์˜
331
- classDef startend fill:#f9f,stroke:#333,stroke-width:2px;
332
- classDef process fill:#e1f5fe,stroke:#0277bd,stroke-width:2px;
333
- classDef decision fill:#fff9c4,stroke:#fbc02d,stroke-width:2px;
334
- classDef subgraph_style fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px,stroke-dasharray: 5 5;
335
-
336
- START((START)):::startend --> CreatePlan[Create Plan]:::process
337
-
338
- %% Map (Fan-out) ๋‹จ๊ณ„
339
- CreatePlan --"Single (1x)"--> SQS_Wrapper
340
- CreatePlan --"Multi (Map: Nx)"--> SQS_Wrapper
341
-
342
- %% ์„œ๋ธŒ๊ทธ๋ž˜ํ”„ (๋ณต์ œ๋˜๋Š” ์˜์—ญ ํ‘œํ˜„)
343
- subgraph SQS_Wrapper ["Parallel Execution (Send API)"]
344
- direction TB
345
- SQS[Single Question Subgraph]:::subgraph_style
346
- end
347
-
348
- %% Reduce (Fan-in) ๋‹จ๊ณ„
349
- SQS_Wrapper --> Combine[Reduce: Combine Answers]:::process
350
- Combine --> END((END)):::startend
351
-
352
- %% ์„œ๋ธŒ๊ทธ๋ž˜ํ”„ ์ƒ์„ธ ๋กœ์ง
353
- subgraph "Single Question Subgraph Details"
354
- Analyze[Analyze Question]:::process
355
-
356
- Analyze -->|General Chat| DirectGen[Generate Answer]:::process
357
- Analyze -->|History Context| HistoryGen[Generate w/ History]:::process
358
- Analyze -->|Technical| CheckCache[Check Cache]:::decision
359
-
360
- CheckCache -->|Hit| ReturnCache[Return Cached Answer]:::process
361
- CheckCache -->|Miss| SearchParallel[Search: SO / GitHub / Docs]:::process
362
-
363
- SearchParallel --> Evaluate[Evaluate & Rerank]:::decision
364
-
365
- Evaluate -->|Good| FinalGen[Generate Answer]:::process
366
- Evaluate -->|Poor| Refine[Refine Query]:::process
367
- Refine --> SearchParallel
368
- end
369
- ```
370
 
 
 
 
 
 
 
 
 
371
  CodeWeaver๋Š” ๋‹จ์ˆœํ•œ LLM ํ˜ธ์ถœ์„ ๋„˜์–ด, ์Šค์Šค๋กœ ๊ณ„ํšํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” **LangGraph ๊ธฐ๋ฐ˜ ์ž์œจ ์—์ด์ „ํŠธ**์ž…๋‹ˆ๋‹ค.
372
  - **Planning & Dynamic Routing**: ์งˆ๋ฌธ ์˜๋„๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋‹จ์ˆœ ๋Œ€ํ™”, ๊ธฐ์ˆ  ์งˆ๋ฌธ, ๋‹ค์ค‘ ์งˆ๋ฌธ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ  ์ตœ์ ์˜ ๊ฒฝ๋กœ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
373
  - **Map-Reduce**: ๋ณตํ•ฉ์ ์ธ ์งˆ๋ฌธ์„ ๋…๋ฆฝ๋œ ํ•˜์œ„ ์ž‘์—…์œผ๋กœ ๋ถ„ํ•ดํ•˜์—ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ํ›„, ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค.
 
325
 
326
  #### ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ
327
 
328
+ """)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
 
330
+ # SVG ์ด๋ฏธ์ง€ ์‚ฝ์ž…
331
+ svg_path = Path(__file__).parent / "assets" / "architecture.svg"
332
+ if svg_path.exists():
333
+ gr.Image(value=str(svg_path), label="์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜", show_label=False, container=False)
334
+ else:
335
+ gr.Markdown("โš ๏ธ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.")
336
+
337
+ gr.Markdown("""
338
  CodeWeaver๋Š” ๋‹จ์ˆœํ•œ LLM ํ˜ธ์ถœ์„ ๋„˜์–ด, ์Šค์Šค๋กœ ๊ณ„ํšํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” **LangGraph ๊ธฐ๋ฐ˜ ์ž์œจ ์—์ด์ „ํŠธ**์ž…๋‹ˆ๋‹ค.
339
  - **Planning & Dynamic Routing**: ์งˆ๋ฌธ ์˜๋„๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋‹จ์ˆœ ๋Œ€ํ™”, ๊ธฐ์ˆ  ์งˆ๋ฌธ, ๋‹ค์ค‘ ์งˆ๋ฌธ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ  ์ตœ์ ์˜ ๊ฒฝ๋กœ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
340
  - **Map-Reduce**: ๋ณตํ•ฉ์ ์ธ ์งˆ๋ฌธ์„ ๋…๋ฆฝ๋œ ํ•˜์œ„ ์ž‘์—…์œผ๋กœ ๋ถ„ํ•ดํ•˜์—ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ํ›„, ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค.
CodeWeaver/ui/assets/architecture.svg ADDED