-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feedback/suggestions #1
Comments
Awesome feedback! I'll take a look at it over the next few days and get back to you. On a quick scan a lot of the ideas seem reasonable, and some are pretty cool! I'll likely create separate issues for tracking / prioritization but leave this open for now. |
is there a way of setting the discord channels to be monitored by the bot? or disabling private messages? |
@S1gil0 the discord server admin can control which channels the bot has access to. It will only monitor and reply to those channels. You can get there by going to "server settings" -> "integrations" -> {bot name} The in the "channels" section, choose or remove what you would like. Disabling direct message responses is easy, can put that in. What sort of overwhelming are you seeing? |
I believe this works already. Let me know if you have any issues! One thing to note: I've set up the bot to never reply to another bot. This is to avoid multi-bot infinite loops. |
this will restrict using bot commands in the channels but the bot will still read all new replies in all channels, and get overwhelmed by so much information. |
In that case, I would like to see the ability to enable replying to other bots, but you're right, that could be a problem especially with how fast the responses can be. A delay on responses could help with this somewhat, but maybe a trigger word that would manually stop one or more bots from conversing, and/or a limit on the number of back-and-forths allowed (and a trigger word we could use to manually continue the conversation; if not a slash command, then we can make sure it is removed from the context when found). |
I just tried this, here are some notes:
|
Oh no! You're right, and this definitely wasn't intended. I'll file a separate issue on it. |
Correction, this does actually work as intended, but the Discord UI for making the change is a little hidden. See #13 for the proper steps. |
I've been running this on LLaMa-30B-4bit, WizardLM-13B-4bit, and Vicuna 13B. |
It's been doing that from the start, at least with the code that I have. Are you noticing the responses being sent to the chat, or just appearing in the logs? There's some hacks in oobabot to try and detect such lines and filter them out, see: What is the exact text that the AI is sending? If I know the literal strings, I might be able to improve the filter. Otherwise, tweaking prompting does help. In 0.1.7 you'll be able to tweak the prompt yourself, so once that happens I'd totally welcome feedback on what works better or not, so that I can make the default prompt as good as possible. |
This isnt the exact interaction between the logs and the messages (I couldn't find the exact ones that correlate). But it is the "issue" I'm talking about. Ignore my awful naming of channels and bad attitude of the bot :)
|
So it seems like the filters are catching at least some of the messages. The best thing would be to prompt ooba better so the bot puts less work into creating a dialog, and more into its own characters response. You can actually play with this now by adding more text at the end of your bot persona.
So I'd suggest just putting some blank lines and then whatever prompting you can think of to focus the AI a bit more. I've played with some stuff myself but haven't been very successful yet. I'd welcome other ideas! |
I'll be experimenting with it a little bit. I originally had to remove a ton just to not hit the persona prompt limit. |
That sounds like a pain! I hadn't considered the idea of having personas that were already written. I'm currently working on a bunch of config-related changes, so it might not be in the first pass for simplicity's sake, but it does seem something that makes sense to support. |
It definitely will be painful. no doubt. I'd take a look at how ooba's ui does it, since you can easily upload the json/png cards and they "just work". |
Looks like we're getting the filter to pop on the user's name itself, but not to actually filter the response. |
btw, oobabot now supports reading 'tavern' json files and oobabooga's character .yml files with the |
I noticed! You're awesome. |
Noticed recently I've been getting dropped requests between oobabot and ooba api.
|
As reported in #1 (comment) Sometimes users were seeing an error of the form: ``` 400 Bad Request (error code: 50006): Cannot send an empty message ``` After some experimentation, it seems this can happen if the AI generates a non-blank line which is made up only of whitespace. Filter such lines from the output so that we don't try to send them.
Thanks for the report! From the logs I can't be 100% confident on the cause, but from playing around it seems that if the AI generated a line that contained nothing but whitespace we could get to this error. I added a fix below to filter out such messages, which will be included in the next release. Let me know if this fixes it for you! 4a53eca |
Please let me know if I should break this out into separate issues per topic. I'm basically a newbie here on Github! This project is a huge step forward for making sophisticated, multi-user-accessible chat bots running on local/private models. I'm so excited to have stumbled upon it and have a chance to contribute! I'm not much of a programmer, so right now the best I can do is make suggestions and test things.
Suggestions:
Control, control, control! I would love the ability to configure everything, from the initial prompt to generation parameters (temperature, etc), without having to modify the code. This is my number one request! I actually tried to figure out where I could change parameters in the code but it was not clear to me. I believe these are handled per-request to the Oobabooga API, right? It doesn't seem to honor any changes I make in the web UI, unlike loading a model.
Unsolicited replies are awesome. I saw it in the code yesterday and was going to open an issue asking if it was working correctly. Now, it is! Makes it much more natural and autonomous. Actually HUGE for usability. I would like to suggest configurable "autonomous" posting. Kind of like the "agent" stuff I'll mention later, but we could configure a chance for the bot to start its own conversations in certain channels, for example. Your "topic of the day" idea could be a good basis for configurable topics it would start conversations about. Also, a configurable chance to respond to activity in any/certain channels regardless of wakewords would be neat.
Token efficiency: I would love to have as much room in the context as possible for conversation history. I see some seemingly obvious ways to improve this: if any user, but in particular the bot, sends multiple messages in a row, we can probably omit the "User says:" portion from each message and just combine them all together, even if on new lines.
Pinned messages: This might not be feasible, but it could possibly be made to work selectively. I just had the idea that it would be neat if the bot could recognize pinned messages because they could be important. Here's a perhaps better idea...
Channel topic: In Discord, we can set a relatively short channel topic for each channel. This would be a great toggleable feature to add to the context of the bot, giving it a bit more to work with in each channel. Perhaps allow us to configure a token limit for this to truncate longer topics.
Threads: Discord's Clyde can supposedly start its own threads for whenever users continue a conversation with it. That would be neat if we could turn that on. Actually, looking at the stuff Clyde can do that regular bots can also do might be a good source of inspiration. I see your project as a direct, open-source competitor to Clyde that I am all for.
Memory: If you've ever used AI Dungeon, Novel AI, or Tavern AI, you might be aware of the concept of keywords triggering blocks of text to be injected into the context. Similar to your wakewords functionality, we could configure keywords that, when seen in the conversation history by the bot, will inject text into the context to simulate memories. It would be neat if these and other customizations could be done via slash commands or something within Discord, though pre-configuring them outside of Discord is fine by me as well. An obvious use case for this is adding details about a user to a keyword triggered by their name. If that could somehow be automated and reviewable by humans, all the better.
Multiple personas/bots: I intend to try this sometime, but I believe it would already work like this: I can run multiple instances of oobabot pointing to the same API, each with their own persona and Discord token. Then, I can have any number of Discord bots with unique personalities running at the same time. They could even interact with each other.
Sending/receiving images: Oobabooga has extensions for generating images with SD, as well as recognizing images. I would love for our bots to be able to do these things. Even if not able to generate images, being able to search for/send images/GIFS would also be neat. I just don't know how it is done.
"Agency": the idea of hooking up an agent via all these AutoGPT-like projects to a bot like this is intriguing to me. Whether or not it needs a full setup like that, I would love to be able to integrate more actual Discord bot functionality with your system as the baseline for conversation. And then of course being able to give it access to tools and the internet, etc., would be neat.
Integration with a Stable Diffusion API: I've played with Discord bots that use the AUTOMATIC1111 web UI's API to allow generation within Discord. How cool would it be to have it use both image gen and text gen APIs? We could easily prime the text gen models with details on Stable Diffusion prompts, and then have it able to go and generate images based on user commands/requests, or even use the "agent" stuff like I said before to decide if/when it should do so on its own. In particular, instead of using the character persona we set up, have a separate call to the API which takes an input from the bot or a user, such as a description of an image, using it in the prompt with a bunch of "this is what Stable Diffusion prompts look like" in the context, to have it turn a description into a suitable prompt.
Questions/issues:
(random unrelated messages here)
User replied to: '@ Bot: I made a new recipe today.' with 'Oh yeah? What was it?'
Bot says:"
The text was updated successfully, but these errors were encountered: