Skip to content

Design & implmentation of instinct-agent #18

Closed

Description

@RobinQu

Manifest

  • ToolAgent, or functional calling basement
    • rool rendering, invocation command parser
    • function tool and function toolkits protocol
    • with local memory and checkpoint
  • Multi-agent ochestration
    • control flow: loop/if-else/switch
    • human in the loop
  • distributed agent protocol. (Agent Protocol based implementaion?)
    • agent state checkpoint
    • disributed memory, tool server
  • built-in tools
    • external retriever: Google Search, Wikipedia, SERP API
    • calculator
    • LLM
    • python interpreter ?
  • built-in agents
    • ReACT Tool Execution Agent
    • Plan & Execute
    • LLMCompiler

Project plans

Stage 0 - POC - for one week

I'm still getting too many questions about implementation. Let's do some minimum implementation for inspirations.

  • ToolAgent
  • Built-in toolkits: Search (one of Google, Tavily, duc-duck-go or SERP API) , Calculator, Python Interpreter
  • Human in the loop: pause, resume

Stage 1 - Assistant API Server for v0.1.2

#19

First version of mini-assistant

  • Sync api calls for Assistant, File, Run, RunStep, Message, Thread
  • Function call support, using ReACT

Future developments

Sprint Features
v0.1.3 * file search tool
* paralled call using LLMCompiler ?
v0.1.4 * code interpreter
v0.1.5 * stream support
* scaliblity on cloud: PGSQL, Kafka, …

Activity

  1. converted this from a draft issue on Apr 3, 2024
  2. added this to the v0.1.3 milestone on Apr 3, 2024
  3. changed the title [-]Multi-agent ochestration[/-] [+]Desgn & implmentation of instinct-agent[/+] on Apr 6, 2024
  4. modified the milestones: v0.1.3, v0.1.2 on Apr 6, 2024
  5. RobinQu commented on Apr 7, 2024

    @RobinQu
    OwnerAuthor

    Tool Agent

    langchian tool invocation without function calling API
    https://python.langchain.com/docs/use_cases/tool_use/prompting/

    Tool description rendering

    def render_text_description(tools: List[BaseTool]) -> str:
        """Render the tool name and description in plain text.
    
        Output will be in the format of:
    
        .. code-block:: markdown
    
            search: This tool is used for search
            calculator: This tool is used for math
        """
        return "\n".join([f"{tool.name}: {tool.description}" for tool in tools])
    
    
    def render_text_description_and_args(tools: List[BaseTool]) -> str:
        """Render the tool name, description, and args in plain text.
    
        Output will be in the format of:
    
        .. code-block:: markdown
    
            search: This tool is used for search, args: {"query": {"type": "string"}}
            calculator: This tool is used for math, \
    args: {"expression": {"type": "string"}}
        """
        tool_strings = []
        for tool in tools:
            args_schema = str(tool.args)
            tool_strings.append(f"{tool.name}: {tool.description}, args: {args_schema}")
        return "\n".join(tool_strings)
  6. changed the title [-]Desgn & implmentation of instinct-agent[/-] [+]Design & implmentation of instinct-agent[/+] on Apr 9, 2024
  7. moved this from In Progress to Done in First GA Release of instinct.cppon May 20, 2024
  8. RobinQu commented on May 20, 2024

    @RobinQu
    OwnerAuthor

    it should be closed with release of v0.1.3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions