Drupal AI Contribution meetup 27 Feb 2025
>>> [!note] Migrated issue <!-- Drupal.org comment --> <!-- Migrated from issue #3508193. --> Reported by: [valthebald](https://www.drupal.org/user/239562) >>> <p>Drupal AI Contribution meetup from 27 Feb, 2025 at 13:00 UTC to 28 Feb 2025 13:00 UTC (Check your local time at <a href="https://www.timebie.com/std/universal.php">https://www.timebie.com/std/universal.php</a>)</p> <h2>Where</h2> <p>#ai-contrib channel in <a href="https://www.drupal.org/slack/">Drupal Slack</a></p> <h2>Attendees</h2> <p>(in the order of appearance in the chat)</p> <h2>Agenda</h2> <h3>Follow-up to topics of <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/ai/issues/3503762" title="Status: Closed (fixed)">#3503762: Drupal AI Contribution meetup 2025.3</a></span></h3> <h3>Current progress in AI core and the ecosystem</h3> <h3>Suggest your topic in comments</h3> <ul> <!--Start top post--><li>Hello everyone, and welcome to the Drupal AI contribution meeting!This meeting:&#10148; Happens every other week in #ai-contribute channel&#10148; Is text only!&#10148; Happens in threads, which you can follow to be notified of new replies even if you don&rsquo;t comment in the thread. You may also join the meeting later and participate asynchronously.&#10148; Refers to various issues and plans tracking in d.o project:<span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/ai/issues/3508193" title="Status: Closed (fixed)">#3508193: Drupal AI Contribution meetup 27 Feb 2025</a></span>. Please comment there so we can grant you credit for attending/contributing! Please note, we will only give attributions for active engagement.&nbsp;(edited)&nbsp;<br> <!--End top post--><!--Start thread--><ul> </ul></li> </ul> <!--End thread--><!--Start top post--><li>0&#65039;&#8419; Roll call! Who's here? Please specify your <a href="http://drupal.org">drupal.org</a> username. What's your favourite submodule of AI module in Drupal?<br> <!--End top post--><!--Start thread--><ul> <li><strong>valthebald</strong>: Val "valthebald" from Sofia, Bulgaria. And my favourite submodule is ai_translate &#128578;</li> <li><strong>sudofly</strong>: Alex &ldquo;sudofly&rdquo; from Fort Lauderdale, Florida USAai_testing &hellip; my module, that is just an idea as of now but I can&rsquo;t wait to check in some code</li> <li><strong>valthebald</strong>: I like the sound of it!</li> <li><strong>valthebald</strong>: testing as in phpunit test?</li> <li><strong>sudofly</strong>: My background is Behat/Selenium end-to-end testing</li> <li><strong>sudofly</strong>: so UI testing</li> <li><strong>valthebald</strong>: that's nice! Behat is one of my favorite tools &#128578;</li> <li><strong>sudofly</strong>: Yeah I&rsquo;ve put it through its paces, running Selenium in Lando docker containers and inside GitLab CI/CD pipelines.. using aggressive Javascript to click into cross-site iFrames, all sorts of fun stuff</li> <li><strong>Vivek Panicker</strong>: Vivek from Kolkata, India.My favorite submodule would be ai_chatbot.</li> <li><strong>thejimbirch</strong>: thejimbirch, AI CKeditor, as it is so easy to set up and configure and works great out of the box.</li> <li><strong>yautja_cetanu (Jamie)</strong>: Jamie and favourite is Automators &#128578;</li> <li><strong>Marcus Johansson</strong>: Marcus (marcus_johansson) from Berlin. The abstraction layer, aka core &#128578;</li> <li><strong>Jasper Lammens</strong>: Jasper (lammensj) from Nijlen. Favorite is the one for ECA .</li> <li><strong>bircher</strong>: bircher :wave: my favourite is the image alt text generation, maybe with automators :smile:</li> <li><strong>yautja_cetanu (Jamie)</strong>: oh if that is the case @Scott Euser and especially @mandclu are working on making a widget front-end for AI stuff in the Drupal AI ecosystem like Augmentors and like the image alt text generation but probably with Automators (and other backends like simple prompts and agents)</li> <li><strong>Scott Euser</strong>: scott_euser here, London UK, still AI search for me but lately getting more interested in the augmentor/automator updates like mentioned above. Currently working on <a href="https://www.drupal.org/node/3509235">Prompt Management</a> - should have enough progress in some days to start to gather features/feedback, but slightly too early still &#128578;</li> <li><strong>bircher</strong>: I am very interested also in experimenting with automators and the symfony messenger (sm on d.o)</li> </ul></li> <!--End thread--><!--Start top post--><li>1&#65039;&#8419; Followup to previous meeting[#3503762]<br> <!--End top post--><!--Start thread--><ul> </ul> <!--End thread--></li> <!--Start top post--><li>1&#65039;&#8419; 1&#65039;&#8419; Bringing search_api out of experimental[#3485449]<br> <!--End top post--><!--Start thread--><ul> <li><strong>valthebald</strong>: this one hasn't seen any change for about a month. How can we help push it?</li> <li><strong>yautja_cetanu (Jamie)</strong>: @Seogow has been working on it. Do you have any updates of when? We found issues with how we handle indexing very large nodes into chunks that we are trying to fix.</li> </ul> <!--End thread--></li> <!--Start top post--><li>1&#65039;&#8419; 2&#65039;&#8419; Programmatically add operation type[#3500120]<br> <!--End top post--><!--Start thread--><ul> <li><strong>valthebald</strong>: Marked RTBC but not merged yet. Also, the issue is open against 1.0.x but not 1.1.x (let's discuss this separately later)</li> </ul> <!--End thread--></li> <!--Start top post--><li>1&#65039;&#8419; 3&#65039;&#8419; Normalize function call <a href="https://www.drupal.org/node/3479388">https://www.drupal.org/node/3479388</a><br> <!--End top post--><!--Start thread--><ul> <li><strong>valthebald</strong>: That's a huge topic, and there's great discussion about using contexts (and what context is)</li> <li><strong>valthebald</strong>: any feedback appreciated</li> </ul> <!--End thread--></li> <!--Start top post--><li>1&#65039;&#8419; 4&#65039;&#8419; Normalize structured responses[#3492869]<br> <!--End top post--><!--Start thread--><ul> <li><strong>valthebald</strong>: If understand correctly, both this and previous topic can benefit from using MCP, am I right @Giorgi Jibladze @yautja_cetanu (Jamie)?</li> <li><strong>yautja_cetanu (Jamie)</strong>: kinda... its more that MCP will benefit from this. This is more generally interacting with LLMs.MCP adds a lot more stuff around it.</li> <li><strong>yautja_cetanu (Jamie)</strong>: Its hard to truly "use" MCP until MCP allows servers and clients to talk over the internet. Even then it adds loads of specific things like a transfer protocol layer that we'd never use inside drupal</li> <li><strong>yautja_cetanu (Jamie)</strong>: I think I misunderstood a lot beccause I thought the MCP tools schema was unique to MCP but a lot of the JSON schema is in the OpenAI SDK and API itself and so its something different models implement differently in theory</li> <li><strong>kevinquillen</strong>: DTO or value objects?</li> <li><strong>yautja_cetanu (Jamie)</strong>: Confused by this?</li> <li><strong>kevinquillen</strong>: Oh those structured responses. I thought by the title it meant a common response interface regardless of the provider</li> </ul></li> <!--End thread--><!--Start top post--><li>1&#65039;&#8419; 5&#65039;&#8419; Deepchat history between sessions (chatgpt-like memory)<br> <!--End top post--><!--Start thread--><ul> <li><strong>valthebald</strong>: Issue to be created</li> </ul> <!--End thread--></li> <li>:one: :six: Drupal AI website <ul> <li> <strong>valthebald</strong>: Issue to be created. If no objections, I'll create a public repo on github (or do we prefer gitlab? I'd prefer github because of better packagist support)</li> <li><strong>yautja_cetanu (Jamie)</strong>: go for it!<br> :+1:</li> <li>I think I have ideas of what I want the Drupal AI Module site to do:<br> I want it to be a place where you can learn about the AI module in a way that is easier than d.org<br> I want it to be a neutral place that isn't pure Freely Give to talk about the AI module.<br> I want to be able to post updates on the whole AI Ecosystem there including patch notes and stuff and then have that in drupal planet.<br> I want there to be a place where we can highlight key issues we are working on or need working on.<br> I want someone who says "?Hey I have 2-3 hours free lets help AI" could come her and know what to do and where to go.<br> I want to highlight organisations working on bits of the AI ecosystem, show what they are currently working on and what issues they are working on.<br> I want to find a way that the Drupal AI ecosystem and maybe opencollective can get money and organisations that contribute can get rewarded.<br> I'd like a workflows-of-ai.com list of use cases, that have recipes and ideally we'd strart providing basic hosting to trial loads of different uses of it.<br> Have marketting video stype documentation alongside developer docs. Really show off why its cool<br> :heavy_plus_sign:</li> <li><strong>valthebald</strong>: @yautja_cetanu (Jamie) that's a solid list to start from!</li> <li><strong>Scott Euser</strong>: Maybe a wishlist thing for one day; but a contributor login could allow revisions/wiki style like drupal.org does - if its intention is to become a living source of knowleged <p><img src="https://www.drupal.org/files/issues/2025-03-04/image.png" alt="Wish list"></p></li> <li><strong>yautja_cetanu (Jamie)</strong>: yes definitely!</li> </ul> </li> <!--Start top post--><li>2&#65039;&#8419; Organisational questions<br> <!--End top post--><!--Start thread--><ul> </ul> <!--End thread--></li> <!--Start top post--><li>2&#65039;&#8419; 1&#65039;&#8419; Issue versions<br> <!--End top post--><!--Start thread--><ul> <li><strong>valthebald</strong>: Current default version is 1.0.x despite existence of 1.1.x. That leads to issues created against 1.0 (even adding new features)</li> <li><strong>valthebald</strong>: I suggest changing default to 1.1.x and adding "needs backport to 1.x" tag when needed</li> <li><strong>valthebald</strong>: and keep 1.0.x only for issues that do not affect 1.1.x (are there such issues?)</li> <li><strong>Scott Euser</strong>: I believe the intention here was that 1.0.x is like current stream and things that need more review when upgrading (more major features) go into 1.1.x, but maybe @Marcus Johansson you can comment on your plan with it since its you leading that.FWIW the drupal core way of doing it would be:Everything targets highest branch which gets set as default (e.g. core 11.x)On merge maintainer decides whether to backport (e.g. core 10.4.x)</li> <li><strong>valthebald</strong>: I was having drupal core flow in mind when suggesting &#128578;in case of AI, next stable is 1.1.x and current stable is 1.0.xmy concern is that if issues are being committed by default to 1.0.x, 1.1.x will face regressions</li> <li><strong>Marcus Johansson</strong>: So, we have still a 1.0.5 coming out and 1.1.x-dev is for major changes. Right now I'm trying to keep 1.1.x up to date manually, since we haven't merged anything there yet. We might have one breaking change also in terms of how streaming and the logging of that works.After 1.0.5, this could perhaps be changed like this, that 1.1.x is the default version.</li> </ul></li> <!--End thread--><!--Start top post--><li>2&#65039;&#8419; 2&#65039;&#8419; Leave the Drupal island?<br> <!--End top post--><!--Start thread--><ul> <li><strong>valthebald</strong>: AI module offers nice abstraction layer for different providers, how specific to Drupal is this abstraction?</li> <li><strong>valthebald</strong>: Would it make sense to have "generic" PHP components in a way similar to commerce module and commerceguys/addressing component?&nbsp;(edited)</li> <li><strong>valthebald</strong>: If yes, which components can be done Drupal-agnostic?</li> </ul> <!--End thread--></li> <!--Start top post--><li>2&#65039;&#8419; 3&#65039;&#8419; Github/gitlab organisation<br> <!--End top post--><!--Start thread--><ul> <li><strong>valthebald</strong>: Related to previous question, is there a need for a separate organisation (drupalai?) in github/gitlab?</li> </ul> <!--End thread--></li> <!--Start top post--><li>2&#65039;&#8419; 3&#65039;&#8419; Decoupled DeepChat<br> <!--End top post--><!--Start thread--><ul> <li><strong>valthebald</strong>: question from the previous meeting, issue to be created.</li> <li><strong>valthebald</strong>: I still think this is something many AI users can benefit from</li> <li><strong>Marcus Johansson</strong>: What does this refer to - using it without AI Assistants API?</li> <li><strong>Marcus Johansson</strong>: There is this idea then,<span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-14"><a href="https://www.drupal.org/project/ai/issues/3492940" title="Status: Reviewed &amp; tested by the community">#3492940: Add ChatProcessor</a></span>. But even without that we could easily make the endpoint being used a setting in the block.</li> <li><strong>valthebald</strong>: @Marcus Johansson using it outside of Drupal admin interface. As an example, as Telegram mini-app</li> <li><strong>Marcus Johansson</strong>: Like embeddable on other websites?</li> </ul></li> <!--End thread--><!--Start top post--><li>3&#65039;&#8419; Updates from module maintainers (what happens, where help is needed most etc.)<br> <!--End top post--><!--Start thread--><ul> <li><strong>Scott Euser</strong>: I know "Boost with AI" processor within AI Search module is starting to get used a bit more; it works well with Search API Database as the primary index. However if anyone is using SOLR and that, this issue is still what's really holding back SOLR version:[#3491446]I don't think it should be too hard to follow the pattern I used for database and I think my suggestion in issue summary probably should do the trick.</li> </ul></li> <!--End thread--> <li>:three: :one: @yautja_cetanu (Jamie) <ul> <li><strong>yautja_cetanu (Jamie)</strong>: We have a few big things on its way:<br> Much better and easier to visualise logging.<br> Can download the prompts from logs and export them to a playground for LLMs to help with prompt engineering.<br> Hopefully soon tool support in the Logs.<br> We have normalised responses and proper function calling.<br> We will have a builder where you can create AI Agents yourself from the UI and all the Drupal Actions.<br> We are next going to add ECA actions.<br> This means making your own agents should become much easier<br> We are creating a whole bunch of AI Agents now including:<br> Agents that can create and edit content<br> Agents that can scrape the web (We need config in the tools and permissions)<br> Agents that can use RAG search (We need config in the tools and permissions before release)<br> I want Agents to have their own roles before we unleash all these agents.<br> <img src="https://www.drupal.org/files/issues/2025-03-04/image%20%282%29.png" alt="preview"><br> <img src="https://www.drupal.org/files/issues/2025-03-04/editagent.png" alt="preview"><br> <img src="https://www.drupal.org/files/issues/2025-03-04/subagent.png" alt="preview"> </li> <li><strong>Jasper Lammens</strong>: this is so coooool :smile:</li> </ul> </li> <!--Start top post--><li>3&#65039;&#8419; 2&#65039;&#8419; @Marcus Johansson<br> <!--End top post--><!--Start thread--><ul> <li><strong>Marcus Johansson</strong>: An issue to have thoughts about - its to make vector database recipe ready:<span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/ai/-/work_items/3509315" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/ai/-/work_items/3509315</a></span></li> <li><strong>Scott Euser</strong>: Posted a reply there, interesting one!</li> </ul> <!--End thread--></li> <!--Start top post--><li>4&#65039;&#8419; Open mike! Suggest your topic here<br> <!--End top post--><!--Start thread--><ul> <li><strong>jurgenhaas</strong>: Watching the space, it feels like a lot of entity related AI agents get created and maintained as individual modules for e.g. nodes, paragraphs, blocks, etc. just to name a few that I recently spotted.Wondering if really each entity type requires their own agent or if not a generic agent for entities would do the job?</li> <li><strong>valthebald</strong>: good question! Given the size of[#3429343], it becomes more and more difficult even to navigate the list of AI-related modules</li> <li><strong>Jasper Lammens</strong>: Initially, you might think that it&rsquo;s not necessary to have an Agent per entity type. But the amount of operations that you can do with an Agent quickly grows and then it becomes unmaintainable.</li> <li><strong>Jasper Lammens</strong>: And in order to keep the AI-module fairly small, I believe it&rsquo;s a good approach to keep them separate.</li> <li><strong>Jasper Lammens</strong>: Even not as a submodule, but as a general contrib one</li> <li><strong>Jasper Lammens</strong>: Cause otherwise, AI would have a dependency on ECA, Paragraphs etc.</li> <li><strong>Jasper Lammens</strong>: Basically every module that would have an Agent</li> <li><strong>Jasper Lammens</strong>: But yeah, something could be approved in terms of providing an overview of available &ldquo;agent-modules&rdquo;</li> <li><strong>jurgenhaas</strong>: OK, makes sense. Just maybe some common functions maintained by the AI module as a service for all the others? May just increase the overall quality</li> <li><strong>Jasper Lammens</strong>: That&rsquo;s certainly possible</li> <li><strong>Jasper Lammens</strong>: The Agent is just a plugin</li> <li><strong>Marcus Johansson</strong>: @jurgenhaas - we have an content creating agent using the new structure that is completely generic that works quite well.So its an agent that basically have the following tools it can loop over:Get field information for entity type (What field exists on an entity type/bundle combination and what are their names, types, descriptions, data names, required etc.)Get field data types, so it can figure out what values it needs to fill out and if there are options etc. So for instance a text_long field has the filter_format it needs to fill out.Get current values - if you ask to change a value with some instructions, it can get the current values.Content entity modifier which takes the values and modifies them, saves them.The difference, between the generic one and the specialized one, is that the first two tools are already in context for that specific content type.There are three issues I think with the generic one compared to creating one specifically for some content type/entity type.It needs to fetch a lot of context information on what fields are available, how to fill out those fields etc. - so even without the token generation needed to write actual content, it might take 1-2 minutes to fill out a simple node. Which with a chatbot UI at least becomes unusable.Outside of giving exact information to the agent already from the start with a specific agent, you can write the prompt so it understands the context behind the fields, if this is missing in the entity/field description - how you set a label on a taxonomy term, is different then a node title etc.It works as written quite well - and with newer models that might improve to working almost all the time, however if you see that its doing a common error when filling out a specific field type for a specific agent, you can do prompt engineering specifically there.So with better agents and other orchestration UI's it will work better, but for the Chatbot/Drupal CMS it might be necessary for now to have separate agents.The good thing is in 1.1.0 the creation of the agents will be a lot easier, so we might not have to ship one for each entity type - they could just be recipes.</li> <li><strong>jurgenhaas</strong>: That makes sense. And the entity type specifics like labels/titles is something that the Drupal API got wrong in the first place. Same goes for entity ID and others. Although, even that could be generalised by extracting the entity keys, but it's annoying that such common metadata for entities was allowed to be different. It gets even worse with token syntax. Some maintainers have their own ideas how a token property should be named.And that's exactly where my concern comes from: building a new a large new ecosystem around AI, enforcing standards and avoiding duplicate code is something I'd try to apply whereever possible.</li> <li><strong>Marcus Johansson</strong>: Right, that is the issue that it needs to check the label key, id key before hand, etc while with a specific agent it knows it from the get-go and can be pushed towards it as well using prompting.</li> <li><strong>Marcus Johansson</strong>: And if you need to for instance create a taxonomy and one media image before you create your node, that is 3 lookups just for that, same for looking up other field information etc.</li> <li><strong>Vivek Panicker</strong>: There is 1 issue that we can look into for code optimization[#3509181]</li> </ul></li> <!--End thread--> <p>Participants:</p> <p>Participants:</p> <p>valthebald, sudofly, Vivek Panicker, thejimbirch, yautja_cetanu (Jamie), Marcus Johansson, Jasper Lammens, bircher, Scott Euser, kevinquillen</p>
issue