Skip to content

論文「InsightCoT: Injecting Expert Problem Reframing into Large Language Models for Zero-Shot Task Planning and Execution」的官方實現。

License

Notifications You must be signed in to change notification settings

Chunjiang-Intelligence/InsightCoT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InsightCoT:賦予語言模型專家級的反思性推理能力

摘要

大型語言模型(LLMs)在處理從模糊的用戶查詢到生成高質量、可執行的輸出這一任務時,常常遇到困難。這類任務通常需要人類在提示工程方面具備深厚的專業知識。本项目引入了 InsightCoT (Insightful Chain-of-Thought,富有洞察的思維鏈),一個旨在將這種專家級的推理過程內化到模型自身的框架。採用 InsightCoT 的模型不再被動地執行指令,而是首先進行一個反思性的推理過程:(1) 生成一個高層次的 <insight>,像專家顧問的初步診斷一樣,對問題進行專業的重新定義;(2) 構建一個結構化的 <think> 過程,這是一個基於洞察推導出的分步計劃。這種結構化的深思熟慮過程,能夠引導模型生成更優質、更合理且過程透明的最終輸出。我們提供了兩種不同的路徑來實現 InsightCoT:一是通過我們提供的 LangChain 應用程序,使用提示工程直接引導;二是通過我們的數據合成管道,進行模型微調以實現深度集成。

1. 核心概念

InsightCoT 的基本假設是:大型語言模型輸出的質量,從根本上受其上下文質量的制約。通過強制模型首先生成其自身的專家級上下文——即 <insight> 模塊——我們創建了一種“自我啟動”機制。這個過程將一個簡單的用戶查詢,在模型自身的生成流程中,轉化為一個豐富、結構化的提示,從而引導其後續的詞元(token)選擇,朝向一個更專業、更精確的解空間。

該框架有效地將模型從一個簡單的指令執行者,轉變為一個主動的問題解決者,模擬了人類專家的認知工作流。

2. 實現方法

我們提出了兩種主要方法來應用 InsightCoT 框架。

2.1. 方法 A:使用 LangChain 進行提示工程(引導式)

該方法利用一個精心設計的元提示從強大的基礎模型(如 GPT-4o, Claude 3 Opus)中引導出 InsightCoT 結構,而無需任何模型訓練。為了方便實現,我們提供了一個即開即用的 LangChain 應用程序。

🚀 LangChain 應用程序快速入門

這個交互式的 Streamlit 應用程序允許您實時體驗 InsightCoT 的提示策略。

先決條件:

  • Python 3.9+
  • 一個 OpenAI API 密鑰(或其他支持的服務提供商)

安裝配置:

  1. 克隆倉庫並安裝依賴項:

    git clone https://github.com/your-username/InsightCoT.git
    cd InsightCoT
    pip install -r requirements.txt
  2. 設置您的環境變量: 在項目根目錄下創建一個 .env 文件,並添加您的 API 密鑰:

    OPENAI_API_KEY="sk-..."
    # 或者,對於其他模型如 Anthropic:
    # ANTHROPIC_API_KEY="..."
    
  3. 運行應用程序:

    streamlit run app.py

這將啟動一個本地 Web 服務器,您可以在其中輸入您的查詢,並看到模型以結構化的 InsightCoT 格式生成響應。

2.2. 方法 B:訓練

這是一種更進階的方法,旨在將 InsightCoT 的推理模式內化為模型的一種原生能力。這可以通過在一個 (簡單查詢, InsightCoT答案) 數據集上微調一個基礎 LLM 來實現。

微調流程

  1. 數據合成

    • 我們提供了一個腳本 generate_data.py,它使用一個強大的教師模型(如 GPT-4o)和 generator_prompt_template.txt 中的提示模板,來合成所需 JSONL 格式的高質量數據集。
    • 準備工作:在 input_questions.txt 文件中準備好您的簡單查詢列表。
    • 執行
      # 確保已從 requirements.txt 安裝依賴項
      python generate_data.py
    • 輸出:該腳本會生成 synthetic_data.jsonl,這就是您的訓練數據集。
  2. 模型微調

    • 合成的數據集與標準的微調庫兼容,如 Hugging Face TRL、Axolotl 和 Llama-Factory。
    • 微調的目標是在一個監督式微調(SFT)任務上訓練模型,其中輸入是用戶查詢,輸出是完整的 InsightCoT 響應。
  3. 推理

    • 微調完成後,模型不再需要複雜的元提示。當面對一個簡單查詢時,它將自發地以 InsightCoT 格式產生響應,因為它已經將這種結構學習為其處理複雜任務的默認推理模式。

3. 貢獻與未來工作

本項目為增強 LLM 的推理能力提供了一個具體的框架和配套工具。未來的工作可能包括:

  • 開發更複雜的數據合成技術。
  • 訓練並發布預先微調好的 InsightCoT 模型。

About

論文「InsightCoT: Injecting Expert Problem Reframing into Large Language Models for Zero-Shot Task Planning and Execution」的官方實現。

Topics

Resources

License

Stars

Watchers

Forks