Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation



This project is currently being completely rebuilt from scratch. The entire logic will be reworked using a more optimized, compiled backend.

Projects based on the library in its current state are still planned, however !!



Installation

pip install open-taranis --upgrade

For package on PyPi

or

git clone https://github.com/SyntaxError4Life/open-taranis && cd open-taranis/ && pip install .

For last version

Quick Start

Simplest
import open_taranis as T

client = T.Clients.openrouter # API_KEY in env_var

request = T.Request(
    tools=None, tool_choice="auto",
    temperature=0.4,
    # and others....
)

print("assistant : ",end="")
for token, is_thinking, tools, tool_bool, meta in T.handle_streaming(
    request=request,
    client=client,
    model="nvidia/nemotron-3-nano-30b-a3b:free",
    messages=[T.create.user_prompt("Tell me about yourself")],
    API_KEY=None
) : 
    # You can add `if not is_thinking :` to see only the reals tokens
    print(token, end="", flush=True)

print(f"\n\n{meta}")
Make a simple agent with a context windows on the 6 last turns
import open_taranis as T

class Agent(T.agent_base):
    def __init__(self):
        super().__init__(yield_thinking=False) # If you want to return the reasoning

        self.client = T.Clients.openrouter
        self._system_prompt = [T.create.system_prompt(
            "You're an agent nammed **Taranis** !"
        )]
        self.request_profil = T.Request() # Useful for highly customized clients like Venice.ai


    def create_stream(self, history):
        return T.handle_streaming(
            self.request_profil,

            self.client,
            model="nvidia/nemotron-3-nano-30b-a3b:free",
            messages= self._system_prompt + history # Most important !
        )
    
    def manage_token_yield(self, token, is_thinking = None, meta = None, tool_calls = None):
        return token, meta # You can customize what the agent returns
    
    def manage_messages(self):
        self.messages = self.messages[-12:] # Each turn have 1 user and 1 assistant

My_agent = Agent()

while True :
    prompt = T.create.user_prompt(input("user : "))

    print("\n\nagent : ", end="")

    for t, meta in My_agent(prompt):
        print(t, end="", flush=True)
    
    print(f"\n\n{meta}\n","="*60,"\n")
To create a simple display using gradio as backend
import open_taranis as T
import open_taranis.web_front as W
import gradio as gr

class Gradio_agent(T.agent_base):
    def __init__(self):
        super().__init__()

        self._system_prompt = [T.create_system_prompt("You are a agent nammed **Taranis**")]
    
    def manage_token_yield(self, token, is_thinking):
        return token, is_thinking
    
    def create_stream(self):
        return T.clients.openrouter_request(
            client=T.clients.openrouter(),
            messages=self._system_prompt+self.messages,
            model="nvidia/nemotron-3-nano-30b-a3b:free"
        )

gr.ChatInterface(
    fn=W.create_fn_gradio(Gradio_agent()),
    title="Open-taranis Agent"
).launch()

Here we use a temporary history provided with each request via Agent(user_prompt=...., temporary_history=messages), so it is natively supported for concurrency (no persistent memory in the object).


Use the commands :

  • taranis help : in the name...
  • taranis update : upgrade the framework

Documentation :

Available in French Soon

Roadmap

  • v0.0.1: start
  • v0.0.x: Add and confirm other API providers (in the cloud, not locally)
  • v0.1.x: Functionality verifications in examples
  • v0.2.x: Add features for logic-only coding approach, start with agent_base
  • v0.3.x: Complete rewrite + Add proper documentation and improved deployments
  • v0.4.x: Improving support for local AI deployment
  • The rest will follow soon.

Changelog

v0.0.x : The start
  • v0.0.4 : Add xai and groq provider
  • v0.0.6 : Add huggingface provider and args for clients.veniceai_request
v0.1.x : Gradio, commands and TUI
  • v0.1.0 : Start the docs, add update-checker and preparing for the continuation of the project...
  • v0.1.1 : Code to deploy a frontend with gradio added (no complex logic at the moment, ex: tool_calls)
  • v0.1.2 : Fixed a display bug in the web_front and experimentally added ollama as a backend
  • v0.1.3 : Fixed the memory reset in the web_front and remove ollama module for openai front (work 100 times better)
  • v0.1.4 : Fixed web_front for native use on huggingface, as well as handle_streaming which had tool retrieval issues
  • v0.1.7 : Added a TUI and commands, detection of env variables (API keys) and tools in the framework
v0.2.x : Agents
  • v0.2.0 : Adding agent_base
  • v0.2.1 : Updated agent_base and added a more concrete example of agents
  • v0.2.2 : Upgraded all the code to add Kimi Code as client and reduce code (Not official !)
  • v0.2.3 : Updated agent_base, add some functions and add a cool agent
  • v0.2.4 : Improved CoT techniques and updated web_front.py, deploy an agent to the browser in a few lines
v0.3.x : The restart
  • v0.3.0 : Rewrite all the code from scratch (without AI) to improve everything
  • v0.3.1 : The TUI project with integrated agent has been removed to focus on the framework (useful code).
  • v0.3.2 (future) : Add features for coding MCP servers and clients

Advanced Examples

Links

About

Python framework for AI agents logic-only coding with streaming, tool calls, and multi-LLM provider support (Venice.ai, DeepSeek, OpenRouter, Mistralai, ollama...).

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages