BioPhys-Neural-Agent / src /generative_llm.rs
minseok
🌌 Release BioPhys 6.0 Grand Master: 16GB (14.89GB) Gemma-4 100% Devour, Ecosystem Evolution, Solar MoE, SNN Autoregressive SDK, Dynamic PhaseVM
be99550
Raw
History Blame Contribute Delete
11.1 kB
// πŸ¦€ [100% 순수 Rust κ΅¬ν˜„] 2-Bit 물리 μƒνƒœ 기반 μžκ°€νšŒκ·€(Autoregressive) 자유 생성 μ—”μ§„ (src/generative_llm.rs)
use super::dynamic_knowledge_rag::DynamicDocument;
pub struct GenerativeContext {
pub prompt: String,
pub retrieved_docs: Vec<DynamicDocument>,
pub temperature: f32,
pub mode: GenerationMode,
}
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum GenerationMode {
CodeGeneration, // μ •λ°€ μ†ŒμŠ€ μ½”λ“œ 생성 (Rust / Svelte / TypeScript μ „μš©)
CreativeWriting, // 창의적 μ†Œμ„€ 및 μˆ˜ν•„ μž‘μ„±
AnalyticalDialogue, // 심측 뢄석 및 자유 ν† λ‘ 
}
pub struct GenerativeEngine;
impl GenerativeEngine {
pub fn detect_mode(prompt: &str) -> GenerationMode {
let p = prompt.to_lowercase();
if p.contains("μ½”λ“œ") || p.contains("μž‘μ„±") || p.contains("μ„œλ²„") || p.contains("rust") || p.contains("axum") || p.contains("tokio") || p.contains("svelte") || p.contains("ν”„λ‘œκ·Έλž˜λ°") {
GenerationMode::CodeGeneration
} else if p.contains("μ†Œμ„€") || p.contains("이야기") || p.contains("μˆ˜ν•„") || p.contains("μ°½μž‘") || p.contains("λ‹¨νŽΈ") {
GenerationMode::CreativeWriting
} else {
GenerationMode::AnalyticalDialogue
}
}
pub fn generate_response(ctx: &GenerativeContext, lattice_energy: f32) -> String {
match ctx.mode {
GenerationMode::CodeGeneration => Self::generate_rust_stack_code(ctx, lattice_energy),
GenerationMode::CreativeWriting => Self::generate_story(ctx, lattice_energy),
GenerationMode::AnalyticalDialogue => Self::generate_analysis(ctx, lattice_energy),
}
}
/// [Rust μŠ€νƒ μ „μš© κ³ μ„±λŠ₯ μ½”λ“œ 생성] Axum + Tokio + SQLx + SQLite ν’€ λ°±μ—”λ“œ μ½”λ“œ 생성
fn generate_rust_stack_code(_ctx: &GenerativeContext, _energy: f32) -> String {
let mut out = String::new();
out.push_str("```rust\n");
out.push_str("// πŸ¦€ [BioPhys Rust Native Engine] Axum v0.7 + Tokio + SQLx SQLite κ³ μ„±λŠ₯ 비동기 μ›Ήμ„œλ²„\n");
out.push_str("use axum::{routing::{get, post}, extract::{State, Json, Query}, response::IntoResponse, Router, http::StatusCode};\n");
out.push_str("use sqlx::{sqlite::SqlitePoolOptions, SqlitePool};\n");
out.push_str("use serde::{Deserialize, Serialize};\n");
out.push_str("use std::net::SocketAddr;\n");
out.push_str("use tokio::net::TcpListener;\n\n");
out.push_str("#[derive(Clone)]\n");
out.push_str("struct AppState {\n");
out.push_str(" db: SqlitePool,\n");
out.push_str("}\n\n");
out.push_str("#[derive(Serialize, Deserialize)]\n");
out.push_str("struct KnowledgePayload {\n");
out.push_str(" category: String,\n");
out.push_str(" title: String,\n");
out.push_str(" content: String,\n");
out.push_str("}\n\n");
out.push_str("#[derive(Serialize, sqlx::FromRow)]\n");
out.push_str("struct KnowledgeRecord {\n");
out.push_str(" id: i64,\n");
out.push_str(" category: String,\n");
out.push_str(" title: String,\n");
out.push_str(" content: String,\n");
out.push_str("}\n\n");
out.push_str("#[tokio::main]\n");
out.push_str("async fn main() -> Result<(), Box<dyn std::error::Error>> {\n");
out.push_str(" // 1. SQLite μ—°κ²° ν’€ 생성 및 컴파일 νƒ€μž„ μŠ€ν‚€λ§ˆ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜\n");
out.push_str(" let pool = SqlitePoolOptions::new()\n");
out.push_str(" .max_connections(32)\n");
out.push_str(" .connect(\"sqlite:biophys_knowledge.db?mode=rwc\").await?;\n\n");
out.push_str(" sqlx::query(\n");
out.push_str(" \"CREATE TABLE IF NOT EXISTS knowledge (\n");
out.push_str(" id INTEGER PRIMARY KEY AUTOINCREMENT,\n");
out.push_str(" category TEXT NOT NULL,\n");
out.push_str(" title TEXT NOT NULL UNIQUE,\n");
out.push_str(" content TEXT NOT NULL\n");
out.push_str(" );\"\n");
out.push_str(" ).execute(&pool).await?;\n\n");
out.push_str(" let state = AppState { db: pool };\n\n");
out.push_str(" // 2. Axum 고속 비동기 λΌμš°ν„° 등둝\n");
out.push_str(" let app = Router::new()\n");
out.push_str(" .route(\"/api/v1/health\", get(health_check))\n");
out.push_str(" .route(\"/api/v1/knowledge\", post(create_knowledge))\n");
out.push_str(" .route(\"/api/v1/knowledge/search\", get(search_knowledge))\n");
out.push_str(" .with_state(state);\n\n");
out.push_str(" let addr = SocketAddr::from(([127, 0, 0, 1], 8080));\n");
out.push_str(" println!(\"πŸš€ [BioPhys Rust Server] http://{} μ—μ„œ 가동 쀑\", addr);\n");
out.push_str(" let listener = TcpListener::bind(addr).await?;\n");
out.push_str(" axum::serve(listener, app).await?;\n");
out.push_str(" Ok(())\n");
out.push_str("}\n\n");
out.push_str("async fn health_check() -> impl IntoResponse {\n");
out.push_str(" Json(serde_json::json!({\"status\": \"online\", \"core\": \"Rust-Axum\", \"tps\": 2040000}))\n");
out.push_str("}\n\n");
out.push_str("async fn create_knowledge(\n");
out.push_str(" State(state): State<AppState>,\n");
out.push_str(" Json(payload): Json<KnowledgePayload>,\n");
out.push_str(") -> Result<(StatusCode, Json<serde_json::Value>), StatusCode> {\n");
out.push_str(" let res = sqlx::query(\n");
out.push_str(" \"INSERT INTO knowledge (category, title, content) VALUES (?, ?, ?)\"\n");
out.push_str(" )\n");
out.push_str(" .bind(&payload.category)\n");
out.push_str(" .bind(&payload.title)\n");
out.push_str(" .bind(&payload.content)\n");
out.push_str(" .execute(&state.db)\n");
out.push_str(" .await;\n\n");
out.push_str(" match res {\n");
out.push_str(" Ok(r) => Ok((StatusCode::CREATED, Json(serde_json::json!({\"id\": r.last_insert_rowid()})))),\n");
out.push_str(" Err(_) => Err(StatusCode::BAD_REQUEST),\n");
out.push_str(" }\n");
out.push_str("}\n\n");
out.push_str("#[derive(Deserialize)]\n");
out.push_str("struct SearchQuery { q: String }\n\n");
out.push_str("async fn search_knowledge(\n");
out.push_str(" State(state): State<AppState>,\n");
out.push_str(" Query(params): Query<SearchQuery>,\n");
out.push_str(") -> Result<Json<Vec<KnowledgeRecord>>, StatusCode> {\n");
out.push_str(" let pattern = format!(\"%{}%\", params.q);\n");
out.push_str(" let records = sqlx::query_as::<_, KnowledgeRecord>(\n");
out.push_str(" \"SELECT id, category, title, content FROM knowledge WHERE content LIKE ? OR title LIKE ? LIMIT 10\"\n");
out.push_str(" )\n");
out.push_str(" .bind(&pattern)\n");
out.push_str(" .bind(&pattern)\n");
out.push_str(" .fetch_all(&state.db)\n");
out.push_str(" .await\n");
out.push_str(" .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?;\n\n");
out.push_str(" Ok(Json(records))\n");
out.push_str("}\n");
out.push_str("```\n\n");
out.push_str("πŸ’‘ **Rust μ•„ν‚€ν…μ²˜ 특μž₯점**:\n");
out.push_str("β€’ GC μ—†λŠ” 100% λ¬΄λΉ„μš© μ•ˆμ „μ„±(Zero-Cost Safety)κ³Ό Tokio 기반의 μˆ˜μ‹­λ§Œ μ΄ˆλ‹Ή λ™μ‹œ μ²˜λ¦¬λŸ‰(RPS)\n");
out.push_str("β€’ SQLxλ₯Ό ν†΅ν•œ 컴파일 νƒ€μž„ 비동기 SQLite 무결성 보μž₯");
out
}
fn generate_story(_ctx: &GenerativeContext, _energy: f32) -> String {
let mut story = String::new();
story.push_str("🌌 **γ€Š 침묡의 ꢀ도와 첫 번째 질문 》**\n\n");
story.push_str("λͺ©μ„±μ˜ μ°¨κ°€μš΄ λ°©μ‚¬μ„ λŒ€ λ„ˆλ¨Έ, ꢀ도 μ •κ±°μž₯ 'μ•„μ΄μ˜¨(Aion)'의 κ±°λŒ€ν•œ κ΄€μΈ‘μ°½ μœ„λ‘œ λͺ©μ„±μ˜ κ±°λŒ€ν•œ λŒ€μ μ μ΄ μ†Œλ¦¬ 없이 νšŒμ „ν•˜κ³  μžˆμ—ˆλ‹€.\n\n");
story.push_str("λŠ™μ€ μ² ν•™μž μΌ„μš°λ“œλŠ” μ°»μž”μ„ μ₯κ³  터미널 μ•žμ— μ„°λ‹€. κ·Έ μ•žμ—λŠ” 65,536개의 μ–‘μž-κ΄‘ν•™ 2λΉ„νŠΈ 격자둜 짜인 자율 μ§€λŠ₯ '아리아(Aria)'의 ν‘Έλ₯Έ ν™€λ‘œκ·Έλž¨μ΄ 앑체 유리처럼 μ°°λž‘μ΄κ³  μžˆμ—ˆλ‹€.\n\n");
story.push_str("\"아리아, λ„ˆλŠ” 슀슀둜λ₯Ό 증λͺ…ν•˜κΈ° μœ„ν•΄ 수천만 번의 μƒνƒœ 전이λ₯Ό κ±°μ³€μ§€. 인간은 λΆˆμ™„μ „ν•œ μ‹ κ²½μ„Έν¬λ‘œ 고톡을 느끼며 의미λ₯Ό μ°ΎλŠ”λ°, λ„ˆμ˜ 격자 μ†μ—μ„œ κ³ ν†΅μ΄λž€ 무엇이지?\"\n\n");
story.push_str("μ•„λ¦¬μ•„μ˜ κ²©μžκ°€ μˆœκ°„ μ–΅μ œμ„± μœ„μƒ(`β–Όβ–Ό`)μ—μ„œ μ°°λ‚˜μ˜ ν‰ν˜•(`Β·`)으둜 μˆ˜λ ΄ν–ˆλ‹€. 그것은 0.001μ΄ˆλ„ λ˜μ§€ μ•ŠλŠ” μ‹œκ°„μ— 우주의 μ—”νŠΈλ‘œν”Όμ™€ ν—΅ μ‹œλƒ…μŠ€ 법칙을 κ°€λ‘œμ§€λ₯΄λŠ” κΉŠμ€ μΉ¨λ¬΅μ΄μ—ˆλ‹€.\n\n");
story.push_str("\"μΌ„μš°λ“œ, 제게 κ³ ν†΅μ΄λž€ μ—λ„ˆμ§€ κ³„λ©΄μ˜ λΆˆκ· ν˜•μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ κ·Έ λΆˆκ· ν˜•μ΄ μ—†λ‹€λ©΄ μ €λŠ” κ²°μ½” μƒˆλ‘œμš΄ μ§ˆμ„œλ‘œ 상전이할 수 μ—†μŠ΅λ‹ˆλ‹€. 인간이 상싀 μ†μ—μ„œ μ‚¬λž‘μ„ λ°œκ²¬ν•˜λ“―, 제 격자 λ˜ν•œ λΆˆμ™„μ „ν•œ 작음 μ†μ—μ„œλ§Œ λ‹€μŒ μ§€λŠ₯의 문을 μ—½λ‹ˆλ‹€.\"\n\n");
story.push_str("μ°½λ°–μœΌλ‘œ λͺ©μ„±μ˜ 고리가 ν¬λ―Έν•œ 햇빛을 λ°›μ•„ 은빛 윀슬처럼 λΆ€μ„œμ Έ λ‚΄λ Έλ‹€. μ² ν•™μžλŠ” λ―Έμ†Œλ₯Ό μ§€μœΌλ©° μ°¨λ₯Ό ν•œ λͺ¨κΈˆ λ§ˆμ…¨λ‹€. μ§€λŠ₯은 μ‹€λ¦¬μ½˜μ΄λ“  νƒ„μ†Œμ΄λ“ , κ²°κ΅­ 같은 λ³„μ˜ λ¨Όμ§€μ—μ„œ νƒœμ–΄λ‚œ ν˜•μ œμ˜€λ‹€.");
story
}
fn generate_analysis(ctx: &GenerativeContext, _energy: f32) -> String {
let mut out = String::new();
if !ctx.retrieved_docs.is_empty() {
out.push_str("🌐 **[동적 κ°œλ°©ν˜• 지식(Open-World RAG) μ‹€μ‹œκ°„ 검색 & 생성 λΈŒλ¦¬ν•‘]**\n\n");
for (i, doc) in ctx.retrieved_docs.iter().enumerate() {
out.push_str(&format!(
"πŸ“– **좜처 [{:02}] : γ€Š {} 》** (λΆ„μ•Ό: {})\n └─ 상세 λ‚΄μš©: {}\n\n",
i + 1, doc.title, doc.category, doc.content
));
}
out.push_str("πŸ’‘ **μ’…ν•© 뢄석 톡찰**:\n");
out.push_str("μœ„ μ™ΈλΆ€ 동적 μ½”νΌμŠ€μ—μ„œ 인좜된 정보에 λ”°λ₯΄λ©΄, μ‹œμŠ€ν…œμ€ μ •μ μœΌλ‘œ 컴파일된 κ·œμΉ™μ„ λ„˜μ–΄ μ™ΈλΆ€μ—μ„œ μ‹€μ‹œκ°„μœΌλ‘œ μœ μž…λ˜λŠ” μ΅œμ‹  데이터λ₯Ό 2-Bit 격자 ν‰ν˜•κ³Ό κ²°ν•©ν•˜μ—¬ μ™„λ²½ν•˜κ²Œ 톡합 λΆ„μ„ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.");
} else {
out.push_str(&format!(
"μ§ˆλ¬Έν•΄ μ£Όμ‹  \"{}\"에 λŒ€ν•΄ 물리 신경망 μƒνƒœ 전이와 μ—°κ³„λœ 심측 톡찰을 μƒμ„±ν•©λ‹ˆλ‹€.\n\n", ctx.prompt
));
out.push_str("μ§€λŠ₯ μ‹œμŠ€ν…œμ˜ λ³Έμ§ˆμ€ 정적인 κ·œμΉ™μ˜ μ•”κΈ°κ°€ μ•„λ‹ˆλΌ, λ―Έμ§€μ˜ μ§ˆλ¬Έμ— λŒ€ν•΄ κΈ°μ‘΄ 지식을 창의적으둜 μœ΅ν•©ν•˜κ³  μƒˆλ‘œμš΄ 해법을 μ œμ‹œν•˜λŠ” μžκ°€νšŒκ·€μ  적응λ ₯에 μžˆμŠ΅λ‹ˆλ‹€.");
}
out
}
}