<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ammorick</title>
    <description>The latest articles on DEV Community by ammorick (@ammorick).</description>
    <link>https://dev.to/ammorick</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3994309%2F112aed95-b08c-4c79-a612-35cd7ccb7b94.jpg</url>
      <title>DEV Community: ammorick</title>
      <link>https://dev.to/ammorick</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ammorick"/>
    <language>en</language>
    <item>
      <title>Can Multi-Model Discussion Actually Solve AI Hallucination? A Reflection from an MVP Practitioner</title>
      <dc:creator>ammorick</dc:creator>
      <pubDate>Fri, 10 Jul 2026 02:16:59 +0000</pubDate>
      <link>https://dev.to/ammorick/can-multi-model-discussion-actually-solve-ai-hallucination-a-reflection-from-an-mvp-practitioner-64</link>
      <guid>https://dev.to/ammorick/can-multi-model-discussion-actually-solve-ai-hallucination-a-reflection-from-an-mvp-practitioner-64</guid>
      <description>&lt;p&gt;I'm a beginner currently transitioning into tech, and I've been building an MVP of a multi-expert AI system.&lt;/p&gt;

&lt;p&gt;The current core mechanism is:&lt;/p&gt;

&lt;p&gt;1.User asks a question&lt;/p&gt;

&lt;p&gt;2.System calls multiple expert models in parallel (medical, law, strategy, general)&lt;/p&gt;

&lt;p&gt;3.Each model responds independently&lt;/p&gt;

&lt;p&gt;4.A director brain aggregates the output&lt;/p&gt;

&lt;p&gt;5.Supports random multi-brain self-interaction mode&lt;/p&gt;

&lt;p&gt;6.A simple memory module&lt;/p&gt;

&lt;p&gt;After the user asks a question, multiple expert models respond in parallel, and the outputs are aggregated. More perspectives should be more reliable than a single one — that logic sounded reasonable.&lt;/p&gt;

&lt;p&gt;But after running it for a while, something started to feel off.&lt;/p&gt;

&lt;p&gt;I began to wonder: does this actually achieve what I was hoping for — multi-brain cross-validation that improves information accuracy? Can this kind of AI really be trusted?&lt;/p&gt;

&lt;p&gt;If each individual model is itself unreliable, then what does their "consensus" actually represent? Is it converging toward correctness, or just making unreliability look more convincing?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The core problem: the validator itself is unreliable&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What I'm doing, in essence, is calling multiple off-the-shelf models and having them answer the same question concurrently. Accuracy and certainty still depend on each model's own knowledge base — and AI models aren't entirely trustworthy. They make things up. They hallucinate with confidence.&lt;/p&gt;

&lt;p&gt;It doesn't eliminate uncertainty. It just spreads the source of uncertainty from one model to multiple models.&lt;/p&gt;

&lt;p&gt;My original intent was to build "cross-validation" — multiple brains questioning and testing each other, eventually converging on more reliable conclusions. But what I've built so far feels more like "multiple models talking past each other, then stitched together."&lt;/p&gt;

&lt;p&gt;This isn't true cross-validation. It's simulating the appearance of discussion.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The difference between known and unknown problems&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When we test these systems, we almost always use questions we already know the answers to.&lt;/p&gt;

&lt;p&gt;But those questions are already in the training data. We're not testing reasoning ability — we're testing memory. True "reliability" should be demonstrated when facing unknown problems. And on unknown problems, we have no reference to verify whether the model's answer is correct.&lt;/p&gt;

&lt;p&gt;If the validator itself is unreliable, what does the validation result even mean?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The design direction is right, but the foundation is wrong&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The idea of "multi-brain cross-validation" itself is sound — it's a reasonable response to the problem of "AI being unreliable." The issue lies in its precondition: the participating models themselves need to have a baseline level of reliability. If the models themselves are unreliable, then no amount of discussion will move things in the right direction.&lt;/p&gt;

&lt;p&gt;So my MVP isn't meaningless — it got me to the point where I can see this problem clearly. But it also means that if I want this direction to truly work, I need to think about not just "how models discuss," but "how models become more reliable."&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A new possibility: should validation happen inside the model itself?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Recently I've started thinking about a question:&lt;/p&gt;

&lt;p&gt;Should multi-brain cross-validation happen inside the model itself?&lt;/p&gt;

&lt;p&gt;If this direction could work, it might mean: models would no longer need such massive amounts of training data. This could be a fundamental solution to reducing data dependency, and potentially another form of AI self-learning.&lt;/p&gt;

&lt;p&gt;This is different from another "AI self-learning" path I've been considering, but I see them as parallel possibilities.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Choices at the current stage&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If I want this MVP to have real differentiating value, I need to think about several things:&lt;/p&gt;

&lt;p&gt;Actually solving AI reliability — not just simulating it&lt;/p&gt;

&lt;p&gt;Structural design is the path, but it only has value if it actually solves a real problem&lt;/p&gt;

&lt;p&gt;To be different, the model itself needs to be different — otherwise validation itself can't be validated&lt;/p&gt;

&lt;p&gt;The direction is right, but the foundation is wrong. This leads to:&lt;/p&gt;

&lt;p&gt;Should I build my own wheels?&lt;/p&gt;

&lt;p&gt;Or use existing wheels to build the framework first?&lt;/p&gt;

&lt;p&gt;What are the risks and returns of each choice?&lt;/p&gt;

&lt;p&gt;Would this become over-engineering? After all, it's just an MVP&lt;/p&gt;

&lt;p&gt;But an MVP still needs to prove something&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Current status&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I don't have an answer yet.&lt;/p&gt;

&lt;p&gt;Should I pivot? Should I continue in the current direction? I'm still evaluating. At this stage, I lack the ability to test these ideas, but at least I can now see where the problem lies.&lt;/p&gt;

&lt;p&gt;This article is a record of my current thinking, not a conclusion. I'll update it as I continue experimenting.&lt;/p&gt;

&lt;p&gt;If you're also working on similar multi-agent systems, or have your own views on this direction, feel free to share in the comments.&lt;/p&gt;

&lt;p&gt;Links:&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/ammorick/ai-learning-journey" rel="noopener noreferrer"&gt;https://github.com/ammorick/ai-learning-journey&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Idea Archive: &lt;a href="https://github.com/ammorick/Future-exploration-direction.to-be-sorted" rel="noopener noreferrer"&gt;https://github.com/ammorick/Future-exploration-direction.to-be-sorted&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>discuss</category>
      <category>llm</category>
    </item>
    <item>
      <title>From a Sketch to a Working Multi‑Brain Dialogue Module — Design, Iteration, and Lessons Learned</title>
      <dc:creator>ammorick</dc:creator>
      <pubDate>Mon, 22 Jun 2026 04:25:31 +0000</pubDate>
      <link>https://dev.to/ammorick/from-a-sketch-to-a-working-multi-brain-dialogue-module-design-iteration-and-lessons-learned-c65</link>
      <guid>https://dev.to/ammorick/from-a-sketch-to-a-working-multi-brain-dialogue-module-design-iteration-and-lessons-learned-c65</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Background&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I've been building a multi‑expert AI Q&amp;amp;A system. The core logic is straightforward: when a user asks a question, the system calls multiple domain experts (medical, legal, strategy, etc.) in parallel, collects their responses, and synthesizes a final answer.&lt;/p&gt;

&lt;p&gt;But there's a longer‑term direction I've been thinking about: if a large number of expert brains engage in random dialogue, it might generate knowledge beyond what we currently know. That's what I decided to think through today.&lt;/p&gt;

&lt;p&gt;I drew a sketch to capture the idea at that moment.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Module Design&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I called it the "random brain" module.&lt;/p&gt;

&lt;p&gt;The core flow works like this:&lt;/p&gt;

&lt;p&gt;Select participants: Randomly pick 2–3 experts from a roster. Either fully random, or user‑specified.&lt;/p&gt;

&lt;p&gt;Generate entry point: The system auto‑generates an open topic — no user input needed.&lt;/p&gt;

&lt;p&gt;Multi‑round dialogue: Experts discuss the topic across multiple rounds. Each round, they can see the full conversation history.&lt;/p&gt;

&lt;p&gt;Separate storage: Discussion records are saved independently, not mixed with normal user conversation history.&lt;/p&gt;

&lt;p&gt;Mode switching is handled via command line:&lt;/p&gt;

&lt;p&gt;/random — pure random selection&lt;/p&gt;

&lt;p&gt;/random medical strategy — specify a particular combination&lt;/p&gt;

&lt;p&gt;/normal — switch back to normal dialogue mode&lt;/p&gt;

&lt;p&gt;This module doesn't depend on user input — it runs as a system‑initiated behavior, outside of the user's view.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Testing and Iteration&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Getting this right took three distinct iterations.&lt;/p&gt;

&lt;p&gt;First test: each expert just listed their own directions&lt;/p&gt;

&lt;p&gt;Two experts were randomly selected and asked to speak on an open topic.&lt;/p&gt;

&lt;p&gt;The output was stable — but nothing unexpected. Both experts basically listed five directions from their own fields. The medical expert listed medical cross‑domain ideas; the strategy expert listed strategic ones. No interaction, no response to each other's points.&lt;/p&gt;

&lt;p&gt;First revision: added context summaries&lt;/p&gt;

&lt;p&gt;In later rounds, each expert received a summary of what other experts had said in previous rounds.&lt;/p&gt;

&lt;p&gt;This improved things slightly, but not enough. Occasionally there were light references — "thanks for the previous expert's perspective" — but overall it still felt like parallel monologues.&lt;/p&gt;

&lt;p&gt;Second revision: layered prompts&lt;/p&gt;

&lt;p&gt;First round stayed open. From the second round onward, experts were explicitly asked to respond to other experts' points.&lt;/p&gt;

&lt;p&gt;This finally produced what I was looking for. The two experts started referencing each other's ideas and building on them.&lt;/p&gt;

&lt;p&gt;One expert picked up a direction from the other and added a concrete concept. The other took the first expert's idea and expanded it with more detailed proposals.&lt;/p&gt;

&lt;p&gt;Instead of each producing a separate list, they actually formed a structured discussion. This was the first time I saw "dialogue" rather than "parallel output" from this module.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Current Status&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The core mechanism works, but there's still a long way to go before it's stable enough to ship.&lt;/p&gt;

&lt;p&gt;What works:&lt;/p&gt;

&lt;p&gt;Multi‑round dialogue framework&lt;/p&gt;

&lt;p&gt;Random or specified expert combinations&lt;/p&gt;

&lt;p&gt;Separate storage for discussion records&lt;/p&gt;

&lt;p&gt;Command‑line mode switching&lt;/p&gt;

&lt;p&gt;Known limitations:&lt;/p&gt;

&lt;p&gt;Prompts are still hard‑coded — needs to be externalized for future expansion&lt;/p&gt;

&lt;p&gt;Valuable content from round 2 can sometimes get diluted or overwritten in round 3 — a risk of reverse optimization&lt;/p&gt;

&lt;p&gt;Response time is slow — waiting for all API calls across multiple rounds creates noticeable latency&lt;/p&gt;

&lt;p&gt;Safety monitoring isn't wired in yet — random discussions don't pass through the safety filter&lt;/p&gt;

&lt;p&gt;Output quality varies across different expert combinations — consistency still needs work&lt;/p&gt;

&lt;p&gt;The thread pool is created per call — works fine for 2‑3 experts, but needs refactoring for scaling&lt;/p&gt;

&lt;p&gt;Discussion records are saved with timestamps but not indexed — retrieval will become harder over time&lt;/p&gt;

&lt;p&gt;All of these are fixable. They don't invalidate the core functionality — they just mean there's more work ahead.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Some Thoughts&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The value of this module isn't in solving a specific problem — it's in exploring possibilities that aren't already in the expected range. When the system doesn't rely on user input and doesn't have a fixed direction, it can generate intersections you wouldn't have thought of yourself.&lt;/p&gt;

&lt;p&gt;This direction is still early. The next challenge is stability and consistency. If I can get that right, potential use cases include cross‑industry exploration, inspiration for academic research, or a component in a larger exploratory system.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Technical Details&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Layered prompt design: round 1 stays open; round 2 and later include summaries of other experts' points as context&lt;/p&gt;

&lt;p&gt;Each round calls expert APIs concurrently using ThreadPoolExecutor&lt;/p&gt;

&lt;p&gt;Discussion records are saved as JSON with full conversation history&lt;/p&gt;

&lt;p&gt;File naming pattern: random_discussion_{timestamp}_{expert_combo}.json&lt;/p&gt;

&lt;p&gt;Mode switching is handled via command line&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/ammorick/ai-learning-journey" rel="noopener noreferrer"&gt;https://github.com/ammorick/ai-learning-journey&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The public repository currently keeps the design sketch and module structure visible, but the full implementation is private for now.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Question&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you've worked on multi‑agent collaboration or exploratory modules, what challenges did you run into with stability and consistency? How did you handle them?&lt;/p&gt;

&lt;p&gt;Feel free to share your experiences — I'd love to hear how others are approaching similar problems.&lt;/p&gt;

&lt;p&gt;Postscript&lt;/p&gt;

&lt;p&gt;This article is a record of the development process for the random brain module. It's still an experimental feature — not a finished product, not a productized feature. If you're working on something similar, I'd be curious to hear about your approach.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>From Delivery Rider to Building My First AI System — Here's My Story</title>
      <dc:creator>ammorick</dc:creator>
      <pubDate>Sat, 20 Jun 2026 16:50:21 +0000</pubDate>
      <link>https://dev.to/ammorick/from-delivery-rider-to-building-my-first-ai-system-heres-my-story-3d9c</link>
      <guid>https://dev.to/ammorick/from-delivery-rider-to-building-my-first-ai-system-heres-my-story-3d9c</guid>
      <description>&lt;p&gt;Hi everyone, I'm a self-taught developer from China. I work as a delivery rider from 8 PM to 8 AM, and I code in every spare moment between shifts.&lt;/p&gt;

&lt;p&gt;In June 2025, I finished a shift, lay down in bed, and started scrolling through videos. I came across a course on AI Agents. The structure was: receive input → call tools → output → memory. And a question popped into my head:&lt;/p&gt;

&lt;p&gt;"Why can't we have two AI brains talking to each other, cross-validating information?"&lt;/p&gt;

&lt;p&gt;A whole string of ideas followed. And I had this strange feeling — I don't know why, but it felt like this was what I was supposed to do with my life.&lt;/p&gt;

&lt;p&gt;I didn't know how to write a single line of code back then. But the thought never went away.&lt;/p&gt;

&lt;p&gt;On May 24, 2026, I decided to start learning to code. I'm a delivery rider — I work from 8 PM to 8 AM, and I have about 4 hours a day for self-study. So I started building. Two weeks later, I had a working MVP:&lt;/p&gt;

&lt;p&gt;Multi-expert parallel execution: simultaneously calling medical and legal "expert brains" (powered by LLM APIs) using ThreadPoolExecutor&lt;/p&gt;

&lt;p&gt;Safety brain: input + output filtering, with black/whitelist loaded from an external JSON and separate violation logs&lt;/p&gt;

&lt;p&gt;Memory module: persistent conversation history (JSON), keeping the last 20 turns, with support for "recall what we talked about last time"&lt;/p&gt;

&lt;p&gt;Director brain: aggregates responses from multiple experts into a clear, user-friendly final answer&lt;/p&gt;

&lt;p&gt;Engineering habits: environment variable management, modular design (dispatcher/summarizer/memory/safe/safety_logger), requirements.txt, etc.&lt;/p&gt;

&lt;p&gt;This sketch was drawn after the MVP was running, to map out the next steps. At that point, I had three main directions in mind: implementing true multi-brain dialogue through the memory module; optimizing the director brain (layered routing, value system, aggregation logic); and evolving the safety brain from static filtering toward "ground-level safety."&lt;/p&gt;

&lt;p&gt;Today, my MVP has these capabilities:&lt;/p&gt;

&lt;p&gt;Multiple experts (medical, legal, strategy) running in parallel, each powered by a different API — Zhipu, Aliyun, and OpenRouter (which gives flexible access to multiple models through a single gateway)&lt;/p&gt;

&lt;p&gt;Multi-round debate — they can agree, disagree, or supplement each other, all within a shared memory framework&lt;/p&gt;

&lt;p&gt;Memory — it remembers the last 20 turns, so context carries over&lt;/p&gt;

&lt;p&gt;Safety — input and output filtering with violation logs (there's still a substring-matching false-positive issue, but it doesn't affect the core value of the MVP, so I'm leaving it for now)&lt;/p&gt;

&lt;p&gt;A brief note on how it works:&lt;/p&gt;

&lt;p&gt;When a user asks a question, the system matches keywords against available experts, with a general expert as fallback. If multiple experts are triggered, the system initiates a multi-brain dialogue — it creates an independent history log that records each round of discussion, and passes that log as context to every expert in subsequent rounds. Each expert sees the full discussion thread, not just the other side's last response. This allows them to build on or push back against each other's arguments, rather than answering in isolation. Finally, the director brain aggregates everything into a single output.&lt;/p&gt;

&lt;p&gt;This approach does consume more tokens than a standard setup, but I already have some ideas for optimization. For now, I'm focused on getting the core functionality right.&lt;/p&gt;

&lt;p&gt;Test case:&lt;/p&gt;

&lt;p&gt;"I have a cold. I can't understand the medication instructions from the doctor, and my company won't approve my sick leave. What should I do?"&lt;/p&gt;

&lt;p&gt;This triggers all four experts at once (medical, law, strategy, and the general expert as fallback). Each expert sees the full conversation history from previous rounds, so they can build on each other's arguments or push back where they disagree.&lt;/p&gt;

&lt;p&gt;It's far from perfect. The director brain's output is still just simple concatenation. Response speed is slow. The timeout logic hasn't been refined yet. All of these need work. But the core functionality works — the rest is just time.&lt;/p&gt;

&lt;p&gt;The code is here: &lt;a href="https://github.com/ammorick/ai-learning-journey" rel="noopener noreferrer"&gt;https://github.com/ammorick/ai-learning-journey&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also keep a "Museum of Ideas" — a separate repo where I capture the bigger, longer-term directions I'm not ready to build yet: multi-brain dialogue, AI that helps design new AI brains, safety as the underlying "ground" instead of a fence around the system. Some of these may take years. Some may never happen. But they're my starting point, and they're my North Star.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ammorick/Future-exploration-direction.to-be-sorted" rel="noopener noreferrer"&gt;https://github.com/ammorick/Future-exploration-direction.to-be-sorted&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's not polished. It's still rough around the edges. But it runs, and I'm iterating on it every day.&lt;/p&gt;

&lt;p&gt;I've written a couple of articles about this journey — in Chinese for now, but the code and the process are universal:&lt;/p&gt;

&lt;p&gt;From Single Expert to Multi-Expert Debate — a technical recap of the core mechanism&lt;/p&gt;

&lt;p&gt;Night-Shift Delivery Rider, Coding in Spare Time — the origin story and overall architecture&lt;/p&gt;

&lt;p&gt;While testing, I realized something: to an end user, this system probably looks just like any other Q&amp;amp;A bot — even though the underlying logic has completely changed.&lt;/p&gt;

&lt;p&gt;But I'm not worried about that right now. As a developer, my energy should go into the technology itself: improving my skills, sharpening my judgment, and refining the system architecture. User feedback matters — but that's for a different stage. Right now, presenting the project as a work-in-progress is itself a form of demonstration. What people who know this space will see is the thinking process and the judgment behind it, not just the final output.&lt;/p&gt;

&lt;p&gt;I don't know if what I'm building will ever be "good enough" for the market. But at least it's already proof of some of my capabilities — and that certainty alone might open other doors further down the road.&lt;/p&gt;

&lt;p&gt;To be honest, I don't have many people in my circle who work in this space, and it's hard to find others in a similar situation online. Most of the time, I'm learning and building on my own. And I often ask myself: Am I doing this right? Is my progress on track? What does the industry actually need? That kind of uncertainty can be more draining than the technical challenges themselves. But I keep going — because I choose to trust myself.&lt;/p&gt;

&lt;p&gt;One thing I always keep in mind: there is no tomorrow without today. Only by putting in the work every single day can a real tomorrow arrive. I'll keep building this project — unless it gets crushed by the wheel of history.&lt;/p&gt;

&lt;p&gt;I'm new to this field, and my fundamentals are still weak — I'm working on them. So I'm here to share my progress, and also to learn. If you've been through something similar, I'd love to hear how you navigated it.&lt;/p&gt;

&lt;p&gt;One question I'd like to ask:&lt;/p&gt;

&lt;p&gt;For Python fundamentals, I've been learning on the go — picking up whatever I need for the project. I used to spend about 30 minutes a day on practice exercises, and recently I've switched to a weekly schedule: MVP development on Mon/Tue/Wed, fundamentals practice on Thu/Fri/Sat, and reviews plus writing on Sundays. Does this rhythm make sense? Any advice on how to improve more effectively?&lt;/p&gt;

&lt;p&gt;Also:&lt;br&gt;
I'd love to hear your thoughts — what would you add to a system like this?&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

&lt;p&gt;P.S. I spent quite a while trying to include two images in this post — a sketch of my early design and a terminal screenshot of the test case running — but neither of them would display properly after upload. I've tried different formats, compression, and even external hosting like Imgur, but nothing seems to work. If you've run into this issue before and know how to fix it, I'd really appreciate any advice. Thanks!&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>career</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
