Live data from Hacker News

Show HN: Ell – A command-line interface for LLMs written in Bash

github.com

61–70 of 88 posts

Re: Show HN: Ell – A command-line interface for LLMs written in Bash

#61
post #43

Ell is really cool! I'm building a similar product called Savvy( https://github.com/getsavvyinc/savvy-cli ) and considered an approach similar to yours (writing in pure bash) but ultimately decided to use Go for a few reasons: - charmbracelet makes it super easy to build rich TUI - Go produces a single binary that's compatible across many platforms and keeps installation simple - It's simpler to support multiple shel…

Thanks! Another user[1] also mentioned Savvy but I misunderstood its purpose. Now I understand it does have a similar functionality of analyzing a record of terminal! Your approach allows more chances to let LLM explain what happens, while in my case, asking ell will immediately destroy the original context (the user may have to rerun the falsy command again and cause more damage). However, exiting and reentering rec…

You're right, to counteract the friction I also allow users to create runbooks from their shell history.

Here's the source code: https://github.com/getsavvyinc/savvy-cli/blob/8c6a834c5a140b...

Re: Show HN: Ell – A command-line interface for LLMs written in Bash

#62
post #46

Does ell have the ability to pipe things INTO the tool? I use that with my https://llm.datasette.io/ tool all the time - things like this: cat somecode.py | llm -m claude-3.5-sonnet "Explain this code" Or you can separate the instructions from the piped content by putting them in a system prompt instead like this: cat somecode.py | llm -m claude-3.5-sonnet --system "Explain this code" Being able to pipe content like…

Definitely! For example, cat somecode.py | ell -f - If you prefer adding another piece of prompt instantly instead of adding it in the template: (cat somecode.py; echo "Explain this code") | ell -f - I should've added this into README. I really love your "llm" and the blog posts but somehow I missed them before. I believe I would be a lot less motivated to write ell if I had read your post first.

> I really love your "llm" and the blog posts but somehow I missed them before. I believe I would be a lot less motivated to write ell if I had read your post first.

I mean, doing a simple search like "CLI interface for LLMs" shows multiple tools made by people over the years. Not to bash your work (pun intended), but I don't see the point of creating yet another CLI interface for LLMs at this point.

Re: Show HN: Ell – A command-line interface for LLMs written in Bash

#65

Earlier quoted context omitted.

Definitely! For example, cat somecode.py | ell -f - If you prefer adding another piece of prompt instantly instead of adding it in the template: (cat somecode.py; echo "Explain this code") | ell -f - I should've added this into README. I really love your "llm" and the blog posts but somehow I missed them before. I believe I would be a lot less motivated to write ell if I had read your post first.

> I really love your "llm" and the blog posts but somehow I missed them before. I believe I would be a lot less motivated to write ell if I had read your post first. I mean, doing a simple search like "CLI interface for LLMs" shows multiple tools made by people over the years. Not to bash your work (pun intended), but I don't see the point of creating yet another CLI interface for LLMs at this point.

To the creator, ignore this person. Thank you for sharing!

To the parent: prefer that you hold opinions like this to yourself.

Re: Show HN: Ell – A command-line interface for LLMs written in Bash

#66
post #46

Does ell have the ability to pipe things INTO the tool? I use that with my https://llm.datasette.io/ tool all the time - things like this: cat somecode.py | llm -m claude-3.5-sonnet "Explain this code" Or you can separate the instructions from the piped content by putting them in a system prompt instead like this: cat somecode.py | llm -m claude-3.5-sonnet --system "Explain this code" Being able to pipe content like…

I have been an LLM skeptic for a long time, but the llm CLI and your review of Claude 3 Opus (and subsequently discovering how comparatively cheap 3.5 Sonnet is) has started to turn LLMs into something I use daily.

Exactly that piping comes into handy all the time. I use it to estimate reading time of things on the web, through

    curl  | llm -m claude-3.5-sonnet -s 'How long does the main content of this article take to read? First count words, then convert using a slow and fast common reading speed.'
It gets the word count wrong a little too often for my taste, but it's usually within the right order of magnitude which is good enough for me.

One of my most used shell scripts recently is one I named just `q` which contains

    #!/bin/sh

    llm -s "Answer in as few words as possible. Use a brief style with short replies." -m claude-3.5-sonnet "$*"
This lets me write stupid questions in whatever terminal I'm in and not be judged for it, like

    [kqr@free-t590 tagnostic]$ q How do I run Docker with a different entrypoint to that in the container?
What's nice about it is that it stays in context. It's also possible to ask longer questions with heredocs, like

    [kqr@free-t590 tagnostic]$ q  I have the following Perl code
    > 
    >     @content[sort { $dists[$a]  $dists[$b] } 0..$#content];
    > 
    > What does it do?
    > EOF
I have meant to write about this ever since I started a few weeks ago but I would like my thoughts to mature a bit first...

Re: Show HN: Ell – A command-line interface for LLMs written in Bash

#67
So, last weekend I wanted to use an LLM to review some documents, and the problem I had was not so much the interface but that it's necessary to have some workflow management to re-run failed jobs and run the aggregate job once its dependencies are done. I ended up writing my own to do it, but I wondered if there are off-the-shelf solutions that already provide these kinds of work.

Re: Show HN: Ell – A command-line interface for LLMs written in Bash

#68
Interesting - unfortunately displays typical llm issues in the demo video:

> It's important to note that using `1` can lead to unexpected behavior if the file already exists, as it will be overwritten.

> To avoid this, you can use the `-a` option to append to the file instead of overwriting it. For example:

> `bash ls 1 output.txt

> This will append the output of the `ls command the file `output.txt` if it already exists, or create the file if it doesn't.

Note that the example is wrong and not in line with the explanation.

Ed: AFAIK the closest thing that works would be:

    ls >> output.txt
Not sure if there are any invocations using "1 output.txt" that would make sense in this context? Maybe binding to a custom description like 3, and using "tee --append"?

Re: Show HN: Ell – A command-line interface for LLMs written in Bash

#69

Earlier quoted context omitted.

> I really love your "llm" and the blog posts but somehow I missed them before. I believe I would be a lot less motivated to write ell if I had read your post first. I mean, doing a simple search like "CLI interface for LLMs" shows multiple tools made by people over the years. Not to bash your work (pun intended), but I don't see the point of creating yet another CLI interface for LLMs at this point.

To the creator, ignore this person. Thank you for sharing! To the parent: prefer that you hold opinions like this to yourself.

>> To the parent: prefer that you hold opinions like this to yourself.

it seems weirdly inconsistent that you expect people to hear your voice as you try and shut down another expressing a viewpoint with which you don't agree. You would have been better off with just the first half of your post.

Re: Show HN: Ell – A command-line interface for LLMs written in Bash

#70
post #66
post #46

Does ell have the ability to pipe things INTO the tool? I use that with my https://llm.datasette.io/ tool all the time - things like this: cat somecode.py | llm -m claude-3.5-sonnet "Explain this code" Or you can separate the instructions from the piped content by putting them in a system prompt instead like this: cat somecode.py | llm -m claude-3.5-sonnet --system "Explain this code" Being able to pipe content like…

I have been an LLM skeptic for a long time, but the llm CLI and your review of Claude 3 Opus (and subsequently discovering how comparatively cheap 3.5 Sonnet is) has started to turn LLMs into something I use daily. Exactly that piping comes into handy all the time. I use it to estimate reading time of things on the web, through curl | llm -m claude-3.5-sonnet -s 'How long does the main content of this article take to…

I love that ‘q’ script, definitely going to try that myself.
Post reply on HN