hist-pred-extractor is a tiny Python package that extracts and structures historical predictions (foresights, prophecies, or prognostications) from free‑form text.
Given a passage about a historical figure or event, the tool uses a LLM to locate statements that contain a prediction, validates them against a strict regex pattern, and returns a clean, structured list of the extracted predictions together with their context.
The package is useful for historians, researchers, educators, and anyone who wants to systematically analyse historical foresights.
- One‑function API – just pass a string (and optionally a custom LLM or API key).
- LLM‑agnostic – defaults to
ChatLLM7(vialangchain_llm7) but works with any LangChain chat model. - Regex‑validated output – ensures extracted data follows the pattern defined in
prompts.pattern. - Zero‑configuration – works out of the box with the free tier of LLM7.
pip install hist_pred_extractorfrom hist_pred_extractor import hist_pred_extractor
# Simple call – uses the default ChatLLM7 and the LLM7_API_KEY
text = """
In 1846, the astronomer John Herschel wrote: "In the next fifty years, the continents will drift apart,
forming the Atlantic as we know it today." This prediction was later confirmed by plate tectonics.
"""
predictions = hist_pred_extractor(user_input=text)
print(predictions)
# Example output:
# [
# "In the next fifty years, the continents will drift apart, forming the Atlantic as we know it today."
# ]| Parameter | Type | Description |
|---|---|---|
| user_input | str |
The raw text containing historical statements to be analysed. |
| llm | Optional[BaseChatModel] |
A LangChain chat model instance. If omitted, the function creates a ChatLLM7 instance automatically. |
| api_key | Optional[str] |
API key for LLM7. If not supplied, the function reads the LLM7_API_KEY environment variable, falling back to the default free‑tier key. |
Returns: List[str] – a list of extracted prediction strings that match the internal regex pattern.
You can supply any LangChain‑compatible chat model, e.g. OpenAI, Anthropic, or Google Gemini.
from langchain_openai import ChatOpenAI
from hist_pred_extractor import hist_pred_extractor
llm = ChatOpenAI(model="gpt-4o-mini")
predictions = hist_pred_extractor(user_input="...", llm=llm)from langchain_anthropic import ChatAnthropic
from hist_pred_extractor import hist_pred_extractor
llm = ChatAnthropic()
predictions = hist_pred_extractor(user_input="...", llm=llm)from langchain_google_genai import ChatGoogleGenerativeAI
from hist_pred_extractor import hist_pred_extractor
llm = ChatGoogleGenerativeAI(model="gemini-1.5-flash")
predictions = hist_pred_extractor(user_input="...", llm=llm)- The default free tier of LLM7 provides enough calls for typical research tasks.
- For higher throughput, set your own key:
export LLM7_API_KEY="your_api_key_here"or pass it directly:
predictions = hist_pred_extractor(user_input="...", api_key="your_api_key_here")You can obtain a free API key by registering at https://token.llm7.io/.
- Issue Tracker: https://github.com/chigwell/hist_pred_extractor/issues
- Feel free to open a GitHub issue for bugs, feature requests, or questions.
This project is licensed under the MIT License.
Eugene Evstafev – hi@euegne.plus
GitHub: chigwell
- ChatLLM7 from the
langchain_llm7package: https://pypi.org/project/langchain-llm7/ - LangChain framework for unified LLM access.