I find LLMs to be pretty useful these days. I don’t consider myself to be on the frontier of LLM experimentation, but when I talk to (technical) people it sounds like my workflow is pretty uncommon, so I should probably write about it.
LLM (the command-line tool)
Simon Willison’s llm
command-line tool is the primary way I use LLMs. I sometimes struggle to describe the appeal of llm
to people because it’s boring. llm
lets you do the following with any popular LLM (hosted or local):
- Ask the LLM one-off questions (optionally taking stdin as context)
- Start a chat session (optionally starting from the last ad-hoc question)
And that’s about it! It’s one of those lovely tools that does a few things well. I usually start sessions with exploratory questions/requests, sometimes piping in data:
cat xycursor.rs | llm "the end() function in this file is confusing, explain it"
And then if I need to follow up on a question, llm chat --continue
drops me into an interactive chat that starts after the last question+response:
> llm chat --continue
Chatting with claude-3-5-sonnet-20240620
Type 'exit' or 'quit' to exit
Type '!multi' to enter multiple lines, then '!end' to finish
> write a comment explaining that function, using ASCII diagrams
Important things about this workflow:
- It’s trivial to “connect” the LLM to other data+files
- For example, every week I used to manually rewrite the output of this script to be more readable before publishing it; now I pipe it to
llm
and tell it to do an initial rewrite first
- For example, every week I used to manually rewrite the output of this script to be more readable before publishing it; now I pipe it to
llm
makes it trivial to go from exploratory work to more focused iteration
I have llm
set up to use this custom prompt, no matter what underlying LLM it’s using. I find that it helps make responses much more succinct.
GitHub Copilot
It’s good, I use it every day. It’s a lot more widely known than llm
so I won’t spill too much ink over it.
Observations
I use LLMs and web search in a similar way: do a quick exploratory investigation into something, taking the initial results with a grain of salt. The skills+knowledge you need to evaluate Google results are very similar to the ones you need to evaluate LLM results!
I mostly use LLMs for computer stuff, and it’s often really easy to verify whether a programming/computing answer is any good; just try it out! LLMs are probably not quite as useful for fields where that’s not the case.
I’m happy with llm
but it is, ultimately, a wrapper around a basic chat interface and we can probably do better. Claude Artifacts is very appealing in that it can offer a faster iteration cycle for web development (but is unfortunately coupled to an expensive subscription service), and Aider is interesting as a better way to give an LLM access to context from an entire code base. I’m hoping we’ll see more tools like these that extend what we can do with LLMs.