Skip to content

OmniThink: Expanding Knowledge Boundaries in Machine Writing through Thinking

License

Notifications You must be signed in to change notification settings

zjunlp/OmniThink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OmniThink

Expanding Knowledge Boundaries in Machine Writing through Thinking

👏 Welcome to try OmniThink in our Modelscope online demo!

[🤖Project] [📄Paper]

Table of Contents


Due to the recent high volume of visitors, search API quota limitations, you may encounter an error:'ValueError: Expected 2D array, got 1D array instead: array=[]. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.'If this error occurs, please try again in a few hours.

📖 Quick Start

  • 🌏 The Online Demo is avaiable at ModelScope now!

📌 Introduction

Welcome to OmniThink, an innovative machine writing framework designed to replicate the human cognitive process of iterative expansion and reflection in generating insightful long-form articles.

  • Iterative Expansion and Reflection: OmniThink uses a unique mechanism that simulates human cognitive behaviors to deepen the understanding of complex topics.
  • Enhanced Knowledge Density: OmniThink focuses on expanding knowledge boundaries, resulting in articles that are rich in information and insights.
  • Comprehensive Article Generation: OmniThink constructs outlines and generates articles, delivering high-quality content that is both coherent and contextually robust.

🛠 Dependencies

conda create -n OmniThink python=3.11
git clone https://github.com/zjunlp/OmniThink.git
cd OmniThink
# Install requirements
pip install -r requirement.txt

🔑 Before running, please export the OPENAI API key or Dashscope API key and SEARCH key as an environment variable:

export OPENAI_API_KEY=YOUR_API_KEY
export SEARCHKEY=YOUR_SEARCHKEY

or

export DASHSCOPE_KEY=YOUR_API_KEY
export SEARCHKEY=YOUR_SEARCHKEY

You can define your own LLM API and SEARCH API

Note that the output of the LLM should be a LIST.

Results in OmniThink

The preformance of OmniThink is shown below:

Generate Article in OmniThink

Just one command required

sh run.sh

You can find your Article, Outline and mindmap in ./results/

🔍 Evaluation

We are organizing the evaluation code and will open source it soon.

🌻Acknowledgement

Citation

If you find our repo useful in your research, please kindly consider cite:

@misc{xi2025omnithinkexpandingknowledgeboundaries,
      title={OmniThink: Expanding Knowledge Boundaries in Machine Writing through Thinking}, 
      author={Zekun Xi and Wenbiao Yin and Jizhan Fang and Jialong Wu and Runnan Fang and Ningyu Zhang and Jiang Yong and Pengjun Xie and Fei Huang and Huajun Chen},
      year={2025},
      eprint={2501.09751},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2501.09751}, 
}