From b33cba3ae9b76d636116c7a2c1b7193ae9a218d0 Mon Sep 17 00:00:00 2001 From: namtranase Date: Fri, 26 Jan 2024 16:34:07 +0700 Subject: [PATCH] update: version 1.0.2 --- README.md | 117 +++++++------------ assets/helper.png | Bin 0 -> 97002 bytes config/temi_config.json | 4 + llama.cpp | 2 +- temi-packaging/usr/local/bin/config_setup.sh | 61 ++++++++++ temi-packaging/usr/local/bin/temi | 42 +++++-- 6 files changed, 142 insertions(+), 84 deletions(-) create mode 100644 assets/helper.png create mode 100644 config/temi_config.json create mode 100644 temi-packaging/usr/local/bin/config_setup.sh diff --git a/README.md b/README.md index de3daa7..8b6edf5 100644 --- a/README.md +++ b/README.md @@ -4,103 +4,76 @@ terminalmind logo

-**Current Version: v1.0.1** +**Latest Version: v1.0.2** -### What's New in v1.0.1 +[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT) -- **New Feature**: Integration with `llama.cpp` framework, enhancing the tool's capabilities. -- **Bug Fixed**: Remove prompt input for better user experiments -- **Documentation Updates**: Release notes added along with updated instructions for working with llama.cpp +Enhance your coding and command-line efficiency with `terminalmind`, now known as `temi`. Get relevant code snippets, process text and PDF data without leaving your terminal, and maintain a seamless workflow. -For more detailed information, please see the [release notes](https://github.com/namtranase/terminalmind/releases/tag/v1.0.0). -[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT) +### 🚀 What's New + +- Simplified configuration via `config.json` +- Enhanced helper interface for user commands +- Cleaner and more accessible documentation + +Explore the [release notes](https://github.com/namtranase/terminalmind/releases/tag/v1.0.2) for more details. -`terminalmind`, now accessible via the `temi` command, is a command-line tool designed to enhance coding efficiency by suggesting relevant code snippets and facilitating text and PDF data processing directly in the terminal. This approach promotes a seamless development workflow, keeping developers focused within their coding environment. +## 🙏 Acknowledgments -## Acknowledgments +A huge shoutout to [Georgi Gerganov](https://github.com/ggerganov) and all contributors of [llama.cpp](https://github.com/ggerganov/llama.cpp) for their pioneering work. -`terminalmind` builds on the work of the [llama.cpp](https://github.com/ggerganov/llama.cpp) project. Special thanks to [Georgi Gerganov](https://github.com/ggerganov) and contributors for their groundbreaking work in creating a C++ interface for the LLM model. We encourage `terminalmind` users and developers to support and contribute to `llama.cpp`. -## Supported Features +## ✨ Supported Features Demo:

Examples

-- [x] **Q&A in Terminal**: Interactive question-and-answer functionality directly in your command line. -- [x] **PDF Information Retrieval**: Extract and analyze information from both local and web-based PDF files based on keyword. -- [x] **Online Article Summarization**: Quickly summarize the content of online articles with a simple command. -- [x] **temi integrates the llama.cpp framework**: `temi` now supports multiple models provided by the llama.cpp framework, enhancing its functionality. -- [ ] **Command Execution Based on User Input**: *Upcoming feature* to execute relevant terminal commands automatically based on user queries. -- [ ] **GPU Acceleration for Enhanced Performance**: *In development* – leveraging GPU acceleration for faster response times and improved efficiency. -- [ ] **Integration with llama.cpp Server**: Enhance response times and model management by interfacing with llama.cpp's dedicated server. -- [ ] **Interactive App and Web Launcher**: Execute applications and navigate to websites directly through keyword-triggered commands. -- [ ] **Docker Compatibility**: Run temi seamlessly in Docker containers for isolated and consistent development environments. -- [ ] **User-Friendly Settings Interface**: Customize temi with ease using a graphical settings panel. - -
- Table of Contents -
    -
  1. Description
  2. -
  3. Installation
  4. -
  5. Usage
  6. -
  7. Contributing
  8. -
  9. License
  10. -
-
- -## Description - -`terminalmind`, accessible via the `temi` command, offers functionalities like text summarization, content retrieval from PDFs, and more, using an integrated language model. Designed for terminal use, it caters to developers, researchers, and technology enthusiasts. - -## Installation +- **Q&A in Terminal**: Get instant answers within your command line. +- **PDF Information Retrieval**: Delve into PDFs for the info you need. +- **Online Article Summarization**: Summarize articles in commands. +- **llama.cpp Integration**: Multiple model support for extended capabilities. +- **User-Friendly Settings**: A simple JSON config caters to all use cases. +- *Upcoming*: Command execution, GPU acceleration, llama.cpp server integration, app and web launcher, and Docker support. + + +## 📖 Description + +`temi` is your go-to CLI companion for quick text summarization, efficient content retrieval, and more. It's an indispensable tool for developers, researchers, and anyone who loves efficiency. + +## 🛠 Installation Clone the repository: ```bash git clone https://github.com/namtranase/terminalmind.git cd terminalmind -``` - -Install requirement packages: -```bash -sudo apt install python3-requests python3-bs4 python3-pypdf2 -``` - -Download the model: -```bash +# Install requirement packages +sudo apt install python3-requests python3-bs4 python3-pypdf2 jq +# Download the model ./scripts/download_model.sh -``` - -Install the package by scripts: -``` +#Install the package by scripts: ./scripts/install_temi.sh ``` -Or build step by step. +Optionally, build and install the Debian package manually: -Build the Debian package: ```bash dpkg-deb --build temi-packaging temi.deb -``` - -Install package using `dpkg`: -```bash sudo dpkg -i temi.deb ``` -## Usage - -After installation, you can use temi but first, it needs to update the model file. Start temi for the first time and paste the absolute path to the model downloaded above. For example: +## 🖥 Usage +For the first time, you can call helper for better understand the functions of temi: ```bash -temi Hello -# Model file not found at /llm_models/model.gguf. -# Please enter the absolute path to your .gguf model file: -models/model.gguf +temi --help ``` +

+ Examples +

-And now you can use `temi` as the terminal assistant: +Use temi for a variety of tasks: ```bash temi how to make a python package # To create a Python package, follow these steps: @@ -113,11 +86,11 @@ temi how to make a python package # 6. To distribute, use tools like setuptools, Twine and PyPI to create a distribution package.% ``` -## Contributing +## 🤝 Contributing -Contributions to `temi` are greatly appreciated, whether they involve submitting pull requests, reporting bugs, or suggesting enhancements. +We welcome contributions! -### Getting Started +### Quick Start for Contributors For detailed instructions on working with the llama.cpp submodule, including setup and usage, refer to the WORK_WITH_LLAMACPP.md file. 1. Install repo and submoudles: @@ -135,14 +108,6 @@ pip install -r requirements/dev_requirements.txt pre-commit install ``` -### Making Contributions - -- Fork and Clone the Repository: Start by forking the repository and then clone your fork to your local machine. - -- Create a New Branch: Work on your changes in a new git branch. This helps to keep your modifications organized and separate from the main codebase. - -- Submit a Pull Request: Once your changes are complete, push them to your fork and submit a pull request to the main terminalmind repository. - ## License `terminalmind` is MIT licensed, as found in the [LICENSE](https://github.com/namtranase/terminalmind/LICENSE) file. diff --git a/assets/helper.png b/assets/helper.png new file mode 100644 index 0000000000000000000000000000000000000000..be303a7c1fec5324f64818d7b473a4ebf06def64 GIT binary patch literal 97002 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ÒIQ?Lk8Ra<@8GOUWQ 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

?kQ6ej-BdnR$kDGJmQrlEnW%Qgb(6>7gE^E-<~ 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 literal 0 HcmV?d00001 diff --git a/config/temi_config.json b/config/temi_config.json new file mode 100644 index 0000000..3dbc720 --- /dev/null +++ b/config/temi_config.json @@ -0,0 +1,4 @@ +{ + "model_path": "~/llm_models/model.gguf", + "type": "local" +} diff --git a/llama.cpp b/llama.cpp index 6f9939d..1182cf4 160000 --- a/llama.cpp +++ b/llama.cpp @@ -1 +1 @@ -Subproject commit 6f9939d119b2d004c264952eb510bd106455531e +Subproject commit 1182cf4d4f6ee383b92695c2e3fe438086dcdba7 diff --git a/temi-packaging/usr/local/bin/config_setup.sh b/temi-packaging/usr/local/bin/config_setup.sh new file mode 100644 index 0000000..0c55de8 --- /dev/null +++ b/temi-packaging/usr/local/bin/config_setup.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +# Define the directory where the script is located +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" + +# Path to the configuration directory and default configuration file +CONFIG_DIR="$HOME/.config/temi" +CONFIG_FILE="$CONFIG_DIR/temi_config.json" + +# Ensure jq is installed +if ! command -v jq &>/dev/null; then + echo "jq is not installed. Please install jq to use this script." + exit 1 +fi + +# Function to load the configuration from the JSON file +load_config() { + if [ ! -f "$CONFIG_FILE" ]; then + # Provide a default configuration if the config file is missing + mkdir -p "$CONFIG_DIR" + echo '{"model_path": "~/llm_models/model.gguf", "type": "local"}' > "$CONFIG_FILE" + echo "Default configuration created at '$CONFIG_FILE'." + fi + + MODEL_PATH=$(jq -r '.model_path' "$CONFIG_FILE") + MODEL_TYPE=$(jq -r '.type' "$CONFIG_FILE") + + # Resolve tilde and parameter expansion + MODEL_PATH=$(eval echo "$MODEL_PATH") + + # Check if the model path is valid + if [ "$MODEL_TYPE" == "local" ] && [ ! -f "$MODEL_PATH" ]; then + echo "Invalid model path in configuration: '$MODEL_PATH'" + fi +} + +# Function to update the configuration file +update_config() { + local new_config_path="$1" + + if [ ! -f "$new_config_path" ]; then + echo "The provided configuration file does not exist: '$new_config_path'" + exit 1 + fi + + # Copy the new configuration file to the standard location + cp "$new_config_path" "$CONFIG_FILE" + echo "Configuration updated successfully." + + # Reload the configuration + load_config +} + +# Check if the user wants to update the configuration +if [[ "$1" == "update_config" ]]; then + update_config "$2" + exit 0 +fi + +# Load configuration settings +load_config diff --git a/temi-packaging/usr/local/bin/temi b/temi-packaging/usr/local/bin/temi index ab07e2d..9e9a6f1 100755 --- a/temi-packaging/usr/local/bin/temi +++ b/temi-packaging/usr/local/bin/temi @@ -3,13 +3,14 @@ # Get the directory of the current script SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" -# Use paths relative to the script directory -CONFIG_FILE="$HOME/.temi_config" EXTRACT_PDF_SCRIPT="$SCRIPT_DIR/extract_pdf_content.py" FETCH_ARTICLE_SCRIPT="$SCRIPT_DIR/fetch_article_content.py" PROMPT_FILE="$SCRIPT_DIR/prompt.txt" TEMICORE="$SCRIPT_DIR/temicore" +# Source the configuration setup script +source "$SCRIPT_DIR/config_setup.sh" + # Function to validate if the model path ends with .gguf validate_model_path() { if [[ $1 != *.gguf ]]; then @@ -17,6 +18,38 @@ validate_model_path() { exit 1 fi } + +show_help() { + echo -e "\033[1mUsage:\033[0m" + echo " temi [COMMAND] [ARGUMENTS]... [OPTIONS]" + echo + echo -e "\033[1mCommands:\033[0m" + echo " summary|summarize Summarize the content from a given URL." + echo " RAG|retrieve|Retrieve KEYWORD Retrieve information given keyword from a PDF file." + echo " change_model Change the model configuration." + echo " update_config FILE Update the configuration with the given JSON file." + echo + echo -e "\033[1mOptions:\033[0m" + echo " --help Show this help message and exit." + echo + echo -e "\033[1mExamples:\033[0m" + echo " temi summary https://example.com/article" + echo " temi retrieve with keyword: test, path/to/file.pdf" + echo " temi change_model" + echo " temi update_config path/to/config.json" + echo + echo "For more information, visit: https://github.com/namtranase/terminalmind" + echo + echo -e "\033[1mNote:\033[0m Replace [COMMAND] with one of the commands above," + echo "and [ARGUMENTS]... with the appropriate input for the command." +} + +# Check for --help option +if [[ "$1" == "--help" ]]; then + show_help + exit 0 +fi + # Function to extract URL from input extract_url() { echo "$1" | grep -o 'http[s]*://[^ ]*' @@ -42,11 +75,6 @@ extract_keyword() { echo "$keyword" } -# Load model path from the configuration file if it exists -if [ -f "$CONFIG_FILE" ]; then - source "$CONFIG_FILE" -fi - change_model() { echo "Please enter the new absolute path to your .gguf model file:" read -r new_model_path