GithubHelp home page GithubHelp logo

jeffser / alpaca Goto Github PK

View Code? Open in Web Editor NEW
204.0 204.0 27.0 49.6 MB

An Ollama client made with GTK4 and Adwaita

Home Page: https://jeffser.com/alpaca

License: GNU General Public License v3.0

Meson 2.93% Python 96.08% Shell 0.56% CSS 0.43%
adwaita flatpak gnome gtk4 ollama ollama-api ollama-gui

alpaca's Introduction

Niko Pancakes

Jeffry Samuel

Jeffser's GitHub stats

alpaca's People

Contributors

8ar10der avatar aleksanaa avatar alexkdeveloper avatar bertob avatar burntsouls avatar counterflow64 avatar imbev avatar jeffser avatar loulou64490 avatar nokse22 avatar not-a-dev-stein avatar olumolu avatar projectmoon avatar topiga avatar xotembotz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

alpaca's Issues

Add keep alive option in settings.

Sometime I want to keep the model loaded indefinitely and sometime I want to immediately unload the model(based on the server I am using). It would be nice if there was a settings which would allow to set the keep_alive option while calling the api

A integer/textbox input in the settings page which will be used to set the keep_alive option in the API calling phase

Currently no alternatives are there except manually unloading those models from the CLI

TypeError: expected str, bytes or os.PathLike object, not NoneType

Hello, first I'd like to thank you for this program, it's simple enough and looks good, I've encountered the following bug opening.

flatpak run com.jeffser.Alpaca 
Traceback (most recent call last):
  File "/app/share/Alpaca/alpaca/main.py", line 43, in do_activate
    win = AlpacaWindow(application=self)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/share/Alpaca/alpaca/window.py", line 1001, in __init__
    css_provider.load_from_path(os.path.join(self.app_dir, "share/Alpaca/alpaca/style.css"))
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen posixpath>", line 76, in join
TypeError: expected str, bytes or os.PathLike object, not NoneType

Feature request and bug (I won't leave you alone)

Hello, it's me (again)

Bugs

  • There is a little problem, when I resize the window, the title don't appear well :

Capture d’écran du 2024-05-28 18-45-22

  • When I delete a chat, the chat frame doesn't reset :
Capture.video.du.2024-05-28.19-08-15.mp4
  • And when you delete the last chat, you can send message (It doesn't create automatically a new chat)
  • There is two different dialog to delete chat, that's strange, why don't use the same (next video)
  • When the windows is small but the sidebar can be displayed, the sidebar is too small and some icon display bad (next video)
Capture.video.du.2024-05-28.22-21-25.mp4
  • Some translation ID are missing so we can't translate some part (like the delete chat dialog, and the send button)

Feature request

  • When creating a chat, or when we launch the app, it would be nice to have an interface like this instead of a blank frame
    Capture d’écran du 2024-05-28 19-12-29

  • I was asking for a better text entry, like this it's not so far from the Gnome interface guideline (the screenshot is from the Flare app)

Capture d’écran du 2024-05-28 21-56-23

  • Ctrl + N : create new chat

Big thank !

YouTube recognition

This is something that sound fun to do, I could extract the transcript / subtitles, description and even thumbnail from a video and feed all of that to a model, I might do it, maybe after 1.0.0

Add Progress Bar to Model Being Pulled

I've decided to make these 'working on' issues so that anyone can comment on the progress of a feature while it's being develop.

This time I'm making adding a progressbar to the models that are being pulled, does it look good?

image

Auto generate chat titles

When making a new chat, instead of asking for the user to name it, give them a new, unnamed chat screen, which doesn't yet correspond to a chat button on the left. Allow them to send their first message to a model. Once the LLM finishes responding, have the app ask the model to name the chat in the background, and make the chat button appear on the left with that name.

See ChatGPT for reference.

Thoughts on applying for GNOME Circle?

The app is in its infancy but it already looks and feels great! You might want to take a look at applying for GNOME Circle, as their review is usually really good at picking up design, functionality and accessibility issues that we might miss by using the app as usual.

I believe they usually avoid having ties to AI projects, but since this can and is mainly intended to be used locally and with open models, it has the potential to be a great addition to the project's community curated apps, which could give it even greater visibility!

Keyboard shortcuts

This is an amazing tool to work with very simple and pretty UI but I miss some keyboard shortcuts like Ctrl+C to copy things and Ctrl+Enter to send a message or maybe only enter or something else + Enter.

I am using openSUSE Tumbleweed and the app is installed as Faltpak from Flatstore.

Increase padding on text fill box

The current text input box can be seen below.

image

Consider increasing this to match the padding in the "sent" box, seen below.

image

For references, I've looked at libadwaita chat apps Flare and Fractal, as well at the new layout on chatgpt.com.

Love the app!

[Suggestion] A revamped icon?

This is definitely not a priority nor a criticism of the current icon. It looks good, but I would suggest looking into GNOME's app-icon-request repo, as their designers could get a really professional-looking icon (and I believe one of their designers did a sketch that could be used as a base a while back, although I couldn't find it). I thought about opening a request there, but it would be something really rude to do without the developers' approval.

I was going to design one to suggest, but my icon design skills are really lacking after changing careers a while back 😅

Various visual tweaks

I have a few ideas for moving some buttons around to simplify/improve the look and feel of the app. If these should be separate feature requests, let me know. I didn't want to clutter the page with too many issues. Below are my ideas for how to reorganize the UI.

  • Top bar on the left should have the "new chat" button (left), followed by "Alpaca" (centered), followed by the single "hamburger" menu button (right).
    • This means moving the hamburger button from where it is currently.
  • Place "Export chat" and "Import chat" buttons in the hamburger menu drop down.
  • Place the chat name as a title centered in the right pane titlebar, where the model dropdown is currently.
    • Place the model name as subtitle below this.
    • The chat name + model name should be a button, similar to how Flare does, and it should open a page or dialog which allows selection of models, clearing of chats, etc.
    • See mock-up made in Fractal

image

  • Place the "Manage models" button in Preferences, or as a "Get more" button in the list of available models.

image

  • Place the send button on the right of the text input box with the "paper-plane" icon paper-plane-symbolic and no text.
  • When send button becomes stop, use the "stop" symbol stop-symbolic with no text.

Complete

  • Replace the "+" button at the top of the left panel with the chat-message-new symbolic icon chat-message-new-symbolic.
  • Place the attach image button to the left of the text input box with no text.
  • (This one is likely more difficult.) Make the input text box start with a single line height, and expand to allow for more text as the line count gets bigger.
    • A maximum height could be set. Fractal has this feature and has a max line count of 5 before it makes you scroll to see it all.

image
image

Snap package

I can't figure out how snapcraft works, if someone knows please help me

Multiple Features / French Translation

excuse my English, I'm French...

Hello, thank you for this amazing app !

Here is my feature request :

  • add a gnome search integration
  • make the text entry and the user chat bubble ChatGPT-like because it's actually bad (remove time, model name and make user chat bubble more round )
  • merge the manage model menu and the menu to choose chat
  • link chat to a model so the chosen model doesn't reset
  • autoconfigure ollama remote ollama instance to this IP : http://localhost:11434 when activating remote instance
  • ask the user at first boot to automatically install ollama with this command in background : curl -fsSL https://ollama.com/install.sh | sh then ask him to install model from ollama
  • make a download manager with progress bar
  • add size info before downloading model
  • add the French configuration language file ( I can translate it if you want ! )
  • don't ask name when creating chat ( It's boring )
  • add the option to choose default model
  • add real-time markdown support
  • add parameter to chat like temperature, seed etc...
  • add some option under message like copy text
  • add a system prompt option
  • make response width shorter ( It's will be more readable )

A big thanks again for your work ! Love it !

Log to STDOUT

I suggest logging app events to standard output. Would a PR for this be welcome?

Left sidebar spacing / removal of inactive cards

The current layout of the left sidebar is shown below.

image

Consider placing the inactive chat text directly on the left sidebar background, as seen in Fractal, below. It could also be good to decrease vertical spacing between chat names. Spacing is good for visibility, but right now Alpaca has more than gnome settings or Fractal.

image

In addition, it could be nice to hide "delete" and "rename" icons behind a "three-dots" button or put them in a right click drop-down menu.

Handle creating new chat without name

When creating a new chat, clicking create without entering a name will have the same effect as clicking cancel.

I suggest either using a default name such as "Untitled Chat" or keeping the modal open with a message.

Impossible to close app (using window controls) if no Ollama installed

Opening Alpaca for the first time, doesn't let you close the app if you haven't configured ollama yet.

image

No matter if you try to close it using the "x" on the window, it will spam the "Failed to connect to server" banner without exiting the app itself.

Well, of course it's not impossible, Ctrl + Q or force quitting the app would work, it's not like it crashes or gets stuck, it's that the "x" button on the window doesn't close, as should be expected.

llava-llama3 and other llava models do not have image send capacity

I don't know if this is a bug or not, just checking. The original llava LLM-image model allows you to send images. llava with llama3 for example, does not allow to send images, while I do think it's technically designed for this.

Edit: this is the case with moondream too. It has image understanding, but only original llava allows sending of images in the GUI

Allow downloading models in the Background

Currently downloading a model will prevent all other interaction with the app. This includes closing the app.

I suggest a "Close and continue downloading" button as well as a "stop download" button, perhaps renamed to match the GNOME guidelines.

Can't connect to local Ollama instance

Hello, great app!
I have inserted http://localhost:11434 in the URL of remote instance to use a local Ollama instance, I don't know if it's the correct way, but it does't connect. If I insert that url in a browser I get Ollama is running so it's working.

Now it's not super clear how to use a local instance vs the ollama running in the flatpak sandbox.

Impossible to install and view already installed models

I m rocking a Fedora 40 install and updated from the Alpaca 0.6.0 to the 0.7.0 version.

When pressing the icon to load models, nothing happens.
It worked just fine with the 0.6.0 version.

I don't know how to view the app logs tho.

If you need specifics, i can get them for you but i can't find documentation on how to do it.

Thanks

Roadmap to 1.0.0

It's been like 2 weeks since I started this project, at first I just wanted to practice Python but it turns out I had a great idea and the app is now being installed by 400 users everyday according to Flathub. There's still stuff left to do before 1.0.0 tho

Quick fix in desktop file (Reading comments from users)

Hi!, I'm making this issue mostly to say thank you to all of you that left positive comments on the Flathub page, Kharra suggested something else in their comment and I'm going to add it. Just a quick one liner fix

image

Again, thank you all, I'm really happy this app is getting all this love

Send message with Enter

The current behavior is that Enter inserts a newline, Ctrl-Enter sends the message.

I suggest that the behavior be changed so that Enter sends the message, and Shift-Enter inserts a newline. This would bring the behavior in line with mainstream instant messaging apps.

Consider changing names.

KDE has an application called Alpaka: https://invent.kde.org/utilities/alpaka

Just like this application, it is also an Ollama client, except it's using Qt6/Kirigami instead of GTK4/Libadwaita. The names have a single letter difference and are pronounced the same, which is bound the cause confusion.

Import/Export chat history format

I see that importing and exporting chat history is on the timeline, however I'd like to suggest the following format:

(new lines encoded as \n)

[<iso8601 timestamp>] <<User or Pal>> <message>

Example:

[2024-05-19T18:43:45.598Z] <User> Hello
[2024-05-19T18:43:50.598Z] <Pal> Hi

This would be both human readable and easy to parse

Automatically scroll

I suggest the following:

If the user is currently scrolled to the bottom, the scroll should remain at the bottom despite new responses.

Minor improvements to Flathub metadata would be appreciated

Not necessarily a priority thing, but it would be nice to have some improvements to the Flathub page, mainly:

This is how it currently looks in GNOME Software (the text is in portuguese though, sorry):
image

App isn't working on postmarketOS

This error was reported by Kharra on the review section of the Flathub page, just leaving this here so that you all can see I'm working on it
image

Remove background card

Currently, sent input text is placed in a card, which is placed in another card which contains the chat, which is placed on the background.

image

Consider removing this "whole chat" card, and instead place the output text directly on the background.

This design is shared by occasional descriptive text in gnome settings (below) and in the layout of chatgpt.com

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.