ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
-430 kunlar
Postlar arxiv
1 419
ืืฉืืชื, ืืขืืชื, ืืืืชื.
ืืืื ืืฉืืืฉื ืจืง ืืืืจืื ืืื ืืืืจื ืืืื ืจืง ืืืืจืื ืืื ืงืฉื.
ืื ืืคืฉืจ ืื ืืืฉืื. ืืืื ืฆืขืืจ ืืืื ืืฉ ืืื ืฉืื ืืืฉืืืช ืขื ืืขืืื, ืืื ื ืืกืืืืช ืืื ืืืจืื ืขืืืืื ืืืขืืช ืืื ืกืืฃ.
ืืื ืืคืฉืจ ืื ืืืขืืช. ืืืขื ืฉืื ืขื ืืขืืื ืืืืกืกืช ืขื ืืืืืืช ืืืื, ื ืืกืืื ืืช, ืืกืืจืื, ืืืจืื ืฉืฉืืขืชื, ืจืืืชื ืื ืืขืืชื. ืืื ืืืชืจ ืืกืคืจืช ืขื ืืื ืื ื ืืืื ืืช ืืขืืื ืืืฉืจ ืขื ืืื ืืขืืื ืขืืื.
ืืืืืื ืืช ืืฆืืืื ืืืืขื ืืฉืื ื ืืืื ืฉืืขืืชื. ืืฉืืชื ืฉืคืจืืืงื ืืกืืื ืืืื ืืฆืืื ืืื ืืื ืื ืืื. ืืฉืืชื ืฉืืืงื ืื ืืืืฉืืื ืืืฆืื ืขืืืื ืืื ืืกืืฃ ืืงื ืืฆื ืฉื ื. ืืฉืืชื ืฉ perl ืชืืื ืฉืคืช ืืชืื ืืช ืฉื ืืขืชืื ืืืกืืฃ ืคืืืชืื ืืืชื. ืขืืฉืื ืื?
1. ืฉืื ืจืืฉืื ืืื ืืฉืื ืื ืฉืืขืืชื. ืื ืจืง ืืชืื ืืืขืืช ืืื ืื ืืืจืื. ืืืื ืืฉืืชื ืฉืืืงื ืื ืืืืฉืืื ืืืฆืื ืขืืืื ืืื ืืกืืฃ ืืงื ืืฆื ืฉื ื ืืื ื ืืืขืชื ืืืงืื ืืืฉ. ืืขื ืืื ืืื ืืขืืชื ืืืขืจืื ืฉืื ืืคื ื ืืฆื ืฉื ื.
2. ืฉืื ืฉื ื ืืื ืืฉืขืจ ืืื ืืขืืชื (ืืื ืื ื ืืจืงืืจืกืื. ืื ืืฉืขืจื ืื ืืืืื ืืืืืช ืืขืืช). ืืฉืืชื ืฉืืืงื ืื ืืืืฉืืื ืืืฆืื ืขืืืื ืืฆื ืฉื ื ืื ืคืขืืื ืงืืืืืช ืื ืื ืฉืื ืืงื; ืื ืืืื ืฉืขืืืชื ืงืืืืชื ืืืื ืืฆืขืืช ืืืืืืกืื; ืื ืืืงืื ืื ืขืืืชื ืืคื ื ืืคืืืืจืื ืืืื ืจืง ืืืจื ืืื ืื ื ืืืืข ืืื ืืื; ืื ืืขืืชืื ืืชืื ืฉืืฉืืง ืืืฆื ืืื ืขืืฉืื; ืื ืจืืืชื ืืืจืื ืฉืืฆืื ืขืืืื ืชืื ืืืืฉืืื ืืฉื ื ืฉืืคื ื ืืคืืืืจืื.
3. ืฉืื ืฉืืืฉื ืื ืืืคื ืฉืืืจืื ื ืืืื ืืขื ืืื ืื. ืคื ืื ื ืืืื ืื ืืืืื ืืื ืืืืจืื ืฉืจืืืชื ืืืฆื ืฉืื ืื ืืงืืืืช ืฉืื ืฉืืชื ืื ืืืืื ืืฉืืกืชืืืชื. ืืฉืคื ืืื "ืืฉืืชื ืฉืืืงื ืื ืืืืฉืืื ืืืฆืื ืขืืืื ืื ืืืื ืฉืขืืืชื ืงืืืืชื ืืืื ืืฆืขืืช ืืืืืืกืื" ืืืื ืืืืื ืืืกืงื ื ืฉืืฆืขืืช ืืืืืืกืื ืื ืื ืืื ืืื ืืืื ืืืื ืงื ืืืฆืื ืขืืืื, ืื ืื ืฉืืืชืจ ืกืืืจ ืฉืคืกืคืกืชื ืืฉืื ืืืืชื ืืฆืขืืช. "ืืฉืืชื ืฉืงืืืืชื ืืืื ืืฆืขืืช ืจืืืื ืืืืช ืืืืืืกืื ืืื ืืืืื ื ืืืชืจ ืืขืืืงื ืื ื ืืืื ืฉืืืง ืืืื ืืืฆืขืืช ืืื ืืื ื ืืกืืื ืืช ืืื ืื ืื ืืฉืจืืช ืื ืจืืืื ืืืืช".
ืืืืืื ืืื ืืคืงืืืืืช ืืฉืืื ืขืืืจืช ืื ืืงืืช ืฆืขื ืงืืืื ืืืืกืชืื ืืืจืช ืขื ืืขืืื. ืืฉืื ืื ืืืงืืืืช ืฉืงืืื ืคืกืคืกืชื. ืืฉื ืืช ืืช ืืืืคื ืื ืื ื ืืชืืืืก ืืกืืื ืื ืืขืืื. ืฆืขื ืงืืืื ืืืจื ืฉืืื ืื ืกืืฃ.
1 419
ืืฉืืื. ืืืืืฉ. ืืืืืื.
ืืคืืื ืื ื ืืงื ืืืื ืื ืืื ืืืืืื ืืื gpt5-mini ืื ืืงืฉ ืืื ื ืืืชืื ืืฉืื ืืืืคืืื ืืืื ืฉืื ืื ื ืืืจ ืืืืขืื ืืื ืืืชืื ืืฉืื ืืชืฉืชืืช ืืฉืืืื ืืืื ื ืืื ืืฆืืื ืืื ืจืื ืื ืืื. ืืืืืื:
1. ืืืกืฃ ืืืกื ืืคืจืืคืื ืฉืื ืืืฉ ืขืืืจ ืืชืืืช. (ืืืขืจืืช ืฉืืืจ ืืฉ ืื ืืกื ืคืจืืคืื ื flow ืฉื ืขืจืืื ืืฉืืืช ืฉื ืฉืืจืื ืืชืื ืืคืจืืคืื ืืืกืืก ืื ืชืื ืื ืืื ืื ืื ืืชืืขื ืืขืืืื ืืกืืืื ืืืกืืก ืื ืชืื ืื).
2. ืืืกืฃ ืืืกื ืืคืจืืคืื ืฉืื ืืืฉ ืขืืืจ ืชืืื ืช ืืฉืชืืฉ. ืืฉ ืืฉืืืจ ืืช ืืชืืื ื ื base64 ืืืกืืก ืื ืชืื ืื.
3. ืืชืื ืชืืืื ืจืงืข ืืืฉ ืฉืคืขื ืืืืฉ ืืงืืช ืืืืื ืฉืขืืืื ืืฉ ืชืงืฉืืจืช ืืืกืืก ืื ืชืื ืื. (ืืชื ืื ืฉืืฉ ืืืขืจืืช ืื ืื ืื ืฉืืืืข ืืืจืืฅ ืชืืืืื ืจืงืข ืืืจื ืืชืืขืืช ืื ื ืืชืืื ืชืืืืื ืจืงืข ืืืืืืื ืืื ื ืจืืฆื ืืื ืชืืืื).
4. ืืืกืฃ ืืคืชืืจ ืืืกื ืื ืืืื ืฉืืืคืก ืืืฉืชืืฉ ืืช ืืกืืกืื (ืืื ืื ืฉืืืจ ืืฉ ืคืื ืงืฆืื ืืืืคืืก ืกืืกืื ืืืขืจืืช).
ืจืื ืืื ื AI ืืืชืืืช ืงืื ืืืจ ืืฉืชืืฉืื ืืื ืื ืื ืืื. ืื ืืชื ื ืืืืื ืืื ืืื ืืช ืชืืื ืืช ืขืืืื ืืื ืืืืื ืคืฉืื ืืืืืจ ืืืชืจ ืืชื ื ืืช ืืืืง ืฉื ืืืชืืื. ืืื ืืืืืืื ืืื ืืืืื ืื ืืฆืืืืื ืืืืฆืจ ืคืืชืจืื ืืช ืืฆืืจืชืืื ืืชืฉืชืืชืืื ืืืขืืืช. ืื ืื ืืืืืื ืืืฉืื "ืืืืฅ ืืงืืคืกื" ืื ืขืืืจื ืืงืืคืกื ืืืืฆืจืช ืืช ืืืฉืืื. ืืืฆื ืื ืืืื ืื ืืคืจืืืคื ืืืคืื ืื ืืืืขืื ืืืืืช ืื ืืืื ืืืงืกื ืืื.
ืื ื ืืื Workflow ืืืืืืืช ืืขืืืื ืขื AI: ืื ืืื ืืืฉื, ืื ืืื ืืื ื ืชืฉืชืืช, AI ืืืืฉ ืคืืฆ'ืจืื ืขื ืืกืืก ืชืฉืชืืช ืื ืืื "ืื ืฆื" ืืื ืฉืืคืฉืจ ืืช ืืชืฉืชืืช, AI ื ืชืงืข ืืืชืืื ืืขืฉืืช ืฉืืืืืช, ืื ืืื ืืืฉื ืืืจืขื ื ืืช ืืชืฉืชืืช. ืื ืฉืืฉืคืจ ืืช ื Workflow ืืื ืื ืื ืืืืืื ืืืชืจ ืืืืื ืืื ืชืฉืชืืช ืงืื ืืืชืจ ืืืื - ืงืื ืืชืืขื, ืืกืืืจ, ืฉืืจืืจ ื AI ืืืื ืฉืื ืืื ืืืืฉ ืืช ืืคืืฆ'ืจ ืืื.
ื Workflow ืืืืืืืช, ืื ืงืืื ืื AI ื ืชืงืข ืืืชืืื ืืขืฉืืช ืฉืืืืืช ืืื ืื ืืื ืืื ืคืืฆ'ืจ. ืืื ืื ืืฉืื ืฉืฆืจืื ืืื ืืข ืื ืืืจืื ืืื ื ืื ืืืคืฉ ืืืื ืืืง ืืืชืจ ืฉืื ืืฆืืื ืืืชืืืจ ืขืืื ืืื ืืงืื ืฉืื ืฆืจืื "ืืฉืืืฃ ืงืฆืช ืืช ืืงืื" ืฉื ื AI ืืฉืืื ืฉืืขืืื.
ืื ืงืืื ืื AI ื ืชืงืข ืืื ืืืจืช ืืืฉืืง. ืืื ืืืืื ืืืืืงืง ืืื ืื ืืื ื AI. ืื ืงืืื ืืืืช ืื ืื ื ืคืืจืืื ืืืชืื ืชืื ืืืงืืืื ืืืืื ืืช ืืืฉืื, ืืื ืืช ืืืืืฆืจ ืืช ืืขืืื ืฉื ืืืขืจืืช ืืืชื ืื ืื ื ืืื ืื. ืืชืื ืชืื ืืืืื ืืืคืฉืื ืืช ืื ืงืืื ืืืืช ืืฆืืืืื ืืื ื.
1 419
ืืืค ืืื - ืืฆื ืกืืื ืขื opencode
ืืืืืื ืืช ืืืืืจ ืฉื Github Copilot ืืืช ืืฆื ืืกืืื ืฉืืื, ืืื ืืื ืืื ืื ืืฆืืช ืืืืจืืื ื? ืืื ืื ืืจืขืฉ ืฉื ืืื AI ืืฆืืชื ืืืื ืืื ืืืฉ ืงืกืื ืืฉืชืฃ. ืืื ื ืงืจื opencode ืืืื ืืชืืื ืืช ืฉืื ื ืืื ืืืืชื:
1. ืืชืืืจ ืืงืืคืืืืื ืื ืฉืืคืฉืจ ืืืฉืชืืฉ ืืืฉืืื 10$ ืืืืืฉ ืืงืืื ืฉืืื ืืฉืืื ืืืืืืื (ืืืืื ืื ืืืชืืืจ ื ollama ืื ืืฉ ืืื ืืืื ืืงืืื ืื ื Open Router ืื ื together ai ืขืืืจ ืขืจืืื ืขื ืงืืช ืฉื ืืืืืื ืืขื ื. ืืื ืืจืืจ ืฉืื ืืื ืืืกืืจืืื ืืจืืืืื).
2. ืขืืื ืืืืจืืื ื ืืกืื ืื ืงืืื ืงืื ืื ืงืืืงืก.
3. ืืชืืืจ ื vim ืืขืืจืช ืคืืืืื:
https://github.com/NickvanDyke/opencode.nvim?tab=readme-ov-file
ืืื ืื ืขืืื? ืืื ืชืืื ืืขืืื:
1. ืืืืืฆืช ืืคืชืืจ ืืชืื ืืื ื ืคืชื ืคืื ื ืฉืืื ืขื AI ืืกืื ืื ืชืืืช ืืฆื ืฉื ืงืืคืืืืื
2. ื ืืชื ืืฉืืื ืฉืืืืช ืขื ืืงืื, ืืืงืฉ ืืืืืฉ ืฉื ืงืืขืื ืงืื ืื ืื ืจืืคืงืืืจ ืืืื ืืืชืจ. ื opencode, ืืื ืงืืื ืงืื ืืืจ ืืืฉื ืืช ืืืืงืื ืฉืืื ืฆืจืื ืืืขืืื ืืืชื.
3. ืืืืื ืืืืืืฉ ืืืคืืงืื ืืืคืืก ืืชืืืช ืืฆื ืืช ืื ืืงืื ืฉืืื ืืืชื. ืืื ืื ืืจืื ืืื ืืฉืืื ืขืืชื ืืืื ืืื ืืงื ืื Context Window.
4. ืืคืฉืจ ืืืื ืืช ืื ืืฉืื ืืืื ืขื ืคืงืืืช undo. ืืืืืฅ ืขืืืื ืืฉืืืจ ืืื ื git ืืฉื AI ืืฆืจ ืืฉืื ืฉืืชื ืืืืืื.
ืฉื ื ืืืจืื ืฉืขืืืื ืื ืืฆืืชื (ืืืื ืขืืืื ืืื) ืื ืืื ืืืจืฆืื ืืืืืืืืช ืขื ืืื ืืกืื ืื aider ืฉืื ืฉืื ืื ืืืืืืืืช ื ืื ืก ืืงืืืื ืืืคืฉืจืืช ืืขืจืื ืืืืขืืช ืืฉื ืืช ืืื ืื ืืื ืืช ืืฉืืื ืืืืืื ืืืจ. ืื ืืคืฉืจ ืืืฉืชืืฉ ื undo ืขื ืฉืืืืขืื ืืืืืขื ืืืฉื ื ืฉืจืืฆืื ืืขืจืื ืืื ืืฉื ืืช ืืืชื ืืื ืื ืงืฆืช ืคืืืช ื ืื ืืืคืชืืจ ืืขืจืืื ืฉื VS Code.
1 419
ืฉืื reasoning ื Structured Output
ืฉืืื ืื ืืงืืืก ืืื ืืชืื ืืฃ ืชืืขืื ืฉื openai ืฉืืชืืจ ืชืฉืืื ืฉื ืกืืื ืฉืืืืง ืื ืืืงืฉื ืืื ื ืขืืจื ืืฉืืขืืจื ืืืช ืืืฉืืื:
class MathHomeworkOutput(BaseModel):
is_math_homework: bool
reasoning: str
guardrail_agent = Agent(
name="Guardrail check",
instructions="Check if the user is asking you to do their math homework.",
output_type=MathHomeworkOutput,
)
ืงืื ืืืืืื ืืืื ืื ืืืื ืฉืื ืืชืืืกืืช ืืืืืข ืฉื ืืชื ืืชืื reasoning. ืื ืื ืืืืงืื ืื is_math_homework ืืื ืืืืชื, ืืื reasoning? ืืฃ ืืื ืื ืืกืชืื ืขืืื.
ืื ืืื ืืื ืฉื? ืฉืืืฉ ืกืืืืช ืืฉืืืืช ืฉืื ืื ื ืจืืืชื ืืขืืืื ืขื ืกืืื ืื:
1. ืื ืื ืื Structured Output ืขืืืื ืื ืขืืื ืืกืคืืง ืืื. ืกืืื ืื ืืคืขืืื ืื ืืฆืืืืื ืืืืื ืืื ืืงืกื ืืืคืฉื ืืืื ืืงืฉืืช ืืื ืฉืื reasoning ืืืืืืช ืคืฉืื ืืืืชืงืข.
2. ืืืื ืืช - ืืฉืื ื ืืืงืฉ ื LLM ืืกืืจ ืืื ืืื ืขืฉื ืืฉืื ืื ื ืืงืื ืชืฉืืืืช ืืืืืช ืืืืื ืืช ืืืชืจ.
3. ืชืืขืื - ืืฉืงืืจืืื ืืืืื ืืขืืืจืื ืขื ืชืฉืืืืช ืฉื ืกืืื ืื ืืื ืืืืื ืื ืงืจื ืืชืืื ืืช ืฉืื reasoning ืืืื ืืฉืงืฃ ืื ื ืื ืืจื ืืกืืื ืืืืืืจ ืชืฉืืื ืฉืื ืฆืืคืื ื ืื ืืื ืืชืช ืื ื ืืช ืืืืืข ืืชืงื ืื ืืฉืคืจ ืืช ืืงืื ืฉืื ื.
ืืืืค ืืกืืื - ื ืืื ืืืืื Structured Output ืื ืืืืืง ืืืืื ืืคืืฆ'ืจ ืืกืื "ืืฉืืื ืืืคืืืืืช" ืฉืืืืืฉ ืืช ืืคืขืจ ืืื ืืืืืค ืกืืื AI ืืกืืคืืจ ืืืืืชื ืฉืืื ืืืช ืืงืืฉื ืืคืชืืจ ืืขืืืช ืฉื LLM-ืื ืืืืฆืขืืช ืื ืืกื. ืืฉืืื ืฉืื ืืขืืื openai ืื ื ืฉืืืช retry ืืชืื ื API ืฉืืื ืื ืฉืืฉืื ืื ื ืืืงืฉืื ืืืืข ืืืื ื ืื API ืืขืฆื OpenAI ืคืื ืื ืืืืื ืฉืื ืืฉืื ืขื ืฉืืื ืืกืืื ืืืืืืจ ืืช ืืืืืข ืืคื ืืืื ื ืฉืืขืืจื ื. ืืคืืชืจืื ืืื ืืกื ืืื ื ืฉืืข ืืื ืขื ืื ืืืจ ืืื ืืื ืชืืื ืืื ืื ืขืืื, ืืืืื ืืฉืชืืฉืื ืืคืืชืื ืืืืื ืืื ืฉืื reasoning (ืืื ืื ืื ืชืืื ืขืืื). ืืฉ ืื ืืืจ ืฉืชื ืืขืจืืืช ืฉืืืฆืืชื ื Structured Output ืืืขืืจืชื ืืงืจืืื ืจืืืื ืืกืืื ืืคืืขื ืื ืืื ื ืฉื ืืคืื ืืืฉืชืืื ืืืขืืจ ืฉืืคืจ ืืฉืืขืืชืืช ืืช ืืชืืฆืืืช ืืื ืืืคืฉืจ ืื ืืืืื ืืืืืืื.1 419
ืืืจื ืืืืช ืืกืคืจ. ืืืฃ. ืืืืืื ืชืื ืืช. AI.
ืืจืื ื ืืฉืืื ืืืื ืืืืื ืืืื ืืจืืฉืื ืืืืืืืื. ื ื ืกื ืืืืจ ืืืชื ืืื. ืืืชืจ ืฉืืืืช ืืชืฉืืืืช ืืืื ืืื ืืืื ืื ืืชืงืืคื.
ืืืจื ืืืืืืืื
ืื ื ืืืืจ ืืช ืืืื ืืืฃ ืืื ืืกืืฃ ืืื ืืืืืืื. ืื ื ืืืืจ ืืช ืขืฆืื ืืืฉื ืืืืชื, ืืงืฉืื ืืืืชื. ืืืช ืืกืคืจ ื ืืฆืจ ืืื ืืืื ืื ืฉืื ืืืื ืฆืขืืจ "ืืื ืขืืฉืื ืืืจืื ืืื", ืืื ืืืงืฉืื ืืกืืืืช, ืืื ืืขืฉืืช ืืืจืื ืื ืื ืืชื ืื ืืืื ืืช ืืืืจื ืฉืืื, ืื ืื ืืืข ืืืื ืืืข ืขืืืจ ืืืืืืจ ืืฆืขืืจ, ืืืื ืืชืืืื, ืืืืจื ืืืื.
ืื ืื ืงืืื ืืืชืจ.
ืืืจื ืฉืจืืฆื ืืืฆืืื ืืืื ืฆืจืื ืืืืืช ืืืชืจ ืืขื ืืื ื ChatGPT. ืฆืจืื ืืืฉืงืืข ืืืืืืืฆืื ืืฆืจืื ืืืืืฃ ืืช ืืชืืืืืื ืฉืื ืืืืื. ืืืืจ ืืืืืื ืืืื ืืืืื. ืืชื ืกืคืจ ืื ืกืื ืืืกืชืื ืืืชืช ืืชืืืืืื ืืืชืื ืขืืืืืช ืืืืงืืจ ืืขืฆืื. ืืคืขืืื ืื ืขืืื, ืืจืื ืื. ืืืืจืื ืืขืฆืื ืื ืืืื ืื ืื ืืฉืื ืืืืืื ืืืืข ืืชืืคื. ืืืืืื ืืืืขืื ืืืฉืชืืฉ ืืืื AI ืืื ืืืชืจ ืืืืืจืื ืฉืืื. ืืืืืื ืืืืขืื ืืชืช ื AI ืืืชืื ืืช ืืขืืืื ืืฉืืืื. ืืืืืื ืืืื ืื ืืื ืืจืืืช ืืช ืืืขืจืืช ืื ืื ืืืื ืื ืฉืืืขืจืืช ืืจืื ืืืชื.
ืืืชืืจ ืฉื ืืชื ืกืคืจ ืืื ืืืืืจ ืืื ืืจื ืืืกืืกืืช, ืืืื ืืช ืืฆืขืืจืื "ืืื ืขืืฉืื ืืืจืื ืืื". ืื ืืกืืกืื ืืื ืืื ืืจืืืื ืฉื ืืืขืจืืช. ืื ืื ื ืจืืืงืื ืฉื ืืช ืืืจ ืืฉื.
ืืืืืื ืชืื ืืช
ืชืงืืคื ืืจืืื ืืืชืืจ ืืืืืืื ืชืื ืืช ืืื ืฉืชืืื ืืช ื ืืื ืืกืืืืืช ืืื. ืืื ืืืื ืืจื ืืืชืื ืืฉืืง ืืืจืืก ืฉืืื ืืื ื ืืฉืืง ืื ืื ืืื ืืชืจืื ืืฉืืง ืคืืจืื ืืื. ืืคืขืจ ืืืื ืืื. ืืื ืืืืข AI.
ืขืืฉืื ืืืชื ืืื ืืืื ืืืืช ื base44 ืืืื ืืช "ืืฉืื". ืื ืืืื ืืืืืช ืืฉืืง ืกื ืืืง ืื ืืืจืืก ืื ืชืืื ืช ืฆืืืจ ืื ืืชืจ ืืืืช ืืกืคืจ ืื ืืขืจืืช ืืฃ ืงืฉืจ ืืืืชื. ืืื ืื ืื ืืืืฉืื ืืฆืืืช ืืืชืื ืืฉืืง ืฉืืืฃ ืืฉืืง ืื ืขืืืื ืื ืืืืช ืืืื ืขื ืชืื ืืช. ืงืจืืชื ืกืงืืจื ืฉื ืืชืื ืช ืฆืขืืจ ืฉืืกืคืจ ืฉืืื ืืืื ืชืื ืืช ืืืจ ืฉืืืฉื ืืืืฉืื ืืืฆืืื ืืื ืืช ืืขืจืืืช ืืื ื Django ืืขืืจืช AI ืืืจืืืฉ ืฉืืื ืืืื ืืช ืื ืืงืื ืฉืืชืื ืฉื ืืืืื ืงืฆืช ืืฉื ืืช ืืืจืื, ืืื ืื ืืืืข ืืื ืืืชืืื ืืฉืื ืืืคืก ืืืืงืฉ ืขืฆืืช. ืืื ืื ืฆืขื ืจืืฉืื ื ืืื ืืืืืืื ืชืื ืืช? ืื ื ืื ืืืื.
ืื ืืชื ืกืคืจ ืฆืจืืืื ืืืื "ืืื ืขืืฉืื ืืืจืื ืืื" ืื ืืชื ืกืคืจ ืืชืื ืืช ืฆืจืืืื ืืืชืืงื ืืืฉืืื, ืืืื ืช ืืขืจืืืช ืืืจืืืืช, ืืืืืืจืืชืืื, ืืืจืืืืงืืืจื. ืืื ืืืช ืกืื ืืจื ืฉื ืืื ื ืฉืืืืช ืืชืืื ืืจืืช ืืืื ื ืื ืืจืฉืช ืืืคืชืืื ืืขืชืื. ืชืงืืคื ืืจืืื ืฉืื ืขื ื ืืชืื ืชืื ืฆืขืืจืื ืฉืืคืฉืจ ืืืชืื ืืขืจืืืช "ืืืจ" ื"ืืงืืืช" ืขื ืืคืจืืืืืืจืง ืื ืืื. ืืืคื ื ืืืื ืฉื ืชืื ืืช ืืืืืืื ืืื ืืืืื ืขืงืจืื ืืช ืฉื ืชืื ืืช ืชืื ืืื ืื ืืืช ืืืจืื ืืคืื ืื ืืืคืืื. ืืืื ืืืืข ืืืื ืืืคืจืื, ืืฉืื ืื ืฉืืคืฉืจ ืืื ืืช ืืืฆืจื ืชืืื ื ืืืืืืื ืขื AI ืืื ืืื ืืืืื ืชืื ืืช ืืืื ืืืชืืื ืืจืขืืื ืืช ืคืฉืืืื ืืืืืจ ืืืชื ืืืืจืื ืืืืืื ืืืชืจ. ืืืื ืื ืื ื ืฆืจืืืื ืืืืืจ ื Lisp.
ืืื ื ืืืืืืชืืช
"ืื ืืืืื ืื ืื? ืชืฉืืื ืืช ื Chat"
ืื ืฉืืื ืขื ืืื ื ืืืืืืชืืช ืืื ืืืขืื. ืืืื ืฉืคื ืืืื ืื "ืืืฉื". ืืืืืข ืฉืืื ืืืคืืก ืื ืืืื ืืื ืชืืื ืงืืืจื ืื. ืืฉืืื ืืช ืืฆ'ื ืื ืืืืฆื ืืืื ืืื ืืืืช ืืงืจืื ืืงืคื. ืื ื ืืืืื ืืืืข ืืืื ืฉืจืขืืื ืืช ืืืจืืืื ืื ืืืื ืขื ืืกืืก ืจืขืืื ืืช ืคืฉืืืื ืืืชืจ, ืืืื ืืืืืืช ืืืืขืื ืื ืืืกืืจืื ืืคืจืืืืืืช. ืื ื ืืืืื ื ChatGPT ืื ืืื ืืืชื ืืช "ืืชืฉืืืืช ืื ืืื ืืช". ืืื ืื ืฉืืืช ืืชืฉืืืืช ืื ืืื ืืช ืืื ืืืื ื ืฉืืืืื ืืืืืืืื? ืืื ืื ื ืืืื ืชืืืื ืืืช ืกืคืจ ืืฉืื ื ืืืืจ ืื ืืฉืืื ืืช ื Chat?
ืืชื ืกืคืจ ืฆืจืืืื ืืืื ืืืืื ืฆืขืืจืื "ืืื ืขืืฉืื ืืืจืื ืืื". ืืืงืื ืื ืื ืื ื ืืจืืืื ืืช ืืฉืื ืืื ืกืื ืืืื ืืืชื ืืื ืืขืืืจ ืืืื ืฉืืฃ ืืื ืื ืฆืจืื. ืืืจืื, ืืืื ื ื ืฆื ืืช ืืืื ืืจืืฉืื ืืืืืืืื ืื ืืืจ ืขื ืืืืืื ืขื ืืืคืืช ืืืืืข, ืขื ืืืื ืืช ืืืืข, ืขื ืืืืื ืืื ืขืืืืืช ืืืขืืช, ืขื ืืืืื ืืืคืฉ ืืช ืืืืช, ืืืืื ืกืคืง, ืืืืฉ ืืขื, ืืืืจ ืจืขืืื ืืช ืคืฉืืืื ืืชืืืืจืืืช ืืืจืืืืช. ื ืืืจ ืขื ืืื ืืืื ืฉืคื ืืืื ืขืืื, ืืืืคื ื Chat ืืืงื ืืช ืืืืืข, ืื ืืืื ืืช ื Chat. ื ืจืื ืืื ืืื ื ืืกืื ืฉืื ื ืฉื ืืฉืืื ืืืื ืืืืฆืจ ืชืฉืืื ืฉืื ื ืืืืจื.
ืื ืืื ืฆืจืืืื ืืงืจืื ืืื "ืืืื ืช ืืฆืืจืช ืืงืกืืื".
1 419
ืฉื ื ืืชืืจืื ืืืฉืื ืืืชืืืช ืกืืื ื AI
ืืืืช ืืืืืื ืฉืคื ืืื ื ืืืจืื ืืกืืืื ืืืื ื ืฆืคืืืื ืืคืชืืื ืฉืืืชืืื ืกืืื ื AI ืฆืจืืืื ืืืชืืืื ืขื ืฉื ื ืืชืืจืื ืืืืืืืื ืืืขืจืืืช ืืื:
ืืจืืฉืื ืืื ืืชืืืช ืืคืจืืืคืืื. ืื ืื ื ืจืืืืื ืืืชืื "ืงืื" ืืืืืจ ืืงืกื ืืฉืคื ืคืืจืืืืช ืืืชื ืื ื ืืชื ืืคืจืฉ ืืืกืคืจ ืืจืืื ืืืจืฆื ืฉืื ืืืจืืช ืืืืฉื ืืืฆืข ืคืขืืืืช ืืคื ืืกืืจ ืฉืงืืขื ื. ืืืชืืืช ืกืืื ืื ืืกืฃ ืืงืื ืื ืื ื ืืืชืืื "ืคืจืืืคื" ืฉืื ืื ืืืืช ืืืืืฆืืช ืืืืชื ืืืื ื ืื ืืืจืื ืืกืืืช. ืืคืขืืื ื AI ืืงืฉืื ืืื ืืื ืฉืื ื, ืืคืขืืื ืืชืขืื, ืืคืขืืื ืืืชืงืข. ืคืจืืืคื ืืื ืื ืงืื ืืื ืืื ืื ืื ืืงืกื ืฉืืืฆื ืืืฉืชืืฉ.
ืคืจืืืคื ืืื ืกืื ืฉื ืงืื: ืืืจื ืฉืื ืื ืคืจืืืคื ืฆืจืื ืืืจืืฅ ืืืืฉ ืืช ืื ืืืืืงืืช, ืื ืื ื ืืฉืคืจืื ืคืจืืืคืืื ืืืฉืืืืืคืื ืืืื ืฆืจืื ืืขืืื ืืช ืื ืืคืจืืืคืืื ืฉืื ื (ืืืืื ืืืืคื ืื ืื ืื ื ืฆืจืืืื ืืฉืืจื ืงืื ืืฉืื ืื ื ืืืืืคืื ืคืจืืืืืืจืง ืื ืืืืื ืื ืืืขืจืืช ืืคืขืื ืืืจืช).
ืืฆื ืฉื ื ืื ืื ืงืื ืืื ืฉืื ืื ื ืจืืืืื ืืืชืื: ืคืจืืืคื ืืื ืืืื ืืืืืืืช ืืขืืื ืืชืืื, ืืืื ืื ื ืืฉืชืฃ ืืช ืื ืืื ืืืืฆืจ ืืืชืืืช ืืคืจืืืคืืื ืืืืื ืืืืื ืืื ืืืื ืืื ืฉืคืจืืืคื ืื ืืืื ืืืืืฉื. ืื ืืฉื ื ืื ื ืืงืฉ ืชืืื ื ืงืื ืืืืืื ืืฉืื.
ืืืื ืฉื ื ืืื ืืืืืงืืช. ืื ืื ื ืจืืืืื ืื ืกืืช ืืืจืืฅ ืืช ืืงืื ืฉืืชืื ื ืืืจืืืช ืื ืงืืจื. ืืืืืื ืืืช ืืจืืฆืื ืืช ืืงืื ืืืื ืกืืืืืช ืืืฉื ืืืื ืืคืืคื ืื. ืืืชืืืช ืกืืื ื AI ืื ื ืืืฆื ืฉืืืจื ืื ืฉืื ืื ืื ื ืฆืจืื ืืืืืง ืืช ืืืชื ืืืจ 4-5 ืคืขืืื ืื ืืืฉืคืขื ืืื ืกืืืืกืืืช ืืื ืชืืื ื ืจืื ืืช ืืฉืื ืื ืืืคืขืื ืจืืฉืื ื. ืื ืืืืงืืช ืืืืืืืืืช ืืืคืืืช ืืืืืช ืคืืืช ืืืื ืืช - ืื ืืืืืงืืช ืืืืื ืื ื ืืฉืชืืฉ ืืชืฉืืืืช ืืืื ืดืฉืืืจืืชืด ืจืง ืืื ืืจืืืช ืืื ืืงืื ืฉืื ืืชื ืื, ืืื ืืืืืงืืช ืงืฆื ืืงืฆื ืงืฉื ืืืืื ืื ืื "ืืฉืืื ืืืืืงื". ืืฉืชืืฉืื ืฉืืืืจืื ืขื AI ืจืืืืื ืืื ืฉืืฉืืื ืืืืืช ืืืงืื ืืืจ ืื ืคืขื ืืืืื ืื ืืืืื ืืช ืืืจื ืืืคืชืขื. ืืื ืื ื ืขืืืื ืคืจืืืืืืจืงืื ืืืชืืืช ืืืืงืืช ืฉืืืืขืื ืืืืื ืืช ืื ืืืืคื ืืืื.
1 419
encoded.map { |token| inv[token] }.join
end
class BytePairHash
attr_accessor :vocab, :maxlen
def initialize
@maxlen = 1
@vocab = (0..255).map(&:chr).each_with_index.to_a.to_h
end
def size
vocab.size
end
def inverted
vocab.invert
end
def encode_next_token(text)
maxlen
.downto(0)
.find { |l| vocab.key?(text[...l]) }
.then { |l| text[...l] }
.then { |token| [vocab[token], text[token.length..]] }
end
def add_pair(pair)
reverse_lookup = @vocab.invert
new_token = reverse_lookup[pair[0]] + reverse_lookup[pair[1]]
@maxlen = [@maxlen, new_token.length].max
@vocab[new_token] = @vocab.values.max + 1
[pair, @vocab[new_token]]
end
end
class BPEHashBuilder
attr_reader :bpe_hash
def initialize(bpe_hash)
@bpe_hash = bpe_hash
end
def extend_vocabulary(tokens)
pair = tokens
.each_cons(2)
.tally
.max_by { |(_, c)| c }
.then { |(v, c)| c > 1 ? v : nil }
bpe_hash.add_pair(pair) unless pair.nil?
end
end
end
def replace_all(tokens, new_pair, new_token)
loop do
index = tokens.each_cons(2).find_index(new_pair)
break unless index
tokens[index..index+1] = new_token
end
end
vocab = Tokenizer::BytePairHash.new
builder = Tokenizer::BPEHashBuilder.new(vocab)
text = File.read('the-verdict.txt')
tokens = Tokenizer.encode(text, vocab)
loop do
new_pair, new_token = builder.extend_vocabulary(tokens)
break if new_pair.nil?
replace_all(tokens, new_pair, new_token)
end
encoded = Tokenizer.encode('hello world', vocab)
pp encoded
pp Tokenizer.decode(encoded, vocab)
ืจืืฆืื ืืฉืืื ืืืฉืืง ืืืืฉ ืืฉืคื ืฉืืชื ืืืืืื? ืื ืชืชืืืืฉื ืืฉืชืคื ืืชืืืืืช ืืช ืืืืืืฉ ืฉืืชืืชื ืื ื ืืฉืื ืืจืืืช ืืืืื ืฉืชืืืื ืืืชืืืื.1 419
ืื ืื Byte Pair Encoder
ืื ืื ื ืืืืขืื ืฉืืืื ืฉืคื ืืืื ืืื ืืกื ืืื ืืืื ื ืฉืืืืขืช ืื ืืฉ ืืฆืืจื ืืืื ืืืื ืื ื"ืืืื" ืืืื ืืืงืกื. ืืื ืืืงืฉืจ ืฉื ืืืื ืืฉืคื ืื ืื ืืืื ืืืืจ "ืืืื"? ืืืื ืืืืื ืืืืข ืืืื ืืืืื ืืฉ ืืขืืื? ืืืื ืืื ืื ืืชืืืื ืืฉืื ื ืืืชื ืจืง ืืืง ืืืืื ืื ืืืื ืฉืื ืงืืืืช? ืืื ืื ืืืชื ืืืงื ืื ืฉืขืืืจื ืื ืื ื ืืฉืืืื ืืขืืืื ืขื ืืืืื ืืฉืคื?
ืืืืืื ืืืกืืกืืช ืืืชื ืืืื ืฉืคื ืืืื ืขืืื ื ืงืจืืช ืืืงื ืืืคืืกื ืื ืืกืืืจ ืื ืื Byte Pair Encoder ืืื ื ืืชืื ืืื ื Ruby ืืื ืืืืื ืืื LLM ืจืืื ืืช ืืขืืื.
ืืืืจ ืืจืืฉืื ืฉืืชื ืฆืจืืืื ืืืขืช ืืฉืืืฉืืื ืขื ืืื LLM ืจืืื ืืช ืืขืืื ืืื ืฉ LLM ืืื ืืืื ื ืกืืืืกืืืช ืืืื ืืฉืืื "ืื ืืฉ" ืื ืืืืื ืืืื ืืื ืฆืจืื ืงืืื ืืืคืื ืืช ืืืืืื ืืืกืคืจืื ืจืฆืืคืื. ืืชืืืื ืฉืื ืื ืื ื ืืืคืืื ืืืืื ืืืกืคืจืื ื ืงืจื Tokenization ืืื ืืกืคืจ ืฉืืชืงืื ื ืงืจื ืืืงื.
ืื ืืื ืืืคืืื ืืฉืคื ืืืืกืฃ ืฉื ืืกืคืจืื? ืจืขืืื ืจืืฉืื ืฉืื ืขืืื ืื ืื ืืื ืืื ืืจืืฅ ืขื ืืืืืื ืืืชืช ืืื ืืืื ืืกืคืจ ืืงืจืื. ื ืฉืืืจ ืืช ืืืกืคืจืื ืืืื ืืืคืขื ืืืื ืฉื ืืชืงื ืืืืื ื ืฉืชืืฉ ืืืืชื ืืกืคืจ. ืืืืืื ืฉืืืืืง ืืช ืืืืคืื ืืื ืืืื ืืืกืคืจ ืฉืืชืืื ืื ื ืงืจื ืืืฆืจ ืืืืืื. ืืจืขืืื ืืื ืื ืขืืื ืื ืื ืืื ืื ืืื ืื ืืืคืฉืจ ืืืืื ืืจืืืช ืืืงื ืืืืื ืื ืืืืื ืืืฉืืช, ืืื ืืืคืฉืจ ืืืืื ืืจืืืช ืืช ืืงืฉืจ ืืื ืืืืื ืขื ืืืชืืืช ืืืืืช.
ืจืขืืื ืฉื ื ืฉืื ืขืืื ืื ืื ืืื ืืื ืืืคืฉืจืืช ืืืคืืื - ื ืืืืฃ ืื ืืืช ืืืกืคืจ (ืืืฉื ืขืจื ื ASCII ืฉืื) ืื ืืื ืืช ืืืืื ืื ืืฉ ืืช ืืืืช ืืืื.
ืืฉืื ืื ื ืืื ืื ืืืฆืจ ืืืืื ืื ืื ื ืจืืฆืื ืืฉืื ืืื ืฉื ื ืืจืขืืื ืืช - ืืฆื ืืื ืื ืื ื ืจืืฆืื ืฉืื ืืืื ืชืงืื ืืกืคืจ ืืืืฆืจ ืืืืืื ืืื ืฉืืืืื ืืืื "ืืจืืืช" ืืช ืืืชื ืืืืื ืื ืคืขื ืฉืืื ืืืคืืขื ืืืงืกื. ืืฆื ืฉื ื ืื ืื ื ืจืืฆืื ืืืคืฉืจ ืืืืื ืืืืฆื ืื ืืืืื ืฉืื ืจืืื ื ืืจืืฉ ืืืืฆืจ ืืืืืื. ืืืจื ืืฉืืืื ื ืงืจืืช Byte Pair Encoding ืืื ื ืจืื ืื:
1. ื ืืชื ืื ืืื ืืืช ืืกืคืจ, ืืืฉื ืขืจื ื ASCII ืฉืื.
2. ืืืงืืื ืงืืข ืืงืกื ืฉืืฉ ืื ืืืื ืืืืื. ืืื ื ื ืื ื ืืช ืืืฆืจ ืืืืืื. ืืืืืืื ืื ืขื ืืืื ืืืฆืจ ืืืืืื ืืจืฆืื.
3. ืืืคืฉืื ืืงืืข ืืช ืืื ืืืืชืืืช ืฉืืืคืืข ืืื ืืจืื ืคืขืืื. ื ืืชื ืื ืื ืืกืคืจ ืืืืกืืคืื ืืืชื ืืชืืจ "ืืืื" ืืืืฆืจ ืืืืืื. ืืืจื ืื ืืืืืคืื ืื ืืืคืข ืฉื ืืืชื ืืื ืืืืงื ืืืืฉ ืฉืืฆืจื ื.
4. ืืืืจืื ืขื ืืชืืืื ืขื ืฉืืืฆืจ ืืืืืื ืืืืข ืืืืื ืืจืฆืื.
ืฉืืื ืื ืฉืืืืืื ืฉืื ืื ื ืืื ืื ืืฆืืจื ืืืืช ืืืืืืช ืืืืืช ืืืืจื 1 (ืื ืืืช ืืกืืืืช ืื ืืืคืืขื ืืฃ ืคืขื ืืชืืจ ืืื ืฉืืืืจ ืขื ืขืฆืื), ืืืืจื 2 ืืื ืืืชืจ ืืจืืืืช. ื ืืงื ืืืืืื ืืช ืืืงืกื ืืื ืืฆืืจื ืื ืืืช ืืืฆืจ ืืืืื:
aa aa bb aabb
ืื ืืืืืจืฆืื ืืจืืฉืื ื ืื ืื ื ืืืืืคืื ืื ืืืช ืืืกืคืจ. ืืฉืืื ืืืืืื ืื ื ืืืืืฃ ืืช a ื-1, ืืช b ื-2 ืืืช ืจืืื ื-0:
[1, 1, 0, 1, 1, 0, 2, 2, 0, 1, 1, 2, 2]
ืขืืฉืื ืื ื ืืืื ืืช ืืจืฆืฃ ืฉืืืคืืข ืืื ืืจืื ืคืขืืื ืื ืืืื 1,1 ืฉืืืคืืข 3 ืคืขืืื ืืืื ืื ื ืืืฆืจ ืืกืคืจ ืืืฉ, ืืืกืคืจ 4 ืฉืืืืืฃ ืืช 1,1:
[4, 0, 4, 0, 2, 2, 0, 4, 2, 2]
ืืกืืืื ืืื ืืฉ ืื ืืื ืืคืฉืจืืืืช ืื ื ืืืื ืืืืืจ ืืช 4,0 ืฉืืืคืืข ืคืขืืืื, ืืช 0,4 ืฉืืืคืืข ืคืขืืืื ืื ืืช 2,2 ืฉืืืคืืข ืคืขืืืื. ืืืื ื ืืงื ืืช 4,0 ืื ืืชื ืื ืืช ืืขืจื 5:
[5, 5, 2, 2, 0, 4, 2, 2]
ืขืืฉืื ืืืฆืจ ืืืืืื ืฉืื ื ืืืจ ืืืจืื ื:
" " - 0
a - 1
b - 2
aa - 4
"aa " - 5
ืฉืืื ืื ืฉืืืกืคืจ 5 ืืื ืืืงื ืฉืืืืฆื ืืงืกื ืืืืจื 3 ืชืืืื. ืืืื ืืื ืืื ื ืคืืฅ ืืื 2,2 ืฉืืืคืืข ืคืขืืืื ืื ื ืงืจื ืื 6 ืื ืงืื:
[5, 5, 6, 0, 4, 6]
ืืืคื ืืืจ ืื ืืคืฉืจ ืืืืฉืื ืื ืื ืืืืืืช ืืืคืืขืื ืจืง ืคืขื ืืืช. ืงืืืื ื ืืืฆืจ ืืืืื ืื ื ืืื ืืืฉืชืืฉ ืืื ืืงืืื ืื ืืงืกื ืืืฉ. ืื ืืืื ืชืืคืื ืืืกืคืจ ืืื ืื ืืืชืจ ืืืคืฉืจ ืืงืืื ืื ืืืืื ืฉืื ืืืคืืขื ืืชืืจ "ืืืืื" ืืืืฆืจ ืืืืืื ืืืงืืจื ืืืืืจ ืื ืืืืื ืืืฉืืช.
ืืขืืื ืืืืืชื ืืืืื ืฉืืืงืกื ืืื ื ืื ืื ื ืืื ืื ืืช ืืืฆืจ ืืืืืื ืฆืจืื ืืืืืช ืืจืื ืืืชืจ ืืจืื ืืืืืืช ืืื ืฉืืืชืจ ืืืื ืืืืื ืช ืชืืืจืืช ืืืคืขืช ืืืืืื ืืืงืกื ืืืืืชื ืฉืืืืื ืืฆืืจื ืื ืืฉ. ืืืื ื ืจืืฆืื ืฉืืืื ืืื ืฉืืืชืจ ืืืืื ืืืืฆืจ ืืืืืื ืืฉืืืื ืืื ืฉืคืืืช ืืืืื ืฉืืืืื ืื ืืืืจ. ืืชื ืืืืืื ืืจืืืช ืืืืื ืืืืืฉื ืืงืืฉืืจ:
https://www.bpe-visualizer.com
ืืฉ ืืจืื ืกืคืจืืืช ืฉืขืืฉืืช BPE ืืืงืื ืืงืกื ืฉื ืขืืืื ืืืื ืืืื ืืงืืช ืกืคืจืื ืงืืืืช ืืืื ืงืืืื. ืื ื ืืืืฉืชื ืืื ืืฉืืื ืืืฉืืง ืืจืืื ืืืืฆืืขืื ืื ืืจืืขืื ืืื ืืงืื:
module Tokenizer
def self.encode(text, vocab)
remaining = text
encoded = []
until remaining.empty?
token, remaining = vocab.encode_next_token(remaining)
encoded << token
end
encoded
end
def self.decode(encoded, vocab)
inv = vocab.inverted1 419
ืืืื ืืืืืง ืืืจืื ืฉืืคืชืืื ืื ืืฉืืื, ืืคืืื ื'ืื ืืืจืื, ืืืื ืืืืื ืืื. ืืื ื ืืื ืื ืื ื ืืืืขืื ืืฉืื ืื ืืฉืขืืืืื ืขืืื ื, ืื ืื ื ืฉืืื ืื ืืฉืืืจืื ืื ืืืืื ืืื, ืื ืื ื ืืืืขืื ืืฉืืื ืฉืืืืช ืืืืืื ืืืจืื ืืืงืื ืืืชืืื ืืื. ืื ืื ืื ืื ื ืื ืชืืื ืืืืจืื ืื ืฆืจืื ืืืชืื desc ืื description ืื ืื ืื
redirect ืื redirect_to.
ืื ื ืืืืืื ืืช ืืขืืืื ืขื AI - ืืงืื ืืืจืกื ืฉื ืคืืชืจืื ืฉืืื ืืืืื. ืืฉืืื ืขืืื ืฉืืืืช. ืืืืื ืื ืืืฉืืขืืช ืฉื ืื ืืืืจื ืืืกืืฃ ืืืืืื ืขื ืืืื ื ืื ืืื ืขืืืจ ืืืขืจืืช ืฉืืื. ืืื ืืขืืื ืืช ืงืื ืืืขืจืืช ืืืช ืงืืฆื ืืืืจืืืช ืืกืืื ืืื ืฉืคืขื ืืืื ืืชืฉืืื ืชืืื ืงืฆืช ืืืชืจ ืขืงืืืช.1 419
ืฉืื ืืืื ืงืื ืื ืฉืืฆืืืจืื
ืื ืขืื AI ืืชืขืงืฉ ืืืืฆืจ ืืช ืืืชื ืืขืืืช ืืงืื ืฉืืื ืืืชื ืืื ืขืื ืืืจืืช ืื ืืืขืืืช ืืื ืืืกื ืื ื ืืื ืืืื ืฉื ืืืจ ืืช ืืืชื ืชืื ืืืช ืืืขืืืช ื ืคืืฆืืช. ืื ื ืงืืข ืงืื ืฉืงืืืืชื ื AI:
class UserSelectionsController < ApplicationController
before_action :require_login
before_action :find_chat_and_message
def create
# Handle initial selection creation (if needed in the future)
# For now, redirect to chat
redirect_to chat_path(@chat)
end
def update
# Use the service to handle the selection
service = UserSelectionService.new(
chat: @chat,
message: @message,
user: current_user
)
if params[:text_input].present?
service.handle_selection(text_input: params[:text_input].strip)
elsif params[:option_id].present?
service.handle_selection(option_id: params[:option_id])
else
redirect_to chat_path(@chat), alert: "Invalid selection"
return
end
redirect_to chat_path(@chat)
rescue => e
Rails.logger.error "UserSelection error: #{e.message}"
Rails.logger.error e.backtrace.join("\n")
redirect_to chat_path(@chat), alert: "Something went wrong"
end
private
def find_chat_and_message
@chat = current_user.chats.find(params[:chat_id])
@message = @chat.messages.find(params[:message_id])
rescue ActiveRecord::RecordNotFound
redirect_to new_chat_path, alert: t('chat.not_found')
end
end
ืื ืฆืจืื ืืืืืจ ืจืืื ืืฉืืื ืืจืืืช ืืช ืืืขืืืช:
1. ืคืื ืงืฆืืืช create ืจืืงื. ืืคืืื ืืืขืจื ืืกืืืจื ืฉืื ืจืง ืืื ื ืืขืชืื. ืื ืืื ืื ืืื ืืฉืืืจ ืืืชื, AI ืคืืื ืืืืืง.
2. ืืคืื ืงืฆืื ืืฉื ืื update ืืกืชืืืืช ืืคืงืืืช rescue ืฉืืืชืืช ืืืื ืืช ืืฉืืืื ืืืืืืจื ืืืฉืชืืฉ ืืืืขื Something went wrong. ืคืื ืงืฆืืืช find_chat_and_messag ืชืืคืกืช ืฉืืืื ืืืืืืจื ืืืฉืชืืฉ ืืืืขื ืืชืื ืงืืืฅ ืืืืืขืืช ืืืชืืจืืืืช. ืื ืืื ืืื ืืืืจ ืืจื ืืืช ืืืฉืชืืฉ ืื ืืฉืชื ืืคืื ืงืฆืืืช. ืืฉ AI ืืืชื ืงืื ืืื ืื ืืืืข ืื ืืื ืืชื ืงืืื.
3. ืืคืื ืงืฆืื require_login ืืืืืืช ืฉืืฉ ืืฉืชืืฉ ื ืืืื ืืืืืจ. ืืคืื ืงืฆืื find_chat_and_message ืืฉืชืืฉืช ืืืฉืชืืฉ ืื ืืืื ืืื ืืืืืข ืืฉืืื. ืืื ืืขื ืืงืจืื ืืฉืชืืื ืื ืืฉื ืืื ืืืจ ืืืืืช ืื ืืช ืืืืืืงื ืฉื ืืจืืฉืื ื. AI ืื ืืืื ืืจืืืช ืืช ืื.
4. ืืคืื ืงืฆืื update ืืืืืช ืฉื ื ืื ืื ืื ืื ืืืืคืื ืืฉืืืืืช, ืืฉ ืฉื if else ืฉืืืคื ืืืฆื ืื ืื ืขืืจ ืคืจืืืจ ืฉืืคืื ืงืฆืื ืฆืืคืชื ืืงืื ืืื rescue ืฉืืืคื ืืืขืืืช ืืืจืืช. ืื ืืื ืืื ืืืืื ืฉืงืื ืืืืคืื ืืฉืืืื, ืืืืืจ ืืงืจืืื ื redirect_to ืชืืคืืข ืจืง ืคืขื ืืืช.
5. ืืคืื ืงืฆืื update ืงืื ืืืืคืื ืืฉืืืืืช ืืืคื ืืื Exception. ื find_chat_and_message ืืฉ ืืืคืื ืจืง ื ActiveRecord::RecordNotFound.
6. ืืืืคืื ืืฉืืืืืช ืืื ืชืืื ืืงืืื. ืืฉ AI ืืืชื ืืช ืงืื ืืืืคืื ืืฉืืืืืช ืืื ืื ืืืื ืืฉืื ืื ืฉืืคืฉืจ ืืืชืื ืงืื ืืืคืื ืืฉืืืืืช ืืืงืื ืืืชืจ "ืืืื" ืืฉืจืฉืจืช ืืงืจืืืืช ืืื ืืืกืืช ืืืชืจ ืืงืจืื.
7. ืืคืื ืงืฆืื update ืืืืืช ืืช ืืืืืง ืืื:
if params[:text_input].present?
service.handle_selection(text_input: params[:text_input].strip)
elsif params[:option_id].present?
service.handle_selection(option_id: params[:option_id])
...
ืืคืื ืงืฆืื handle_selection ืฉืืืคืขืืช ืืชืื ืืืืืง ืืืืืช ืืช ืืืืืง ืืื:
def handle_selection(option_id: nil, text_input: nil)
if text_input.present?
handle_text_selection(text_input)
elsif option_id.present?
handle_option_selection(option_id)
else
raise ArgumentError, "Either option_id or text_input must be provided"
end
end
ืงืืืื ื ืืช ืืืชื ืืืืงื ืืฉื ื ืืงืืืืช ืขื ืฉื ื ืื ืื ืื ื ืืจืืงืช ืฉืืืื ืฉืื ืื. ืื ืืื ืืื ืืืชื ื update:
service.handle_selection(params)
ืื ืืชื ื if ืืคื ืืื ืืืืืง ืื ืขืืจ, ืื ืืคืฆื ืืช ืืงืื ื service ืืฉืชื ืคืื ืงืฆืืืช ืืืืืชืจ ืขื ื if ืฉื. AI ืื ืืืืข ืื ืืื ืืืจ ืืชื ืื ืืื ืืฉืืคื.
ืื ืืืขืืืช ืืืื ืื ืืืืืืืืช ืืจืืื ืืื ืืืคืชืจื ืขื ืืื "ืงืืฆื ืืืจืืืช ืืืืื ืืืชืจ" ืื "ืืืืืื ืืืืื ืืืชืจ". ืืื ืืขืืืช ืืืื ืืช ืืืืืื ืฉืคื ืืืืืื - ืงืื ืื ืขืงืื, ืคืื ืืืืืง, ืืืกืจ ืืืืืช ืืจืืืช ืงืฉืจ ืืื ืืืงืื ืฉืื ืื ืืืขืจืืช ืืืืืจื ืืืฉืืืช ืืืืื ืืืง ืืืขืจืืช ืฆืจืื ืืืชืื ืื ืื ืื ืื.1 419
ืืืื ืืืืชื: ืคืื ืงืฆืืืช random ื CSS
ืื ื ืืืื ืืฉืฉืืขืชื ืขื ืืคืืฆ'ืจ random ื CSS ืืฉืืื ืืจืืฉืื ื ืฉืื ืืืชื - ืืกืคืจืื ืืงืจืืืื ื CSS? ืืื??
ืืื ืื ืืืจืืชื ืืช Safari Technology Preview ืืืืฉ ืื ืืกืืชื ืืืฉื ืืช ืืืื ืฉื ืืืืืืื:
body {
background: black;
}
.star {
background-color: white;
border-radius: 50%;
aspect-ratio: 1/1;
width: random(2px, 10px, 1px);
position: fixed;
top: random(0%, 100%);
left: random(0%, 100%);
}
ืืื ืง ืืงืืืคื:
https://codepen.io/ynonp/pen/XJmYaae
ืืืืืช ืืฉ ืืฉืื ื ืืื ืืจืงืข ืฉืื ืคืขื ื ืืขื ืขื ืืืืืื ืืืงืื ืืืจ.
ืืฆื ืฉื ื - ืชืืืืช ืืคืืคื ืื ืืืื ืืขืืืชืืช, ืืื ืงืื ืฆื ืืืก ืขื ืืคืืฆ'ืจ ืืื ื ืจืื ืฉืืืฉืื ืืืฅ ืืืคื ืจืืฆื ืืื ืืช ืืืชื (ืืื ืืคืืื ืขืืื ื mdn ืื ื caniuse).
ืืื ืืฉ ืืืจืื ืื ืืงืืฃ ืืืืืื ืฉื ืืืืงืื ืขื ืืคืืฆ'ืจ ืืื ืืืืจืื ืืืืืืงืื ืฉืืคืฉืจ ืืืื ืืขืฉืืช ืขื random ืืื ืืื ืื ืืื ืืืื ืก ืืืืื ืฉืื ื:
https://webkit.org/blog/17285/rolling-the-dice-with-css-random/
ืขื ืื ื ืืฉืื ืืืืจืื ืขืจืืื ืืืืฆืขืืช JavaScript.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
