BirdyVM

  • 17 Replies
  • 2877 Views
*

Zero

  • Eve
  • ***********
  • 1287
BirdyVM
« on: March 24, 2020, 08:53:36 am »
Hi,

I've updated & upgraded my old 'Birdy' project, which is now stronger and conceptually stable.
https://github.com/ThinkbotsAreFree/Birdy

I've also implemented a working prototype for testing purpose:
http://thinkbots.are.free.fr/ProjectBirdyVM/

It's a multi-agent system that relies heavily on the pub/sub pattern, on string rewriting, and on the 'graphmaster' technique (à la AIML). There are mainly two types of entities: units and rules, which have complementary strengths and use cases.
- Units are concave lenses that tend to produce divergent thinking (explorative, spontaneous, free-flow).
- Rules are convex lenses that tend to produce convergent thinking (focusing, logical, procedural).

Edit: comments are not implemented yet
« Last Edit: March 24, 2020, 09:45:49 am by Zero »

*

Zero

  • Eve
  • ***********
  • 1287
Re: BirdyVM
« Reply #1 on: March 25, 2020, 09:32:14 pm »
I have 1 last unused special character, '&', and instead of using it for my half-baked getUsual() algorithm, I decided to inject something actually useful in this project: Scheme! So, from inside of BirdyVM, one can now evaluate Scheme expressions and assign them to variables.

Since I want something simple, I think BirdyVM will be available as a TCP server, downloadable from the Microsoft Store app.

Edit: comments are implemented.
« Last Edit: March 25, 2020, 11:22:24 pm by Zero »

*

Zero

  • Eve
  • ***********
  • 1287
Re: BirdyVM
« Reply #2 on: March 27, 2020, 12:34:00 am »
New User Xperience! New functionalities! And still as free as a free lunch!

Check it out http://thinkbots.are.free.fr/ProjectBirdyVM/

- UI from Bigpicture.js
- Auto-save thanks to moz' localforage
- And you'll even see little messages blinking here and there as the system runs

Edit:
Here is a test.

Click somewhere and type
Quote
| global + #m @ second > $m

Click again and type
Quote
| second + hey #n ^ got $n ok

Then in the command bar, type
Quote
@ global > hey foo

The first line catch the user message and sends it on the "second" channel. Then the second line catches it and outputs "got foo ok".
If you look at the nodes when you hit enter, you'll see the messages under the nodes.
« Last Edit: March 27, 2020, 01:27:18 am by Zero »

*

ivan.moony

  • Trusty Member
  • ************
  • Bishop
  • *
  • 1723
    • mind-child
Re: BirdyVM
« Reply #3 on: March 27, 2020, 07:08:40 am »
I like the graphical layout, though functionality would be better if scrollbars or even mini-map would be visible.

But a bit more introductory description and possible use cases would keep a user more informed about the project when visiting Github read.me.

*

Zero

  • Eve
  • ***********
  • 1287
Re: BirdyVM
« Reply #4 on: March 27, 2020, 08:44:55 am »
Thanks for the encouraging words :)
I'm not sure I'm able to make a minimap, but yes, I like the idea.

About the doc, an entire book would need to be written, because the model is pretty strong. Did you notice there's an embedded Scheme interpreter included?
I'll have to work hard on documentation.

Also, I think it would need an alternative syntax, probably based on XML.

*

Zero

  • Eve
  • ***********
  • 1287
Re: BirdyVM
« Reply #5 on: March 28, 2020, 02:42:42 pm »

*

Zero

  • Eve
  • ***********
  • 1287
Re: BirdyVM
« Reply #6 on: April 02, 2020, 09:26:37 pm »

*

Zero

  • Eve
  • ***********
  • 1287
Re: BirdyVM
« Reply #7 on: April 03, 2020, 09:10:08 pm »
We now have goodies  ;D

Do you think I should go on with this one, documenting, debugging it, ...etc., or am I losing my time? I believe Birdy can be fun as an unusual - exotic - chatbot engine, but it probably won't get conscious anytime soon. I know this is my choice to make, but on the other hand, we're a community.

Edit: I added some big picture material, explaining things from a different perspective. I would highly appreciate you opinions, if any :)
« Last Edit: April 03, 2020, 11:02:38 pm by Zero »

*

ivan.moony

  • Trusty Member
  • ************
  • Bishop
  • *
  • 1723
    • mind-child
Re: BirdyVM
« Reply #8 on: April 04, 2020, 04:26:02 pm »
You have to make sure someone would use it. Otherwise, it doesn't make much sense.

*

Zero

  • Eve
  • ***********
  • 1287
Re: BirdyVM
« Reply #9 on: April 04, 2020, 09:37:42 pm »
Are you sure about this?

*

ivan.moony

  • Trusty Member
  • ************
  • Bishop
  • *
  • 1723
    • mind-child
Re: BirdyVM
« Reply #10 on: April 04, 2020, 10:42:07 pm »
I'm sure that I'm not sure.

There are things that may be their own purpose. Which ones are those, only you can answer that question for yourself.
« Last Edit: April 05, 2020, 05:06:19 am by ivan.moony »

*

Zero

  • Eve
  • ***********
  • 1287
Re: BirdyVM
« Reply #11 on: April 05, 2020, 09:08:44 am »
I think it's possible to extract from Birdy a very pure and simple computation mechanism.

Channels use pattern matching to deliver messages, and units send messages where substitution occur, based on captured wildcards. If we remove everything else, we obtain a list of channel/response couples.

What's missing is a way to detect the simultaneous presence of several message patterns. Wip.

*

infurl

  • Administrator
  • ***********
  • Eve
  • *
  • 1365
  • Humans will disappoint you.
    • Home Page
Re: BirdyVM
« Reply #12 on: April 05, 2020, 09:45:25 am »
What's missing is a way to detect the simultaneous presence of several message patterns. Wip.

The easy way to do that is with a context free grammar and a parser which can handle unrestricted ambiguous context free grammars. I've written such a thing for my own projects, but there are also several open source libraries that you can use.

*

Zero

  • Eve
  • ***********
  • 1287
Re: BirdyVM
« Reply #13 on: April 05, 2020, 11:03:52 am »
If you look in birdy.js, you'll find definitions of
- sys.newPath() line 232
- sys.delPath() line 253
- sys.getDeliveryPlan() line 294

Sorry about the coding style, I always feel like I code like shit. Anyway, these functions implement a tree of message recipients. The idea is to deliver messages to every potential rule, instead of one rule only. In typical string rewriting system like semi-thue (which the esolang Thue is based on), if you have several candidate rules, you pick only one rule, either randomly, or based on some criteria, length for example, or a priority level associated to rules. So, in
S -> BBB
B -> 0
B -> 1
you'd choose either the 2nd or the 3rd rule to replace B's.

My idea is not to choose, but to activate them both.

foo * bar -> baz *
baz * mew -> * moo
* mew -> gnu *

If you launch a "foo new mew bar", this system will produce "baz new mew", which will then produce both "new moo" and "gnu baz new". If I'm correct. The next design step here, would be to allow some sort of combination in the pattern expression, to make it fire only if several patterns match. Something like and/or connectives.

*

krayvonk

  • Electric Dreamer
  • ****
  • 125
Re: BirdyVM
« Reply #14 on: April 05, 2020, 11:24:13 am »
Sounds like a great system,  I hope you get what ur after.  I prefer these chat bots to hacking up frogs brains any day...

 


OpenAI Speech-to-Speech Reasoning Demo
by ivan.moony (AI News )
March 28, 2024, 01:31:53 pm
Say good-bye to GPUs...
by MikeB (AI News )
March 23, 2024, 09:23:52 am
Google Bard report
by ivan.moony (AI News )
February 14, 2024, 04:42:23 pm
Elon Musk's xAI Grok Chatbot
by MikeB (AI News )
December 11, 2023, 06:26:33 am
Nvidia Hype
by 8pla.net (AI News )
December 06, 2023, 10:04:52 pm
How will the OpenAI CEO being Fired affect ChatGPT?
by 8pla.net (AI News )
December 06, 2023, 09:54:25 pm
Independent AI sovereignties
by WriterOfMinds (AI News )
November 08, 2023, 04:51:21 am
LLaMA2 Meta's chatbot released
by 8pla.net (AI News )
October 18, 2023, 11:41:21 pm

Users Online

368 Guests, 0 Users

Most Online Today: 396. Most Online Ever: 2369 (November 21, 2020, 04:08:13 pm)

Articles