O-Reasonable 🧠
A lightweight reasoning agent designed to mimic logical planning and problem-solving capabilities using cost-effective OpenAI models. It generates step-by-step plans, executes them sequentially, and synthesizes a final answer.
[
]
Features
- 🎯 Dynamic model selection with sensible defaults
- 📋 Structured step-by-step planning
- 🔄 Sequential execution of reasoning steps
- 🎨 Clean and informative console output
- ⚡ Built with TypeScript and Vite
Installation
npm install o-reasonable
Configuration
You'll need to set up your OpenAI API key as an environment variable:
export OPENAI_API_KEY=your-api-key-here
Or create a .env file in your project root:
OPENAI_API_KEY=your-api-key-here
Usage
import { runAgent } from 'o-reasonable';
const result = await runAgent("What would be the impact of implementing a four-day work week?");
const result = await runAgent("Analyze the pros and cons of remote work", {
model: "gpt-4o-mini",
enableLogs: false
});
console.log(result.steps);
console.log(result.finalQuestion);
console.log(result.finalAnswer);
Configuration Options
The runAgent function accepts a configuration object with the following options:
interface OReasonableConfig {
model?: string;
apiKey?: string;
baseURL?: string;
enableLogs?: boolean;
}
Using OpenAI-Compatible APIs
O-Reasonable supports any OpenAI-compatible API by specifying a custom baseURL. Here are some examples:
Local Models (Ollama, LM Studio, etc.)
import { runAgent } from 'o-reasonable';
const result = await runAgent("Explain quantum computing", {
baseURL: "http://localhost:11434/v1",
model: "llama2",
apiKey: "ollama"
});
const result = await runAgent("What are the benefits of TypeScript?", {
baseURL: "http://localhost:1234/v1",
model: "local-model",
apiKey: "lm-studio"
});
Azure OpenAI
const result = await runAgent("Analyze market trends", {
baseURL: "https://your-resource.openai.azure.com",
model: "gpt-35-turbo",
apiKey: process.env.AZURE_OPENAI_API_KEY
});
Other OpenAI-Compatible Providers
const result = await runAgent("Create a project plan", {
baseURL: "https://api.your-provider.com/v1",
model: "your-model-name",
apiKey: "your-api-key"
});
Return Type
The runAgent function returns a promise that resolves to an AgentResult:
interface AgentResult {
steps: string[];
finalQuestion: string;
finalAnswer: string;
}
Development
To set up the development environment:
git clone https://github.com/chihebnabil/o-reasonable.git
cd o-reasonable
npm install
npm run dev
Building
npm run build
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
Credits
Created with ❤️ by Chiheb Nabil