μ΄κ²μ μ£Όλ‘ νΈμΆκ³Ό μλ΅ λ°©μμ λ΄μ λλ€(μ€μ λ μΉ΄ν κ³ λ¦¬μμ μ£Όμ κ° μμ±λλ©΄ μλμΌλ‘ μ€νλκΈ°λ ν©λλ€). νμ¬λ λͺ¨λλ μ΄ν° μν μ μννλλ‘ μ€κ³λμ΄ μμ§ μμ΅λλ€.
μ, λ°©κΈ μ λ°μ΄νΈλ₯Ό λ§μ³€μ΅λλ€ (100μ»€λ° μ λλ§ λ€μ²μ Έ μμμ΅λλ€). μ½μ΄μμ μ±ν μ¬μ©μ μν₯μ λ―ΈμΉλ νΈνμ± κΉ¨μ§(breaking change)μ΄ μκΈ΄ κ² κ°μ΅λλ€. νμΈν΄ λ³΄κ² μ΅λλ€.
κ·Έλμ λΉ λ₯Έ μ€ν(Quick Launch)μ κ°μΈ λ©μμ§λ‘ μ νν΄ λ³΄μ€ μ μμ΅λλ€.
νλ¬κ·ΈμΈμ μ λ°μ΄νΈνμ΅λλ€.
μ±ν μ΄ μ΄μ κ³Ό λμΌνκ² μλν΄μΌ ν©λλ€:
λν μ±ν μ€λ λ(Chat Threads) μ§μλ μΆκ°νμ΅λλ€.
μ΄μ μ±λ΄μ 컨ν μ€νΈλ νμ¬ μ±ν μ€λ λλ‘ μ νλλ©°, νμ¬ μ€λ λμ λν΄μλ§ μλ΅ν΄μΌ ν©λλ€.
λ¬Έμ κ° λ°μνλ©΄ μλ €μ£ΌμΈμ.
1.3 릴리μ€λ‘ μΈν΄ ν¬λΌ κ²μμ΄ μλνμ§ μλ λ¬Έμ κ° λ°μνμΌλ, μ΄μ μμ λμμ΅λλ€.
3μκ° μ μ μ λ°μ΄νΈνμ§λ§ μ¬μ ν λμΌν μ€λ₯κ° λ°μνκ³ μμ΅λλ€.
activesupport-7.1.4.1/lib/active_support/broadcast_logger.rb:134:in `block in error'
activesupport-7.1.4.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
activesupport-7.1.4.1/lib/active_support/broadcast_logger.rb:231:in `each'
activesupport-7.1.4.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
activesupport-7.1.4.1/lib/active_support/broadcast_logger.rb:134:in `error'
/var/www/discourse/plugins/discourse-chatbot/lib/discourse_chatbot/message/message_reply_creator.rb:38:in `rescue in create'
/var/www/discourse/plugins/discourse-chatbot/lib/discourse_chatbot/message/message_reply_creator.rb:11:in `create'
/var/www/discourse/plugins/discourse-chatbot/app/jobs/regular/chatbot_reply.rb:150:in `execute'
/var/www/discourse/app/jobs/base.rb:322:in `block (2 levels) in perform'
rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:309:in `block in perform'
/var/www/discourse/app/jobs/base.rb:305:in `each'
/var/www/discourse/app/jobs/base.rb:305:in `perform'
sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'
sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'
sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'
sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'
sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'
sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'
sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'
sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'
sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'
sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'
sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'
sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'
sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'
sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'
sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread'
κ·Έλ¦¬κ³ μ¬μ΄νΈλ₯Ό μμ ν λ€μ ꡬμΆν 건κ°μ?
νλ¬κ·ΈμΈμ μ κ·Έλ μ΄λνλ κ²λ§μΌλ‘λ μΆ©λΆνμ ν λ°μ.
νμ¬ μ¬μ© μ€μΈ λ²μ μ 무μμΈκ°μ? νλ¬κ·ΈμΈκ³Ό Discourse λͺ¨λμ.
μ΄ μμ μ¬νμ λ°°ν¬νκ³ μ κ·Έλ μ΄λν ν, ν΄λΉ λ¬Έμ λ₯Ό μ¬νν μ μμ΅λλ€(νμ§λ§ κ·Έ μ μλ λΆλͺ ν μ¬νν μ μμμ΅λλ€).
μμ ν μ¬λΉλ μ΄νμ μλν©λλ€. μκ° λ΄μ΄ μ£Όμ μ κ°μ¬ν©λλ€!
μ΅κ·Ό μ λ°μ΄νΈ μ΄ν λ΄μ΄ μλ΅μ λ©μΆκ³ λ€μκ³Ό κ°μ μ€λ₯λ₯Ό νμν©λλ€:
Chatbot: λ¬Έμ κ° λ°μνμ§λ§ νλκΉμ§ μ¬μλν©λλ€: DiscourseChatbot::OpenAiBotBasic μΈμ€ν΄μ€μμ λ‘컬 λ³μ λλ λ©μλ
resκ° μ μλμ§ μμ
Job exception: DiscourseChatbot::OpenAiBotBasic μΈμ€ν΄μ€μμ λ‘컬 λ³μ λλ λ©μλ
resκ° μ μλμ§ μμ
μ΄ μ€λ₯μ λν΄ μμλ μ μ΄ μμΌμ κ°μ?
무μμ΄ λ¬Έμ μΈμ§ μ§μμ΄ κ°λ κ² κ°μ΅λλ€. νμΈν΄μ λ€μ μλ €λλ¦¬κ² μ΅λλ€.
μΆμΈ‘컨λ, RAG λ΄μλ λ¬Έμ κ° μλμ?
μ΄μ μμ λμμ κ²μ λλ€:
μ λ°μ΄νΈ ν νμΈν΄ μ£ΌμΈμ.
μ λ§ μκΈ°λ€μ. μ κ° λ€μ λΉλν μ§ λ° μκ°μ―€ λ€μ λ μμ μ΄ μ μ©λμ΄μ ![]()
μμ ν΄ μ£Όμ
μ κ°μ¬ν©λλ€. νμ΄λ°μ μ’β¦ ![]()
λ€, μ΄μ μλν©λλ€. κ°μ¬ν©λλ€.
μ΄ νλ¬κ·ΈμΈμ λ§λ€μ΄ μ£Όμ μ κ°μ¬ν©λλ€! μ€μΉλ₯Ό μλ£νκ³ , λͺ¨λ κ²μ΄ μ λ κ² κ°μ΅λλ€ (λͺ¨λ μ€μ μ΄ μκ³ , API ν€, OpenAI ν¬λ λ§μ΄ μμΌλ©°, μ±λ΄μ΄ μ¬μ©μλ‘ μΆκ°λμκ³ , μ λ₯Ό κ³ μ λ’° κ·Έλ£Ή μ€ νλλ‘ μ€μ νμ΅λλ€). νμ§λ§ μ±ν λ°μ€μμ μλ΅μ λ°μ§ λͺ»ν©λλ€. κ°μΈ μ±ν μ΄λ κ³΅κ° μ±ν μ΄λ λ§μ°¬κ°μ§μ λλ€. μ κ° λ¬΄μμ μλͺ»νκ³ μλμ§, μ΄λ€ μ 보λ₯Ό 곡μ ν΄μΌ ν μ§ λͺ¨λ₯΄κ² μ΅λλ€.
λν, βμ±λ΄κ³Ό λννκΈ°β λ²νΌμ ν΄λ¦ν΄λ μ무 λ°μμ΄ μμ΅λλ€. ![]()
λ§μ΄ λΉ¨λλ€. λ΄ μ΄λ¦μ λ°κΏ¨κΈ° λλ¬Έμ΄μλ€. μ΄μ λͺ κ°μ λ©μμ§λ§ 보λλλ° μ ν λΉλμ λλ¬νλμ§ μμλ΄μΌ νλ€.
μ¬μ©μκ° νμ¬ μ΄λ€ Chatbot μ λ’° μμ€μ μλμ§ νμΈνμΈμ.
μΈ κ°μ§ "μ λ’° μμ€"μ κ°κ° Discourse κ·Έλ£Ήμ λͺ¨μμ λλ€.
μΌλ°μ μΌλ‘ κ΄λ¦¬μλ Highμ ν¬ν¨λ κ·Έλ£Ήμ μνλλ‘ μ€μ ν©λλ€.
κΈ°λ³Έ μ λ΅μΈ 쿼리 μΆμ (chatbot_quota_basis)μΌλ‘ μμνλ κ²μ κΆμ₯ν©λλ€. μ΄ μ€μ μ ν ν°μΌλ‘ λ³κ²½ν κ²½μ°, κ° μΏΌλ¦¬κ° μμ² κ°μ ν ν°μ μλͺ¨ν μ μμΌλ―λ‘ λͺ¨λ μ λ’° μμ€μ κΈ°λ³Έ ν λΉλμ ν¬κ² λλ €μΌ ν©λλ€. κΈ°λ³Έκ°μ 쿼리 μ²λ¦¬λ₯Ό μ§μνλλ‘ μ€μ λμ΄ μμ΅λλ€.
λ€, μ λ κ³ μ λ’° κ·Έλ£Ήμ μν΄ μμ΅λλ€. κ·Έλ¦¬κ³ ν λΉλ κΈ°μ€μ μΏΌλ¦¬λ‘ μ€μ ν΄ λμμ΅λλ€. μ±λ΄μ΄ μ§λ¬Έμ νλλ₯Ό λ΅λ³ν ν λ°λ‘ λ€μκ³Ό κ°μ΄ νμνμ΅λλ€: *
*
ν΄λΉ νΈλ¦¬κ±° λ²νΌμ λλ¬ sidekiqμμ μΏΌν° λ¦¬μ μμ μ μ€νν΄ λ³΄μΈμ:
κ·Έ ν λ΄μκ² λ¨μ μΏΌν°κ° μΌλ§μΈμ§ λ¬Όμ΄λ³΄μΈμ.
μ’μμ!
νμ§λ§ μ, Ro-Botμ΄ κ±°μ§λ§μ νλ€μ (μ΄κ²μ LLMμ νκ³μ λλ€).
μμ€ν ν둬ννΈμ μΆκ°νμ§ μλ ν Ro-Botμ μ΄λ₯Ό μ μ μμΌλ©°, μ΄λ€ 쿼리λ μΏΌν°λ₯Ό μλͺ¨νκ² λ©λλ€ (μΏΌν°κ° μμ§λ λκΉμ§).

