An experiment with Google's Agent-to-Agent (A2A) protocol to see what it adds beyond APIs, MCP, and classic distributed computing.

A2A Doesn't need AI Agents

Is this just distributed computing re-packaged for AI? What is A2A Without AI Agents? I got into a debate with Gemini recently about Agent-To-Agent protocol (A2A). I said I thought it was a retread of existing distributed computing technologies like Service Discovery, Mesh, CORBA, etc. Perhaps Gemini took it personally, as Google (Gemini’s Creator) had announced A2A in April, and Gemini got a little “gushy” on how it was “a revolutionary new idea.” Also, perhaps “debate” is too strong a word. And I might want to consider getting out more often. ...

September 28, 2025 · 2 min · Michael OShea
Combining deterministic NLP metrics with LLM-as-judge for more robust evaluation of generated summaries.

Building a Hybrid Summary Evaluation Framework

Combining deterministic NLP with LLM-as-Judge for robust evaluation Summary Evaluation Challenges Summary evaluation metrics sometimes fall short in capturing the qualities most relevant to assessing summary quality. Traditional machine learning for natural language processing (NLP) has covered a lot of ground in this area. Widely used measures such as ROUGE focus on surface-level token overlap and n-gram matches. While effective for evaluating lexical similarity, these approaches offer limited insight into aspects such as factual accuracy or semantic completeness [1]. ...

September 14, 2025 · 7 min · Michael OShea
Using the AiChat CLI for LLM chat and out-of-the-box RAG, straight from the terminal.

LLMs At The Command Line - Part 1

If you are a command-line fan and want to experiment with large language models (LLM), you will love AiChat. There are many popular graphical front ends for working with LLMs, such as OpenAI’s ChatGPT, and Anthropic’s Claude, but get ready for this little powerhouse for CLI lovers as it has many advanced and useful features. One such feature is an easy-to-use, out-of-the-box RAG feature (Retrieval Augmented Generation) useful for searching existing content. I’ve put together a small demo here that shows how easy it can be to use in a pinch. There are many use cases where such an approach is just the right size. ...

January 18, 2025 · 1 min · Michael OShea
Getting useful confidence scores from LLM text classification, tested against labeled data with a confusion matrix.

Classify With Confidence

Large foundation models like GPT can classify text according to a well-crafted prompt instruction, and it’s remarkable how well they can do this, considering there has been no explicit training with labeled datasets. This has traditionally been done using machine learning models and logistic regression techniques. However, with generative model classification, we lose the ‘confidence level’ or the probability score of the prediction available in logistic regression. Traditional models like logistic regression provide a probability score for each class, indicating the model’s confidence level in its predictions. This confidence score is not just valuable; it’s essential for decision-making, as it helps users gauge how confident the model is about its classifications. While generative model responses may align well with the intended classification, we don’t directly get an explicit probability for each class. This can be a limitation, particularly in high-stakes applications where knowing the model’s confidence level is crucial. ...

November 2, 2024 · 10 min · Michael OShea
Using embeddings and vector distance to compare LLM prompt outputs when exact string matching fails.

Comparing Prompt Results - A Rose By Any Other Name

You might want to test an expected response from a prompt sent to a large language model, but string comparisons will not help you. The inherent variability in large language model (LLM) responses will require you to find new ways to compare generated prompt results. There are a few reasons why a generated prompt result will not exactly match a prior result: the prompt itself may have changed, the model parameters may have changed, or the model’s inherent variability may inject a small amount of change in the results. ...

August 20, 2024 · 9 min · Michael OShea
Categorizing credit card transactions at scale with AsyncOpenAI and concurrent batched requests.

Scaling OpenAI With AsyncOpenAI

As I stood outside and looked at the neighborhood wasteland that post-July 4th left behind, the whiff of gunpowder still hanging in the air, I felt a burst of good neighbor energy flow through me, so I grabbed a broom. Sweeping up the street gave me time to think about the other chores I had for the day, including the writing of a new blog post, and I began to wonder how I could use ChatGPT to help me speed some things up. ...

July 7, 2024 · 7 min · Michael OShea