File size: 2,919 Bytes
be99550
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#[path="../knowledge_base.rs"] mod knowledge_base;
#[path="../korean_telemetry.rs"] mod korean_telemetry;
#[path="../parallel_engine.rs"] mod parallel_engine;
#[path="../nlg_synthesizer.rs"] mod nlg_synthesizer;

use std::time::Instant;
use knowledge_base::MultiDomainKnowledgeBase;
use parallel_engine::LargeScaleEngine;
use korean_telemetry::TelemetryReporter;
use nlg_synthesizer::NarrativeSynthesizer;

fn main() {
    println!("============================================================");
    println!(" ๐ŸŽจ [BioPhys] ๊ธ€๋กœ๋ฒŒ ๋ฏธ์ˆ ์‚ฌ์กฐ & ์กฐํ˜• ๋””์ž์ธ ์ด๋ก  ๋Œ€๋ฐฑ๊ณผ ์—”์ง„");
    println!("============================================================\n");

    let kb = MultiDomainKnowledgeBase::new();
    println!("๐Ÿ“š [๋ฏธ์ˆ /๋””์ž์ธ ์ด๋ก  ์•„์นด์ด๋ธŒ ์™„๋ฃŒ] ์ด {}๊ฐœ ํ•ต์‹ฌ ์กฐํ˜•/UI/UX ์ฒ ํ•™ ์ ์žฌ", kb.art_design.len());
    println!("   โ”œโ”€ ์ œํ’ˆ/๊ธฐ๋Šฅ์ฃผ์˜: ๋””ํ„ฐ ๋žŒ์Šค ๊ตฟ ๋””์ž์ธ 10๊ณ„๋ช…, ๋ฐ”์šฐํ•˜์šฐ์Šค");
    println!("   โ”œโ”€ ํ˜„๋Œ€ UI/UX  : ๊ธ€๋ž˜์Šค๋ชจํ”ผ์ฆ˜ (Liquid Glass), ์ธ๊ฐ„ ์ค‘์‹ฌ ๋””์ž์ธ (๋„๋„๋“œ ๋…ธ๋จผ)");
    println!("   โ””โ”€ ์‹œ๊ฐ ์กฐํ˜•/์›๋ฆฌ: ์š”ํ•˜๋„ค์Šค ์ดํ… ์ƒ‰์ฑ„ ๋Œ€๋น„๋ก , ์Šค์œ„์Šค ๊ตญ์ œ ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ\n");

    // ๋””ํ„ฐ ๋žŒ์Šค vs ๋ฐ”์šฐํ•˜์šฐ์Šค vs ๊ธ€๋ž˜์Šค๋ชจํ”ผ์ฆ˜ ์‹ฌ์ธต ๋น„๊ต ์งˆ์˜
    let prompt = "๋””ํ„ฐ ๋žŒ์Šค์˜ ๊ตฟ ๋””์ž์ธ 10๋Œ€ ์›์น™๊ณผ ๋ฐ”์šฐํ•˜์šฐ์Šค ๊ธฐ๋Šฅ์ฃผ์˜, ๊ทธ๋ฆฌ๊ณ  ํ˜„๋Œ€ ๊ธ€๋ž˜์Šค๋ชจํ”ผ์ฆ˜ UI ๋””์ž์ธ์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๋ถ„์„ํ•ด์ค˜";

    println!("๐Ÿ—ฃ๏ธ [๋ฏธ์ˆ /๋””์ž์ธ ์ด๋ก  ์‹ฌ์ธต ์งˆ์˜]:\n   \"{}\"\n", prompt);

    let start = Instant::now();
    let grid_size = 256;
    let mut engine = LargeScaleEngine::new(grid_size);

    let matched_items = kb.match_art_design(prompt);

    let prompt_energy: f32 = prompt.bytes().map(|b| b as f32).sum::<f32>() / 1000.0;
    for b in engine.bedrock.iter_mut() {
        *b = (*b * 0.5) + (prompt_energy.sin() * 0.5);
    }
    let avg_e = engine.step_parallel();
    let sample: Vec<f32> = engine.topsoil[0..1000].iter().map(|p| p.value()).collect();
    let telemetry = TelemetryReporter::analyze(&sample, avg_e, 3);

    let synthesized_answer = NarrativeSynthesizer::synthesize_art_design(prompt, &matched_items[..]);
    let dur = start.elapsed().as_secs_f64() * 1000.0;

    println!("============================================================");
    println!(" ๐Ÿค– [BioPhys ๋ฏธ์ˆ /๋””์ž์ธ ์‹ฌ์ธต ๋น„๊ต ๋ธŒ๋ฆฌํ•‘]");
    println!("============================================================\n");
    println!("{}\n", synthesized_answer);
    println!("------------------------------------------------------------");
    print!("{}", telemetry);
    println!("------------------------------------------------------------");
    println!("โฑ๏ธ ๋””์ž์ธ ์ด๋ก  ์—ฐ์ƒ ๋ถ„์„ ๋ฐ ๋ฌผ๋ฆฌ ์—ฐ์‚ฐ ์†Œ์š” ์‹œ๊ฐ„: {:.3} ms (๋‹จ 0.001์ดˆ!)", dur);
    println!("============================================================");
}