ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
+17 kunlar
-430 kunlar
Postlar arxiv
1 419
๐ ืืืืืืช ืืืืข ืื ืฉืืืืื ืื ืืืจ ืืืื ืืงืจืืช
ืืจืื ืืืชืจ ืงื ืืจืืืช ืืืืฉืืช ืืงืื ืืืฉืจ ืืืืื ืืื ืื ืฆื ืืช ืืืชื ืืืืฉืืช ืืื ืืขืฉืืช ื ืืง, ืืื ืืฉืื ืื ื ืืฉืืืจืื ืืืืฉืืช ืืงืื ืฉืื ื ืจืง ืืืื ืฉืื ืื ื ืื ืจืืืื ืื ืืืจ ืื ืืง ืฉืื ืืืืืืช ืืืจืื ืื ืื ื ืืกื ืืื ื ืืชื ืื ืืืชืจ ืืืืืืฆืื ืืื ืฉืื ืฉืืืื ืื ืืื.
ืืกืืคืืจ ืืื ื ืื ืก ืืฆืื ืืืืกืฃ ืืขืืืช ืืืืืช ืืืืข ืฉืงืฉืืจืืช ื AI ืืืื ืืืืื ืืืืืง ืืช ืืคืขืจ ืืื ืืืืืฉื ืื ืืฆืื. ืกืืืืื ืืืืืื ืืชืช ืืงืืื ืืืืื ืืช ื Issues ืฉืืฉืชืืฉืื ืคืืชืืื ืืขืืจืช ืงืื ืคืืืืจืฆืื ืืืืช:
allowed_non_write_users: "*"
claude_args: >-
--allowedTools "Bash,Read,Write,Edit,Glob,Grep,WebFetch,WebSearch"
prompt: |
**Issue:** #${{ github.event.issue.number }}
**Title:** ${{ github.event.issue.title }}
ืจืืืชื ืืช ืืืขืื? ืื ื ืืืื ืฉืื. ืืืงืืื ืืช ื title ืฉื ื Issue ืืฉืืืืื ืืืชื ืืกืืื ืฉืืืื ืืืจืืฅ ืคืงืืืืช Shell ืืืืฉืช ืืืื ืืจื ื.
ืขืืฉืื ืืืื ืชื ืืกืืื ืจืฅ ืขื ืืืื ื ืฉื Github Actions ืืื ืืจืฉืืืช ืืขืฉืืช ืฉืื ืืืจ. ืืคื ืื ื ืฉืืืข ืืจืืฉ ืืช ืืฉืืื ืฉืืื ืื ืื ืืฉืื "ืื ืืืจ ืืืื ืืืืฉืืจ?". ื ื, ืืกืชืืจ ืฉืื ืืืื ืช ืืืืืื ืืงืฉื ืืื ืืจืฉืืืช ืืืืื ืืขืฉืืช ื ืืง ืืืชืืฆืื ืืืชื ืืืจืกื ืืืืืืืช ืฉื cline ืฉืขืืชื ื npm.
ืืกืืคืืจ ืืืื ื ืืืื ืืืชืขื ืืื ืื ื ืืฆื ืืืื ืง ืืื:
https://neciudan.dev/cline-ci-got-compromised-here-is-how#what-is-openclaw-and-why-should-you-care
ืืืงื ืืื ืืฉื ืืืืืื ืืืชื ื ืขืื ืืจืื ืืคื ื ืืื ื AI. ืืืืืืช ืืืืข ืื ืฉืืืืื "ืื ืืืจ ืืืื ืืงืจืืช". ืกืืืจืื ืืช ืืืืืฉืืช ืืคื ื ืฉืืืฉืื ืืืจ ืืืฆื ืืช ืืชืฉืืื.1 419
ืื ืืืจืื ืชืืืื ืื ืืขืชืื ืขื ืงืื ืืคืืืืืืงื? ืืืืชื ืืฉืชืืฉืื ืืกืคืจืืืช ืงืื ืคืชืื ืขื ืืื ืจ ืฉื ืคืจื ืคืืกืืื? ืื ืืืื ืกืืื ืืืงืจืืื ื? ืืืื?
1 419
๐ ืืฆืคื ื ื Rails - ืืืื, ืืจืข ืืืืืืขืจ
ืืจืืืืก ืืฉ ืื ืื ืื ืืืื ื ืืืฆืคืื ืืืืข ืฉื ืฉืืจ ืืืกืืก ืื ืชืื ืื. ืืื ืื ืื ืืืืืจ ืฉื ื ืืคืชืืืช ืืฆืคื ื ืืืืืื ืฉื ืืื ืืื ืืืืื ืืช ืืืืื, ืืืืืจ ืื ืื ื ืืืืืจืื ืืงืื ืคืืืืจืฆืื:
Add this entry to the credentials of the target environment:
active_record_encryption:
primary_key: YehXdfzxVKpoLvKseJMJIEGs2JxerkB8
deterministic_key: uhtk2DYS80OweAPnMLtrV2FhYIXaceAy
key_derivation_salt: g7Q66StqUQDQk9SJ81sWbYZXgiRogBwS
ืืื ืืืงืื ืืคืฉืจ ืืืฉืชืืฉ ื ActiveRecord::Encryption ืืื ืืืฆืคืื ืื ืืคืขื ื ืขื ืืืคืชืืืช ืืืื, ืื ืืืืืืจ ืฉืืืช ืฉืืืืืืืืช ืืืฆืคื ื ืืฉืืืจื ืืืกืืก ืื ืชืื ืื ืืืคืืขื ืื ืืงืจืืื. ืืืืจืื ืืฉืืืืฉ ืืฉ ืืื ืืื ืกืืฃ ืืืืข ืขื ืืืืคืช ืืคืชืืืช, ืืชื ืืืฉืชืืฉ ืืืฆืคื ื ืืืจืื ืืกืืืช ืืืชื ืื ืืืจืื ืืกืืืช ืืฉืืจ ืืืืืื ืฉื ืืืืืช ืืืืข. ืงื, ืืืื ืืืื ืืื ืฉืจืืืืก ืืืืข.
ืืฉ ืื ืงืืืก ืืฉื ืืืืืขืจ ืืืชืจ ืืืฆืคื ื ืืฉื MessageEncryptor. ืืืืืช ืืฉืืืืฉ ืืืชืืขืื ื ืจืืืช ืื:
len = ActiveSupport::MessageEncryptor.key_len
salt = SecureRandom.random_bytes(len)
key = ActiveSupport::KeyGenerator.new('password').generate_key(salt, len) # => "\x89\xE0\x156\xAC..."
crypt = ActiveSupport::MessageEncryptor.new(key) # => #<ActiveSupport::MessageEncryptor ...>
encrypted_data = crypt.encrypt_and_sign('my secret data') # => "NlFBTTMwOUV5UlA1QlNEN2xkY2d6eThYWWh..."
crypt.decrypt_and_verify(encrypted_data)
ืื ืงืื ืืืืขืจ ืื ืืื ืืืจืื ืืืชื ืืืืืืจ ืืื ืืช ืืืื ืืืืืืจ ืืขืฆืื ืืช ืืืคืชืืืช ืืขืื ืืฆืื ืืช ืืืกืืก ืืืฆืืจืช ืืืคืชื ืืฆืืจื ืืคืืจืฉืช ืืงืื. ืื ืืคืฉืจ ืืืชืื ืืฆืคื ื ืืืืืืืช ืขื MessageEncryptor ืืื ืื ืืืจืืฉ ืขืืืื ืืืืข ืฉืื ืืืคืืขืื ืืชืืขืื.
ืืืฉืื ืฉืื ืื ืืกืคืืง ืืงืฆืืขืืื ืื ืกืืื ื ืงืืืื ื ืชืงืืื ืืืืื ืืขืืืช ืื ื ืืืื ืืืจืืง ืืช ืืืืงืื ืืงืฉืื ืืืืคืื ืืช ืืงืื ืืืืืขืจ ืืงืื ืจืข, ืืืืืื ืงืื ืฉืงืืืืชื ื ChatGPT:
secret_key = Rails.application.key_generator.generate_key("my-secret", 32)
encryptor = ActiveSupport::MessageEncryptor.new(secret_key)
# Encrypt + sign
encrypted = encryptor.encrypt_and_sign("Hello world")
# Decrypt + verify
decrypted = encryptor.decrypt_and_verify(encrypted)
puts encrypted
puts decrypted
ืืื ื ืขืืื ืืืืืื ืืืงืจืืืื ืฉื ืืืื? ืฆ'ืื ืื ืจืื ืื ืืฉื ืฉืื ืืกืคืืง ืืฉืื. ืคืจืืืคื ื ืืกืฃ ืืื ืืืืืจ ืื ืืช ืืงืื ืืื:
secret_key_base = Rails.application.secret_key_base
# Derive a key
key_len = ActiveSupport::MessageEncryptor.key_len
salt = "my-encryption-salt"
key = ActiveSupport::KeyGenerator.new(secret_key_base).generate_key(salt, key_len)
encryptor = ActiveSupport::MessageEncryptor.new(key)
ืืคืขื ืืืกืืก ืืืคืชื ืืื secret_key_base ืฉืืืจ ื ืืฆื ืืฉืืืืฉ ืืื ืืืฆืคืื ืืช ืืงืืงืื ืืื ืงืืืื ื ืืืืืืจ ืฉื ืืกืืก ืืืคืชื ืืฆืคื ื ืืฉืืืืฉืื ืฉืื ืื. ืจืง ืื ืื ื ืืืงืฉ ืืืคืืจืฉ ืืช ืฉืืืช ืืืฆืคื ื ืืืืฉื ืขื ActiveRecord::Encryption ืื ื ืืืืช ืืงืื ืืืชื.
ืืงืืื? ืืืืื. ืืฉืงืื ืชืฉืชืืช ืืืจืฉ ืืืืื ืืช ืืขืืื ืืช ืืื ืืืฉืชืืฉ ืื ื ืืื ืืืื ืื ื ืืื ืืกืืื ื ืงืืืื ืฉืืฉืืจื ืืืชื.1 419
๐ ืื ืงืื ื ืืชื ืืืขืจ ืืืฃ ืืื ืื ืืฉืชืืฉ ืื
ืืคืจืืืงื ืืฉื chatwoot (ืจืืืืก) ืืฆืืชื ืืช ืืงืื ืืื:
class Api::V1::Accounts::WorkingHoursController < Api::V1::Accounts::BaseController
before_action :check_authorization
before_action :fetch_webhook, only: [:update]
def update
@working_hour.update!(working_hour_params)
end
private
def working_hour_params
params.require(:working_hour).permit(:inbox_id, :open_hour, :open_minutes, :close_hour, :close_minutes, :closed_all_day)
end
def fetch_working_hour
@working_hour = Current.account.working_hours.find(params[:id])
end
end
ืืงืื ืื ืขืืื ืืืื ืกืืืืช:
1. ืืคืื ืงืฆืื fetch_webhook ืื ืงืืืืช. ืื ืืคืฉืจ ืืืคืขืื ืืืชื ืืคื ื update.
2. ืืคืื ืงืฆืื check_authorization ืืืคืฉืช ืงืืืฅ ืืฉื working_hours_policy.rb ืฉืื ืื ืงืืื.
ืืื ืืฃ ืืืืงื ืขื ืืงืื ืืื ืืคืขืืืื ืืืชื ืืฉืื ืืงืื ืืื ืืื ืื ืืืืืจ ื API Endpoint ืืื ืืื (ืื ืกืืื ืงืืืื) ืฉืืกืชืื ืจืง ืขืืื ืขืืื ืืงืื ืืช ืืจืืฉื ืฉืืคืื ืงืฆืื ืืืงืืืฅ ืงืืืืื. ืืื ืืืชื ืืื (ืื ืืืชืจ ืกืืืจ ืกืืื ืงืืืื) ืืืืข ืืืชืื ืขืืฉืื ืคืืฆ'ืจ ืืืฉ ืืื ืขืืื ืืืฉืชืืฉ ืืืืชื ืจืืืืื ืืืืืืื ืื. ืืื ืืืช ืืขืื ืฉื ืกืืื ื ืงืืืื ืืจืื ืืืชืจ ืืืฉืจ ืฉื ืื ื ืืื, ืืื ืืืคืืช ืืืืืช ืืขืื ืฉื ืื ื ืืื ืืฉืืืชื ืื ื ืืื ืืคืขืืืื ืกืืื ื ืงืืืื ืืื ืืืืืจ ืืช ืืงืื ืืืื ืืขืืืจ ืืจืืฉ ืขื ืชืืื ืืช ืืขืืืื.
ืขืืฉืื ืืคืฉืจ ืืืขืื ืฉืื ื ืืื ืื ืืืขืื ืฉื ืกืืื ื ืงืืืื ืืื ืจืง ื ืืชื ืืกืืื ื ืงืืืื ืืขืืื ืืฉืงื ืืขืืื ืืืื ืืงืื ืืื ืืืชืจ. ืืืจื ืืืจ ืืืื ืขื ืืืื ืืืช ืืืืื ืืืืืช ืืืื ืืงืจื ืื ืื ืืืื ืืงืจืืช ืืื ืืงืื ืืืชื ื.
ืืืชืจ ืืื ืืฉืื ืื ืฉืืืื ืืงืื ืืื ืืคืจืืืคื. ืงืื ืืืื ืืืืืช ืฉืืืจ ืื ืื ืืฃ ืืื ืื ืืคืขืื ืืืชื ืืืืื ืืงืืืช ืืงืืงื ืืช ืืชืืฆืืืช ืฉื ืกืืื ืืงืืืื. ืืขืืื ืฉืื ืืงืื ืืื ืืคืจืืืคื, ืงืื ื ืงื ืืื ืืขื ืืฉืื ืืชืืื.1 419
๐ ืืืค ืคืืืชืื: ืื ืฆืจืื ืืืชืื ืืช ืื ืืงืื ื init
ืืฉืื ืื ื ืืืชืืื ืืืืื ืืคืืืชืื ืืืื ื ืื ืฉืืฉืชืืฉืื ืืืืืื ืืืืื ืืช ืืืืืื ืืืืคืขืื ืคืงืืืืช ืืฉืืจืืช ืขื ืฉื ืืืืืื, ืืืืืจ ื ื ืื ืฉืืฉ ืื ืืืืื ืืฉื mymodule ืื ืืฉืชืืฉืื ืืืื ืืืืืื ืืืชืื:
import mymodule
print(mymodule.add(10, 20))
ืืจื ืืืช ืืืชืื ืืช mymodule ืืื ืฉืื ืืขืืื ืืื ืคืฉืื ืืืชืื ืงืืืฅ ืืฉื mymodule.py ืืืชืืื ืืืืืืจ ืืช ืืคืื ืงืฆืื add. ืืื ืื ืืชื ืจืืฆืื ืืืชืื ืคืจืืืงื ืืืฉืชืฃ ืขื ืืืจืื ืกืืืื ืืื ืฉืชืจืฆื ืืฉืื ืืช ืืืืืื ืฉืืื ืืชืื ืชืืงืืื ืืกืืืจืช ืฉืฉืื ืืืื ืืฉื ืืคืจืืืงื. ืืคื ืืขืกืง ืืชืืื ืืืกืชืื, ืื ืื ืื ื ืืืฆืจ ืชืืงืืื ืืฉื mymodule ืืืชืืื ืงืืืฅ ืืฉื utils.py ืขื ืืคืื ืงืฆืื ืฉืื ืื ืืฉ ืื ืืื ื ืชืืงืืืช:
mymodule/
__init__.py
utils.py
ืืขืืฉืื ืืฉืชืืฉืื ืฉื ืืืืืื ืฆืจืืืื ืืืขืื ืืช ืืงืืืฅ ืืคื ืืื ืืชืื ืืืืืื ืืืืชืื:
import mymodule.utils
print(mymodule.utils.add(10, 20))
ืืขืฆืื ืื ืืืชืจ ืืฉืชืืฉื ื alias ืืืืชืื ืืืืื:
import mymodule.utils as mymodule
print(mymodule.add(10, 20))
ืืื ืื ืื ื ืจืื ื ืืื ืืขืืืื ืืขืฆืื ืืช ืืืฉืชืืฉืื.
ืืืชืืื ืืืืืืื ืืฆืืจืชืืื ืืืืขืื ืืฉืื ืืช ืืงืื ืืงืืืฅ ื __init__.py ืฉื ืืืืืื, ืืื ืื ืฆืจืืืื ืืคืืื ืืืืฆืื ืฉื ืืงืืืฅ ืืืงืืจ ืืืืืชื ืืืื ืืกืชืืจ ืขื ืืืืื, ืืืืืจ ืืืื ืื ื ืืฆื ืฉื ืืืืืื:
mymodule/
__init__.py
ืืืชืื ืืงืืืฅ __init__.py ืชืืคืืข ืืืืจืช ืืคืื ืงืฆืื add, ืืื ืืฉืชืืฉืื ืฉื ืืืืืื ืืืืื ืฉืื ืืืชืื:
import mymodule
print(mymodule.add(10, 20))
ืืื ืืืชืืื ืืืืืืช ืืืชืจ ืืฆืืจืชืืื ืืืืงื ืืขืืืคืื ืืืฉืชืืฉ ืืฉื ืงืืืฅ ืืกืืืจ ืขืืืจ ืืงืืื ืฉืืื. ืืืฆื ืืื ื ืืชืื ืงืืืฅ utils.py ืขื ืืืืจืช ืืคืื ืงืฆืื add, ืืงืืืฅ __init__.py ืฉืืืื ืจืง ืืช ืคืงืืืช ืืืืื ืืืืฆืื ืืืืฉ:
from .utils import add
ืืฉืื ืืื ืขืืื ืืื ืขืืฉืื ืื ืืกืืืจ - ืืฉืชืืฉืื ืืืืืื ืืืืื ืืช ืืืืืื mymodule ืืืงืจืื ืืคืื ืงืฆืื add ืืฉืืจืืช ืืจื ืืืืื, ืืคืืื ืฉืืคืื ืงืฆืื ืืืืืจืช ืืงืืืฅ ืคื ืืื mymodule/utils.py ืืชืื ืืืืืื.1 419
๐ ืื ืืงืื ืฉืื
ืื ืชืื ื ืืื ื ืื ื ืืชื ืคืืกื ืืจืื ืืืฉืื ืข ื ืื ืฉืืืืฉ ื AI ืืงืืืื. ืืืืืฅ ืืงืจืื ืืืชื ืืื:
https://antman-does-software.com/i-will-never-use-ai-to-code-or-write
ืื ืชืื ื ืืฉืืื ืืื ืงืืืื ืืืชืืืช ืกืคืจ. ืืื ืฉืื ืืืืช ื ืืชื ื AI ืืืชืื ืืช ืืจืืื ืืื ืฉืื ืืืืงืฉ ืืื ื "ืจืง ืฉืคืจ ืงืฆืช ืืช ืืืืืช ืืืืช", ืื ืืืชืืื ืื ืืืื ืืฉืืื, ืื ืื ืืงืืืื ืื ืชืชื ื AI ืืืชืื ืืฉืืืื ืืช ืืงืื ืื ืืืจ ืื ืืืื ืืงืื ืฉืื. ืื ืืืื ืืฉืืื.
ืื ืืืขืื ืืขื ืืื ืืื ืืืขืชื ืฉืืื, ืื ืืฉืงืฃ ืืช ืืืืื ืืืืืชืืื ืฉื ืืคืชืืื ืื ืืคื ื AI ืืื ืขืืืจ ืื ื ืืืชืื ืงืื ืืื ืืืชืจ.
ืืืืื ืืืืืชืืื, ืื ืืคื ื AI ืจืื ืืงืื ืฉืืชืื ื ืื ืืื 100% ืืฆืืจื ืฉืื ื. ืขืืืื ืขื ืืขืจืืืช ืงืืืืืช, ืขืืืื ืืฆืืืช, ืฉืืืืฉ ืืกืคืจืืืช ืฉืื ืชืืื ืื ืื ื ืืืจื ื ืืืืืืฆื ืื"ื ืืืืื ืืื ืฉืืขืจืืืช ืชืืื ื ืฉื ืืขืืื ืืืืืชื ืื ืื ืืืืืง ืืฆืืจืืช ืืืื ืืช. ืืฉ ืืื ืืืคื ืื ื ืื ืืืืืฉ, ืืื ืชืืื ืืฉ ืื ืืฉืคืจ. ืื ืงืืจื ืฉืืคืชื ืืืฉ ืืืืข ืืคืจืืืงื ืืืืืจ "ืืืื ืืืื ืงืื ืืืืื ืืฉ ืคื". ืงืื ืืื ืื ืืฆืืจืช ืืืคืช ืฉื ืืคืชื ืืืื ืืื ืชืืฆืื ืฉื ืืืืืฆืื. ืืคืชืืื ืืืืื ืืืืขืื ืืื ืืืืืฃ ืืช ืืขืจืืช ืืืืืืฆืื ืืืืช ืืืืืื ืงืฆืช ืืืชืจ ืืจืื ืืืืฉืคืืข ืขื ืืืขืจืืช ืขืฆืื ืืื ืฉืืงืื ืืืื ืืฆืืจื ืืืขืืช ืืฆืืจื ืืืื ืืืชืจ.
ืืฉืื ืื ื ืืืืฉืืื ืืช ืืืชื ืขืงืจืื ืืช ืขื ืคืืชืื ืืืืฆืขืืช AI ืื ืื ื ืืืืื ืฉืืคืชืืื ืืืืื ืื ืืืืืื ืืืืืื ืืื ืืืืคื, ืืืฆืืื ืืืชืจ ืืจืืื ืืืืืข ืืช ืขืฆืื:
1. ืืคืชืืื ืืืืื ืืืืืจืื ืชืื ืืืช ืืงืื ืืืชื ื AI ืืฉืืคื.
2. ืืคืชืืื ืืืืื ืืืืืจืื ืฉืืืืช ืขืืืื - ืืื ืขืืฉืื Deployment, ืื ืืืืงืื, ืืื ืืืืงืื. ืกืืื ื ืงืืืื ืืฉืชืืฉื ืืฉืืืืช ืขืืืื ืืื ืืืืฆืขืืช MCP ืืืืกืื ืขืืืื ืฉื ืื ื ืืื.
3. ืืคืชืืื ืืืืื ืืืืืจืื ืืืกืืจืงืฆืืืช ืืจืืืื ืงืื ืืกืืกืืื, ืืื ืกืืื ื ืืงืืืื ืืฉืชืืฉื ืืื ืืื ืืช ืืช ืืืืจืื ืืืืื.
ืืขืืืื ืฉืื ื ืืืื ืืืงืฉ ืืกืืื ืงืืืื ืืื ืืช ืื ืคืืฆ'ืจ ืืืฉ ืืืขืจืืช, ืืื ืคืจืืืงื ืื ืืจืืืืืืื, ืืื ืื ืชืืฆืื ืฉื ืืืืืื ืฉื ืกืืื ืืงืืืื ืืื ืฉื ืืื ื ืืื ืฉื ืืืขืจืืช. ืืืจืืื ืืืจืื ืคืจืืืงืืื ืกืืื ื ืืงืืืื ืื ืืฆืืืืื ืืืืฆืจ ืชืืฆืืืช ืืืืืช ืืืคืชืืื ืืืืืืื ืฉืขืืช ืืจืืืื ืขื ืืกืืื ืื.
ืื ืืงืื ืฉืื, ืืืขืจืืช ืฉืื, ืืืื ื ืฉืื. ืื ื ืืืืจ ืื ืฉืืจื ืื ืืืืชืื ืืช ืืืืืื, ืืคืืื ืฉืืช ืจืืื ืื ืืงืืืชื ืืขืฆืื.
1 419
๐ ื .ื. ืขืืืืืช ืฉื AI
ืืคื ื ืืขืจื ืฉื ื ืื ืืชื ืคืจืืืงื ืฉืืืฆืจ ืชืจืืื ืืืฆืจ ืืืืื ืืฉืคื ืืกืจืืื ืงืฆืจืื ืืืืืืื. ืืืืจืชื ืืืชื ืืืฉืืื ืืืื ืฉืื ืื ื'ืืื ื ืคืจื ืฉื ืืืชื ืืื ืืื ืืืืจ ืืืืื ืฉืืฆืืื ืืชืืื ืืฆืืจื ืืืื ืกืจืืื ืืืืืืื ืืืืคืจืื 2025 ืงืืืืชื ืืืืื ืืฉืืื ืฉื 350 ืฉ"ื ืขื ืฉืืืืฉ ืืืืชื ื'ืืื ื ืคืจื ืจืง ืืคืจืืืงื ืคื ืื ืืงืื ืืื.
ืืืืืฉืื ืฉืืืจื ืืืจ ื ืืืจืชื ืืืชืจ ืืฉืืืืฉ ืื'ืืื ื ืคืจื ืืืืื ืฉืืืืชื ืืื ืจืง 3 ืฉ"ื, ืืื ื 25 ืฉ"ื, ืืืื 76 ืฉ"ื ืืืืืืกื 50. ืืืง ืืื ืงืฉืืจ ืืืืคืืืืืืฆืื ืืืขืจืืช ืฉืืืชื ืฆืจืืื ืคืืืช AI ืืื ืืืฆืืจ ืืช ืืฉืืขืืจืื, ืืืง ืงืฉืืจ ืืื ืฉืืขืืจืชื ืืืงืื ืืืงืื ืืขืืื ืขื ืืืืืื ืืืชืจ ืืืืื ืืืืง ืืื ืฉืคืฉืื ืืื ืื ืคืืืช ืืื ืืขืืื ืขื ืืคืืืคืืจืื. ืกื ืืื ืืคื ื ืืืคืืืืืืฆืื ืฉืืืืชื ืืขืจื 20 ืฉ"ื ืืขืืืื ืขื ืืืืื ืืื ืืืืจื ืืืคืืืืืืฆืื ืื ืืจื ื 2-3 ืฉ"ื ืืืืืื.
ืืื ืืืื ืืฉืืงื ืืช ื'ืืื ื ืคืืืฉ ืืืื 3.1 ืืืืืื ืืฉืืงื ืืช ืชืืื ืืช Ollama Cloud. ืฉืืืื ืฉื ื ืืื ืืืจืื ืืช ืืขืืืช ืฉื ืืฆืืจืช ืืืืื ืืคืืืช ืืืืืจื, ืืื ืฉืื ืื ืืงืื.
ืฉื ื ืืชืืืืืื ืืืืืืื ืฉืืืจ ืืืื ืืืืื ืืืชื ื ืืฉื ืื ืืงืจืืืืช ืื ืฉืืคืืจ ืืฆืจืืืช ืืืฉืืืื ืฉื ืืืืืืื (ืืืืืื ืืืชืจ ืงืื ืื ืขื ืชืืฆืืืช ืืืืืช ืืืชืจ) ืืชืืจืืช ืืื ืืืชืจ ืกืคืงืืืช ืืืืืื. ืฉืืืื ืฉื ื ืืืืจืื ืืืืจ ืฉืขืืืช ืืขืืืื ืขื LLM ืืจืื ืคืืืื ืืขืื ืชืืฉืื ืืจืืช. ืกืคืงื ื AI ืจืืืื ืืช ืื ืืื ืกืื ืืคืฆืืช ืืืืฆืขืืช ืืืกืคืช ืฉืืจืืชื ืขืจื ืืืกืฃ ื API ืืื "ืฉืืืืฉ ืืืืฉื", "ืืืคืืฉ ืืจืฉืช" ืืืืกืื ืงืืฆืื. ืงืฉื ืืืขืช ืืื ืืื ืื ืืฆืืื ืืื.
ืืื ืชืืื ืื ืฉืืืื ืืื ืฉืืขืืืช ืฉื Inference ืืืจืืช ืืืืจ. ืืืชืื ืืื ืจืืืง ืืืื ืฉืื ืขื ืืืฉืืื AI ื ืชืืื ืืฉืื ืืืืื ืฉื ืื ืื ืืืงืื ืขื ืืกืืก ืืืงื ืื.
1 419
๐ ืื ื GPL ืื ืจืื ืื ืืฉืจืื
ืื ื ืืืื ืืื ืืจืืืฉ ืืืจืง ืคืืืืจืื.
ืืืจืง ืืชื ืืช Dive Into Python ืืื ืืชื ืืืืื ืคืืืชืื ืืฉื chardet ืฉืืืื ืื ืืงืืืื ืฉื ืืืจืืืช. ืืืจืง ืจืฆื ืืืฉืืืจ ืืชื ื ืืงืืืื ืืื ื ืืช ืืคืจืืืงื ืืจืฉืืื LGPL ืืื ืืืืื ืฉืื ืืืจืื ืืืงืืื ืืช ืืงืื ืืืื ืื ืขื ืืกืืกื ืกืคืจืื ืืืจืช ืื ืืกืคืจืื ืฉืืื ืฆืจืืื ืืืืืช ืืืคืฉืืช.
ืืื ื ืื ืืืื ืืื ืืจืืืฉ ืื ืืื ืฉืจื. ืขืื ื 2014 ืืื ืจืื ืฉ chardet ืืื ืืกื ืืื ืืืืืฉ ืืืืฉ ืืคืืืชืื ืฉื ืงืื ืืฉื ืฉื ืืืืืื ืืืื ืืืืื ืืื ืฆืจืื ืืืืืช ืจืฉืื ื MPL. ืืื ืฉืจื ืืื ืืืชืืืง ืฉื ืืคืจืืืงื ื 2014, ืืืืืจ ื 12 ืืฉื ืื ืืืืจืื ืืช. ืืื ืฉืจื ืืื ืื ืฉืงืืื ืคื ืืืช ืืืฉืชืืฉืื ืฉืจืืฆืื ืืืฉืชืืฉ ื chardet ืืื ืืืืืื ืืืื ืืจืืฉืืื ืื ืืฆืื ืืืืจื ืืกืืจ ืืืฉืชืืฉ ื LGPL, ืื ืื ืื ืืฉืชืืฉืื ื pyinstaller, ืืื ืืืืฆืจ ืงืืืฅ exe ืืืื ืื ืืืืืืืื ืืืืืื ืืืืืช ืืืคืฉืืื. ื 2021 ืืื ืื ืืื ืฉืจื ืฉื ืืกื ืืงืื ืืช ืฉืื ืื ืืจืืฉืืื ืฉืื ืืจืื ืืื ืกืคืจืืืช requests ืืคืืคืืืจืืช ื ืคืจืืช ื chardet ืืืืืง ืืืื ื ืืฉื ืื.
ืื ืื ืืคืื ืฉืขื ืื ืืืืืืจืื ืขื ืงืืื ืงืื ืื ืืื ืฉืจื ืื ืขืื ืืคืืชืื? ืืื ืื ืืงืืื ืขื ืคืจืืืคื ืฉืืืืจ "ืชืื ื ืื ืกืคืจืื ืืืฉื ืฉืขืืฉื ืืืืืง ืื ืฉ chardet ืขืืฉื ืืื ืืื ืืงืืช ืืืื ืืืงืื ืืืงืืจื". ืงืืื ืืฆืจ ืืืืืฉ ืคื 43 ืืืืจ ืืืชืจ ืืืืื ืืืืชื ืืืื ืืื ืฉืื ืงืื ืืฉืืชืฃ. ืื ื ืืืื ืืจืกื 7 ืฉื chardet ืืืืชื ืจืื ืืชืืงืฉืจ ืขื ืืืืฆืจ ืืืงืืจื:
https://github.com/chardet/chardet/issues/327
ืื ืื ื ืื ืืืืขืื ืื ืืืื ืืขืชืื ืฉื ืขืืื ืืงืื ืืคืชืื. ืื ืืืืฉ ืฉืื ืืื ืฉืื ืฉืืืช ืืจืฉืืื ืืช ืืืืืืืื ืืืืืช ืืืืขืื ืขืงื ืืืกืจ ืืืืืช ืืืืคื.
1 419
ื PDD ืื ื ืคืฉืื ืืืชื "ืชืื ื ืื ืืฉืืง ืืืงืก ืขืืืื ืขื ืืืืงืืช ืืคืืืชืื" ืืืชืงื ืืืืืื ืืช ืืคืจืืืคื ืขื ืฉืืืฆื ืืฉืืง ืฉืื ื ืจืืฆื. ืฆืจืื ืืืืงื ืกืคืฆืืคืืช? ืืืกืืฃ ืืืชื ืืคืจืืืคื. ืฆืจืื ืืืืงื ืกืคืฆืืคืืช? ื ืืืืจ ืืืชื ืืคืจืืืคื.
ืืืืืืื ืืืจืืืืื ืืื ืืืืฉืืช:
1. ื TDD ืื ื ืืืงื ืฉืืืื ืขื ืืงืื. ืื ื ืืืืข ืื ืื ื ืืืชื ืืื ืฆืจืื ืืืืืชื. ืื ื ืงืืืข ืืช ืืืื ื ืฉื ืืงืื ืืืืืข ืืืืืง ืืื ืืจืื ืืงืื ืฉื AI ืืื ื. ืืืขื ืื ืืืื ืื ืืื ืขื ืืืืืช ืืกืืื ืืงืืืื ืื ืืงืจืื ืืช ืืงืื ืฉืื.
2. ื PDD ืื ื ืืืืชืจ ืขื ืืฉืืืื ืืืืืจ ืืชืคืจืื, ืืกืื ืื "ืชืจืื ืื ืื ืืคืฉืจ". ืคื ืืจืื ืืืชืจ ืืื ืืืื ืขื ืืืกืชืื ืขื ืกืืื ืืงืืืื ืขืืื ืืืงืจืื ืืช ืืงืื ืฉืื. ืืคืขืืื ืืคืฉืจ ืืืืื ืืืงืื ืฉืืื ืืฆืจ ืืืืืืช ืืืจืื ืืืฉืื. ืืคืขืืื ืื. ืืืืื ืฉื ืืืืงืืช ืืืืฉืช PDD ืืืื ืื ืืจืื ืืืชืจ ืืืืงืืช ืืื ืืืืืช ืืืืืช ืืืืืงืืช ืืืืืืช ืชืืื ืคืืืช ืืืื. ืืืืืื ืฉื ืืืืงืก ืขืืืื ืืฉื ืชืชื ื AI ืืื ืืช ืืช ืืงืื ืืื ืืืืช ืืชื ืืื ืืช ืืืืืงืืช ืืืืืืงื ืืื ืื ืืืืฉ ืืืืงืืช ืืืชืืื ืืืกื.
ืื ืขืฉืืชื ื ืืกืื, ื ืชืชื ืืกืืื ืืงืืืื ืืช ืืคืจืืืคื ืืื:
create a text based tic tac toe game in python with pytest. use uv
Use multiple modules for game logic and display
Implement pytest tests for both logic and display
ืืืื ืจืฆืืชื ืฉืืื ืืืชืื ืืืืงืืช ืชืฆืืื ืคืฉืืืืช ืืื ืฉืื ื ืืชืืชื ืืืืืื ืฉืืืืงืชื, ืืื ืื ืื ืื ืฉืงืจื. ืืืืื ืืชืฆืืื ืฉืกืืื ืืงืืืื ืืฆืจ ืืืื ืคืื ืงืฆืื ืฉืืฆืืืจืช ืืช ืืืื ืืืขืจื ืฉื ืฉืืจืืช ืืคืื ืงืฆืื ืืืจืช ืฉืืืคืืกื ืืช ืืืขืจื. ืืืืืงื ืืื ืขืืืื ืืืืงืช data ืฉืืืืงืช ืจืง ืืช ืืขืจื ืืฉืืจืืช ืืืืืจ:
def test_render_board_with_markers(self):
board = Board()
board.place_marker("A1", "X")
board.place_marker("B2", "O")
rendered = Display.render_board(board)
assert "X" in rendered
assert "O" in rendered
ื ืจืื ืฉ glm ืขืื ืืืื ืงืฉื ืจืง ืืฉืืื ืื ืืืฉืชืืฉ ื capsys ืฉื pytest ืืืคื ืืช ืงืื ืืืฉืืง ืืืืชืจ ืืกืืจืื.
ืื ืืืืจื ืืฉืืื ืฉืืืืชืจืช, ืืื TDD ืขืืืื ืจืืืื ืื? ืืคืขืืื. ืืขืืจืช TDD ืื ื ืืืื ืืืขืืืจ ืืช ืืืกืจ ืืกืืื ืืงืืืื ืืฆืืจื ืืจืื ืืืชืจ ืืืืืงืช ืืืฉืจ ืืขืืจืช ืคืจืืืคื ืืื ื ืืืกื ืืช ืืืืืืืืื ืขื ืืกืืื, ืืืืืื ืืฉืื ื ืืืืข ืืืื ืงืื ืื ื ืืฆืคื ืืจืืืช.1 419
๐ ืืื Test Driven Development ืขืืืื ืจืืืื ืื?
ืคืืชืื ืืื ืื ืืืืงืืช ืื TDD ืืื ืืจืขืืื ืฉืืืื ืื ืืืชืื ืงืืื ืืช ืืืืืงืืช ืืื ืืจืืืช ืืช ืืงืื, ืืื ืื ื ืืจืืืื ืื ืืืืงืืช ืฉื ืืงืื ืืื ืงืื ืืื ืืืชืจ ืฉืืืชืจ ืงื ืืืืืง ืืืชื. ื ืืกืืชื ืืช ืื ืืืื ืขื AI ืืื ืขืื ืืืคื, ืืืืืจ ืืชืืชื ืืื ืืืืงืืช ืฉืืฉืชืืฉืืช ืืคืื ืงืฆืืืช ืืืืืงืืช ืฉืืืฆืืชื, ื ืชืชื ื AI ืืืชืื ืืช ืืงืื, ืืคืขืืื ืื ืืฆืืื ืื, ืืคืขืืื ืืื ืืชืืื ื ืฉืืืืืงืืช ืฉืื ืื ืืืืื ืืืช. ืืฉืืื ืืฆืืื ืืื ืืื ืืื ืืื ืกืชื ืืช ืืงืื ืืืื ืืืชืงืืืชื. ืืฉืืื ืืชืืื ื ื ืืงืืชื ืืช ืื ืฉืืื ืืชื, ืชืืงื ืชื ืืช ืืืืืงืืช ืืฉืืืชื ืืืชื ืืืืฆืจ ืฉืื.
ืืกืืฃ ืงืืืืชื ืงืื ืขืืื ืฉืขืฉื ืืืืืง ืืช ืื ืฉืจืฆืืชื ืืืืื ื ืืืืงืืช ืฉืื ื ืืืจืชื. ืืคื ื ืฉื ืชืืื ืืืืชื ืืืชื ืขื ืื. ืืืื. ืืืื ืื ื ืื ืื ืื ืืืื.
ืืืืืจื ืืืื ืฉื TDD ืื ืื ืื ื ืืฉืชืืฉ ืืื ืื ื ืจืืื ืืชืขืฉืืื ืืื PDD, ืืืืืจ Prompt Driven Development. ืืืชืืื ืคืจืืืคื, ื ืืชื ืื ื AI ืืืืฆืจ ืงืื ืืืืืงืืช, ืงืืจืืื ืืช ืืืืืงืืช ืืืงืื, ืื ืืืืืื ืฉืืืจืื ืืื ืื ืืืืืื ืื ืงืื ืืืชืงื ืื ืืช ืืคืจืืืคื.
ืืืืืื ืขืืืจ ืืฉืืง ืืืงืก ืขืืืื ื TDD ืื ื ืืชืืื ืขื ืงืืืฅ ืืืืงืืช ืืื:
import pytest
import GameUI
def test_first_player_plays(game_logic):
game_logic.play(0, 0)
assert not game_logic.game_over()
assert game_logic.winner() is None
def test_second_player_plays_in_taken_square(game_logic):
game_logic.play(0, 0)
with pytest.raises(Exception):
game_logic.play(0, 0)
def test_player1_wins_first_row(game_logic):
game_logic.play(0, 0)
game_logic.play(1, 0)
game_logic.play(0, 1)
game_logic.play(1, 1)
game_logic.play(0, 2)
assert game_logic.game_over()
assert game_logic.winner() == game_logic.players[0]
def test_player2_wins_diagonal(game_logic):
game_logic.play(0, 1)
game_logic.play(0, 0)
game_logic.play(1, 0)
game_logic.play(1, 1)
game_logic.play(1, 2)
game_logic.play(2, 2)
assert game_logic.game_over()
assert game_logic.winner() == game_logic.players[1]
def test_cant_play_after_win(game_logic):
game_logic.play(0, 1)
game_logic.play(0, 0)
game_logic.play(1, 0)
game_logic.play(1, 1)
game_logic.play(1, 2)
game_logic.play(2, 2)
with pytest.raises(Exception):
game_logic.play(2, 0)
def test_show_empty_board(game_logic, capsys):
GameUI.print_current_game(game_logic)
printed_text = capsys.readouterr().out
assert printed_text == """Waiting for player X
. . .
. . .
. . .
"""
def test_show_board_after_play(game_logic, capsys):
game_logic.play(0, 0)
game_logic.play(1, 1)
game_logic.play(2, 0)
GameUI.print_current_game(game_logic)
printed_text = capsys.readouterr().out
assert printed_text == """Waiting for player O
X . .
. O .
X . .
"""
def test_show_draw(game_logic, capsys):
game_logic.play(0, 0) # X
game_logic.play(1, 1) # O
game_logic.play(2, 0) # X
game_logic.play(1, 0) # O
game_logic.play(1, 2) # X
game_logic.play(2, 1) # O
game_logic.play(0, 1) # X
game_logic.play(0, 2) # O
game_logic.play(2, 2) # X
GameUI.print_current_game(game_logic)
printed_text = capsys.readouterr().out
assert printed_text == """Game Over. It's a draw
X X O
O O X
X O X
"""
def test_show_player_1_won(game_logic, capsys):
game_logic.play(0, 0)
game_logic.play(1, 0)
game_logic.play(0, 1)
game_logic.play(1, 1)
game_logic.play(0, 2)
GameUI.print_current_game(game_logic)
printed_text = capsys.readouterr().out
assert printed_text == """Bravo! X Won
X X X
O O .
. . .
"""
def test_read_move_from_player(game_logic, monkeypatch, capsys):
monkeypatch.setattr("builtins.input", lambda _: "0, 0")
next_move = GameUI.read_next_move(game_logic)
game_logic.play(*next_move)
capsys.readouterr() # clear the buffer
GameUI.print_current_game(game_logic)
printed_after = capsys.readouterr().out
assert printed_after == """Waiting for player O
X . .
. . .
. . .
"""
ืืื ืืคืจืืืคื ืืืื ืคืฉืื ืืงืื ืืช GameLogic ืฉืืืืืง ืืชืืื ืืืืฉืง ืฉืืืืจืชื.1 419
ืืืืืื ืคืชืืืื ืฉืืกืืืืื ืืืชืื ืงืื ืื ืขื ืงืืื ืืืจืื ืื ืชืจืฆื ืืืจืืฅ ืืืชื ืขื ืืืืฉื ืืื ืืขื ื ืฉื Ollama (ืื ืืฉืจืช ืขื ื ืืืจ). ืืืืืืื ืืจืืืื ืืืื ืืืื ืืคืืชืื ืงืื ืื:
1. glm-5
2. minimax-2.5
3. kimi-k2.5
4. qwen3-coder-next
ืืืืื ืืืืข ืขื ืืื ืืืจืฆืื ืืืื ืืช ืืกืืื ื ืงืืืื ืืืคืฉืจ ืืงืจืื ืขืืื ืืื:
https://docs.ollama.com/integrations
ืืฉืืื ืืืจืืฅ ืืช ืงืืื ืงืื ืขื ืืืื ืฉื ืืืืื ื ืคืขืื:
ollama launch claude --model minimax-2.5:cloud
ืื ืื ืืืื ืืืจ ืฉืชืจืฆื. ืื ื ืฉืืชื ืื ืฉืืื ืืืงืก ืขืืื ืืืฉ ืืื ืขื ืงืืื ืงืื.
ืกืืื ืงืืืื ืืชืืจื ืฉื ืงืืื ืงืื ื ืงืจื OpenCode ืืื ืืืชื ืืคืฉืจ ืืืจืืฅ ืขื ืืืืื, ืคื ืฉืืชื ืื ืฉ glm-5 ืขืืื ืืื ืืืชืจ:
ollama launch opencode --model glm-5:cloud
ื .ื. ืื ื ืื ืืืืข ืืื ืงืืื ืงืื ืขืืื ืืืชืจ ืืื ืขื ืืื ืืืงืก ืืืืคืืงืื ืขืืื ืืืชืจ ืืื ืขื glm. ืื ื ืื ืืืืข ืฉืืืคืชืืื ืฉื ืงืืื ืงืื ืขืืืืื ืืื ืงืืื ืืืืฉื ืฉืืื ืืืงืก ืืืชืจ ืืืื ืืงืืื ืืชืฉืืืืช ืฉืื ืืืืคืชืืื ืฉื ืืืคืืงืื ืขืืืืื ืขื glm ืืืื ืื ืจืื ืืคืจืืืคืืื ืืืืืื ืฉืื ืืื ืื ื ืืืงื ืืขืืจื ืืืคืืืืืืฆืื ืืืืื ืื.
ืื ืืชื ืืขืืืคืื ืืขืืื ืืชืื VS Code ืืฉ ืืกืคืจ ืืื ืืืจืฆืืืช ื Ollama ืฉืชืืืื ืืืชืงืื ืืื cline, kilocode ื Roo Code ืืืื ืืืืขืืช ืืืชืืืจ ื Ollama. ื VS Code ืขืฆืื ืืฉ ืืื ืืืจืฆืื ืขื Ollama ืืื ืืื ืชืืื ืืื ืขืืืืช ืืืฆื ask ืืืื ืืื ืืืฆื ืกืืื ืื ืคืืืช ืจืืืื ืืืช.
โ ืืืื, ืืงืืกืืกืื ืืืขืชืื
ืืื ืฉืืืจืื ื ืจืืื ืขืืฉืื ืืืงืืกืืกืื ืืืื ืืื ืืจืืืคืจืืืื ืืืืืจ ืืฉ ืืคืจืื ืืื ืืืืื ืืกืืื. ืืื ืืื ืืื Ollama ื ืืชื ืื ื ืืคืฉืจืืช ืืืืจ ืืืื ืฉืื ื ืืื ืกืืื ืฉื ืืืจ - ืืื ืื ืื ืืืืืืฆืื (n8n), ืฉืืื (onyx) ืื ืืื ืคืืคืืืจื ืกืืื ืงืืืื.
ืืืืจืื ื ืื ืืจืืคืืง ืืฆืื ืืืชืงืคื ืืฉืคืืืช ืขื ืืืืจืืช ืืกืื ืืืช ืืืขื ื ืฉืื ืืืื ืืช ืืช ืืืืืืื ืฉืืื ืืชืื ืืืืืืื ืืงืืืืื ืฉื ืื ืืจืืคืืง ืืื ืืืกืืืช ืืขืฆืื ืขืืืืืช ืืืืฆืขืืช ืืชืงืคื ืฉื ืงืจืืช ืืืกืืืืฆืื. ืื ื ืื ืืืื ืืกืคืืง ืืฉืืื ืืืจืืื ืขื ืื ืืื ืืืื ืืฉืขืจ ืฉืื ืืคืฉืจ "ืืืขืชืืง" ืืืืืื ืืืื ืื ืฉืืฉืืื ืืขืฉืืช ืืช ืื ืืืืคืืฅ ืื ืืืืืื ืคืชืืืื. ืืคืืื ืืื ืืืกืืืืฆืืืช ืืฉ ืืืื ืืืื ืืืืืื ืคืชืืืื ืืืืืจืื ืฉื Ollama ืืฉื Hugging Face ืื ืฉื ืจืื ืฉืื ืื ืืืืืื ืืืืขืื.
ืืื ืกืคืง ืฉืืขืืื ืฉื ืืื ืคืืชืื ืืืืื ืืืืกืกื AI ืขืืืจ ืจืขืืืช ืืืื ืืฉืืขืืชืืช ืืชืงืืคื ืื ืืงืฉื ืืืขืช ืืื ืืืจืื ืืจืื ืืคืืื ืืขืื ืืืืฉ. ืืื ืืืื ืืจืืืคืจืืืืืืช ืคืืขืืช ืืืื ืืืืืชื ื. ืืื ืฉืื ืืขืื ืืืชืงืื Ollama ืืื ืกืืช ืืืืจ ืขื ืกืืื ืฉืืื ืคืชืื ืฉืจืฅ ืืฆืืื ืขื ืืืืฉื ืื ืขื ืกืืื ืงืืืื ืืขื ื ืฉื ืืืืื ืืื ืืืฉืืืช ืชืืฆืืืช.1 419
๐ ืกืืืื ืืืืื ืจ ืืืืืื ืคืชืืืื
ืืืคืืฉ ืืืืจืื AI ืืืืจืื ืืืืจื ื ืขื ืืืืืื ืืื ืืืื ืืืืืืื ืคืชืืืื. ืืฉืืืข ืืื ืืคืืฉ (ืืื ืงืฉืจ ืืืืืื, ืื ืืืืื ืฉืชืืื ื ืืจืืฉ ืืืฆื ืื ื ืืื). ืฉืืืข ืืื ืืชืืื ื ืืคืืฉ ืืฉืื ืขื ืืืฉืช ืฉืืืฉืช ืืฉืืืืช ืืืื ืืงืื ืงืื ืืื ืืกืืื ืงืืืื ืื ื ืืขืืื ืืื ืืืืืื ืืงืจืืช ืืืืฉื ืืื ืื ืืชืงืืื ืืคื ืืืฆื.
ืขืืฉืื ืืืื ื ืืืจ ืื ืืื ืื ื ืืฉืืืข ืฉืขืืจ.
โ ืืื ืืืืืื ืคืชืืืื
ืฉืืืฉ ืืืืจืืช ืืืืืืืช ืฉืืื ืืช ืืื AI ืื ืืืื, ืื ืืจืืคืืง ื OpenAI ืืืื ืืืช ืืืื ืืืืื ืืฉืื. ืืืจืืช ืืื ืืืืจืืช ืืื ืืช ืื ืืงืืกืืกืื ืฉืื ืกืืื ืืืืืืื - ืกืืื ื ืงืืืื, APIs, ืคืจืืืืงืืืื ืืขืืื ืฉืื ืฉื ืืืื.
ืืืื ืืื ืืืืง ืฉืืงืื ืืงืกื ืืืืืืจ ืืช ืืืฉื ืืืงืกื. ืืคืฉืจ ืืืืื ืฉืื "ืืืื" ืฉื ืื ืืื ืืื ื ืืืืืืชืืช. ืืืื ืขืฆืื ืขืืืฃ ืืช ืืืืื ืืืืืืฉ ืื ืคืื ืงืฆืืื ืืืืืช ืื ืืืืืจ ืืขืืื, ืืืืืื ืงืืื ืงืื ืืื ืกืืื ืงืืืื ืฉืขืืืฃ ืืืื ืืืืืจ ืืืชื ืืงืื. ืื ืืืฉืง ืืืื ืืฉืืื ืขื AI ืืื ืกืืื, ืืื ืขืืืฃ ืืช ืืืืื ืืืืืืืช ืฉืืืคืฉืจืืช ืืืคืืฉ ืืจืฉืช ืื ืืจืฆืช ืงืื.
ืืืืื, ืื ืืืื ืฉื ืืืื, ืืืื ืืืชื ืกืื ืืกืืื ืฉื ืืืืืช, ืชืฉืืืืช, ืืืฉื ืืืฉืืื. ืืืื GPT-5.2 ืื ืืืืืจ ืืช ืืืชื ืชืฉืืืืช ืืื Gemini Flash. ืืฉ ืืืื ืฉืืืฉืืื ืฉืฉืืืฉ ืืืจืืช ืื ืืกืคืืง ืืืคืืื ืืืชืจ ืืื ืืื ืืืขืชื ืชืืจืืช ืคื ืืื ืืืืืืช ืืืืกืืคื ืขื ืืื ืืืฉืืง. ืืื ืื ืื ืื ืื ืคืฉืื.
ืืฉืื ื ืฉืืื ืฉืืื ืืืืื ืฉืจืฅ ืืขื ื ืื ื ืกืืื ืขื ืกืคืง ืืืืื ืฉืืฉืืืจ ืขื ืืฉืืื ืฉืื ืืืชืฉืืื ืฉื ืืืืื ืืืืคื ืืืืืื. ืื ืืฉืืื ืืืืืช ืืืืข ืคืจืื ืื ืงืื ืฉื ืืืขืจืืช ืื ื ืกืืื ืขื ืกืคืง ืืืืื ืฉืื ืืฉืชืืฉ ืืงืื ืืื ืืืืจืื ืฉืื ืืจืฉืืชื. ืกืืืื ืืื ืฉืื ืื ื ืื ืืืื ืื ืืกืืื ืื ืขื ืื ืืื ืฉืืืขื ืฉืืฉ ืื ืืืื ืืืฉ.
ืืืืืื ืคืชืืืื ืืฆืืขืื ืื ื ืืจื ืืขืืื ืขื ืืืืืื ืืืฉืื ืืืื ืืช ืืืืฉ ืืืื. ืืืื ืคืชืื ืืื ืืืื ืฉืื ืืื ืืืื ืืืจืืฅ ืืืื ืื ื ืืืื ืืืจืืฅ ืืืชื ืขื ืืืืฉื ืฉืื ืื ืขื ืืืฉื ืืกืคืง ืขื ื ืขืืื ืื ื ืกืืื. ืงืืืืื ืืืืืื ืคืชืืืื ืฉืืกืคืจื ืืื ืืื ืื ืคืืชืื ืืช ืืืืื ืื ืืชื ืื ืืื ืืช ืื ืืืืื ืืื ืืช ืืช ืืืืื ืืื ืืฆืืื, ืืืฉ ืืืืืื ืคืชืืืื ืงืฆืช ืคืืืช ืืืืืืชืืื ืฉื ืืชื ืื ืืื ืจืง ืืช ืืืจืืฆืช ืืืฉืงืืื ืฉื ืืืืื, ืืืืืจ ื ืืื ืืืจืืฅ ืืช ืืืืื ืขื ืืืืฉื ืฉืื ื ืืื ืื ื ืืื ืืื ืืช ืืืจืืฆื ืืืืช ืืืคืก ืืื ื ืืข ืืืืื ืืืืข ืืืืื ื ืืฆืจ.
ืืืืืื ืคืชืืืื ืืืกืืคืื ืืชืืจืืช - ืืืงื ืืืื ืื ืืขื ืืช ืขื ืฉืืืืช ืื ืืฉืืื ืฉืฉืืืฉืช ืืืืืืื ืืจืืืืื ืื ืขืื ืื, ืืืงื ืืฆืืื ืชืฉืืืืช ืืืฉืืช ืืืฆืืจืชืืืช ืืฉืืืืช ืืืืื ืืืื ืืจืื ืืืชืจ ืืืืื ืืฉืืืฉืช ืืืืืืื ืืืืืืื ืื ืืชื ืืืืืื ืืืจืืฅ ืืืชื ืขื ืืืืจื ืฉืืื.
ืื ืืกืฃ ืืืืืืื ืืคืชืืืื ืืฉ ืื ืืืืืื ืืื ืืืื. ืืื ืืืืืื ืฉืืืจืืช ืืฆืืขืืช ืืฆืืจื ืืืืงื ืืงืืืื ืืืืจืืช, ืืจืื ืื ืืืฆืขื ืชืืช ืฉื ืืืื ืืืจื ืืชืจ OpenRouter ืืืงืื ืืจื ืืชืจ ืืืืจื ืขืฆืื. ืืืืื ืืืื ืื ืืืคืฉืจ ืืื ืืืฉื ืืื ืชืฉืืื ืืืชืืืจื ืื ืืฉืชืืฉืื ืืฉืืืืช ืืื ืืฉืคืจ ืืช ืืืืื ืื ืืืกืืฃ ืืืืข ืขื ืฉืืืืช ืฉื ืฉืืืืช. ืฉืืื ืื ืฉืืืื ืืื ืื ืืื ื ืืืื ืคืชืื, ืืคืขืืื ืืชืฉืืืืช ืฉืื ืืืื ืืืืืช ืืืชืจ ืืชืืื ืืืื ืคื ืืืืฉืื ืืืืชืืจ ืขื ืคืจืืืืช ืืขืืืื ืืืชื.
โ ืืื ืขืืืืื ืขื ืืืืืื ืคืชืืืื
ืืืื ืืืืื ืขืืื ืืขืืืื ืขื ืืืืืื ืคืชืืืื ื ืงืจื Ollama (ืืฉ ืขืื. ืืืืื ืืื ืคืฉืื ืืืืื ืขืืื). ืืคืฉืจ ืืืืจืื ืืืชื ืืืืชืจ ืฉืืื ืืื:
https://ollama.com/
ืืืืื ืืฆืืข ืฉื ื ืืกืืืืื ืืขืืืื ืขื ืืืืืืื ืืคืชืืืื:
1. ื ืืชื ืืืืจืื ืืืืจืืฅ ืืืืฆืขืืชื ืืืืืื ืขื ืืืืฉื ืฉืืื.
2. ื ืืชื ืืืฉืชืืฉ ืื ืืื ืืืชืืืจ ืืืืืืื ืคืชืืืื ืฉืจืฆืื ืขื ืฉืจืช ืืขื ื ืฉืืื.
ืืืืืจ ืกืืื ืฉื 20$ ืืืืืฉ ืชืงืืื ืืืฉื ืืืขื ืืื ืืืืื ืืขื ื ืฉื Ollama ืืชืืืื ืืขืืื ืขื ืื ืืืืืืื ืืคืชืืืื ืฉื. ืืฉืืื ืืืจืืฅ ืืืืืื ืืฆืืื ืขื ืืืืฉื ืื ืฆืจืื ืืฉืื ืฉืงื ืืื ืืจืืฉื ืืืืจื ืืืงื. ืืืืืช ืืืืื ื ืงืืขืช ืืคื ืกืื ืืืืื ืืืคื ืืกืคืจ ืืคืจืืืจืื ืืืืจืืฆืช ืืืฉืงืืื. ืื ื ืกืชืื ืืืืืื ืขื deepseek ืื ื ืจืื ืืืชืจ ืฉื ืืืืื ืฉืืฉ ืื ืืกืคืจ ืืจืกืืืช, ืืจืืฉืืืช ืื 1, 2 ื-3. ืืื ืืจืกื ืืฉ ืืื ืืคืฉืจืืืืช ืืืืื ืืืคืจืืืจืื ืืืืืื deepseek-coder ืฉืื ืืจืกื ืฉื ืืืืื ืืืคื ื ืฉื ืชืืื ืืืืืขืืช ืืงืืืื ื ืืชื ืช ืืืืจืื ืืืจืกืช 1.3 ืืืืืืจื ืคืจืืืจืื, 6.7 ืืืืืืจื ืคืจืืืจืื ืื 33 ืืืืืืจื ืคืจืืืจืื. ืืกืคืจ ืืคืจืืืจืื ืืฉืคืืข ืขื ืืืืื ืืืืจืกื ืืืืืื ืืืืชืจ 33 ืืืืืืจื ืคืจืืืจืื ืชืืคืกืช 19 ืืณืืื.
ืืืื gpt-oss ืฉืืื ืืืื ืคืชืื ืืืืช OpenAI ืืืืข ืืืจืกืช 20 ืืืืืืจื ืคืจืืืจืื ื 120 ืืืืืืจื ืืืจืกืช ื 120 ืืืืืืจื ืืื ืืืืื 65 ื'ืืื.
ืืฉืืื ืืฉืืื ืฉืืืืช ืืฉืืื ืชืกืคืืง ืื ื ืืจืกื ืงืื ื ืฉื 6-7 ืืืืืืจื ืคืจืืืจืื. ืืฉืืื ืกืืื ืงืืืื ืืคืืื ื 120 ืืืืืืจื ืขืืื ืืืืืช ืืกืืกื ืืื.
ืืืืื ืืกืคืง ืืคืืืงืฆืื ืืจืคืืช ืืจืื ืืคืฉืจ ืืืืจ ืขื ืืืืืื, ืืฉืืื ืฉืืืืช ืืืจืืืช ืืช ืืชืฉืืืืช ืฉืืื ืืืคืืืงืฆืื. ืฉืืื ืืืฉืชืืฉ ืื ืืฉืืชืืืขืฆืื ืขื ืืืืืื ืืงืืืืื ืืื ืืงืื ืคืจืืืืช ืืืจืืืช ืืฉืืื ืขื ื AI.
โ ืืื ืืืชืื ืงืื ืขื ืืืื ืคืชืื
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
