Edgar: a Voyager-Inspired Software Agent

[Music: Phil Collins – In the Air Tonight]

Edgar is a software agent I’m writing in Typescript inspired by the Voyager Research Project.

25 years ago at the University of Washington, I worked on software agent plan pruning as an undergraduate under Oren Etzioni and Keith Golden. It was Lisp code. In addition to learning that it was excruciatingly difficult to write UI code in Lisp, I also got an education in the challenge of planning. The team’s approach in those days was inspired by the chess-playing robots of the time. We’d generate an enormous tree of possible moves (Unix commands) and search for the next best move toward the desired goal.

One big question these days is whether LLMs (like GPT) are sufficient to enable artificial general intelligence. I could be wrong, but I think the answer is yes. I think we are 10 years away from superhuman intelligence.

The question of the hour is: what exact role do LLMs play in a software agent architecture? Can they be used to generate and complete a plan? I was excited to see open-source experiments like LangChain, Baby AGI, and Auto GPT. However, I’ve found that they are great at generating tasks but fall short of creating an effective plan. Also, these early approaches are stil reliant on humans to write tools (code) to complete the tasks. 

I’d been playing along with “ReAct” and “Chain of Thought” prompts. I was also evaluating different strategies and working on my own planner but it was hard to find something that worked.

Then along came the Voyager Paper. The Voyager approach is genius because it removed the need for the LLM to plan in English, and instead leveraged GPT-4’s ability to write code (thereby representing the plan in the code itself). With this strategy, a high-level function (or “skill”) is merely the combination (or encoded plan) of several lower-level skills.

How does Edgar work?

Edgar is my Typescript-based software agent. He’s named after the persistent AI character in the 1984 movie Electric Dreams. After reading the Voyager paper, I incorporated something similar to its skill generation strategy. When you request that Edgar do something, he generates code (a new “skill”) to fulfill your request. He tries to use as many of his existing skills as possible in the fulfillment of that request. For simple requests, Edgar can complete them immediately and add them to his library. More complicated requests require building on top of skills in the library.

Edgar is both a Slack bot and a GitHub bot that summarizes, reviews, and suggests improvements to his own code. Another reason I am so compelled by this strategy is that, as a software engineer, I can watch the automation of my own job (as in, profession) right in front of my own eyes. 

As you can see from the video, one of my next priorities for Edgar is to put him to work on a paid task. Here are some quickly-scrawled potential business use cases for Edgar:

HR Assistant

Job description: Given a set of applicants, rank the strongest candidates, and set up interviews. Or, given a job description, search the web for potential candidates

Necessary Skills: read candidates from Greenhouse, read and write Google calendar, send an email (with open and link tracking via Postmark), web search, web page summarization, candidate evaluation relative to the job post

Competitive Landscape Researcher

Job Description: For product (or startup) X, search the web and find potential competitors. Produce a report on their revenue, funding, and product feature overlaps.

Necessary Skills: Web search, web page summarization, spreadsheet creation, spreadsheet editing, document or presentation creation.

IT Assistant

Job Description: Handle requests (with administrator approval) to add or remove employees from cloud services/team accounts. For example, an employee on and off-boarding.

Necessary Skills: google groups, google workspace, Microsoft admin APIs, Zoom, Slack etc. Check and modify google drive permissions.

Sales Automation Agent

Job Description: Augment leads. Generate outbound emails, track link clicks and 

Necessary Skills: Read and write Google contacts, augment emails using FullContact, send and track email opens via MailChimp or Postmark

API Integration Writer

Job Description: write quick 1-off API integrations, for example, to poll a website and input results into a Google sheet. See Fiverr for more examples.

Necessary Skills: read API documentation, write connector skills, deploy cloud functions

At Pioneer Square Labs we’re applying Copilots, Chatbots, and Software agents to all kinds of verticals. We’d love to work with entrepreneurs who have their eyes on industry problems that are ripe for disruption. Send me an email adam – at – pioneersquarelabs.com, if we can help you turn your idea into a business.

Follow @adamloving on Twitter and LinkedIn for future updates on Edgar.

Related: Is this AGI?