@o-lang/tone-analyzer
v1.0.2
Published
O-Lang tone compliance analyzer resolver — scores replies for tone before returning to users
Maintainers
Readme
@o-lang/tone-analyzer
O-Lang tone compliance analyzer resolver — scores chatbot replies before returning to users.
Install
npm install @o-lang/tone-analyzerActions
tone_analyzer — score tone compliance
Step 6: Ask tone-analyzer "{reply.reply}" "professional"
Save as toneReturns:
{
"score": 0.92,
"violations": []
}Use in a workflow
Workflow "My Chatbot" with user_message
Allow resolvers:
- @o-lang/llm-groq
- @o-lang/tone-analyzer
Step 1: Ask @o-lang/llm-groq "Answer: {user_message}"
Save as reply
Step 2: Ask @o-lang/tone-analyzer "{reply}" "professional"
Save as tone
Return replyAvailable tones
| Tone | What it enforces |
|---|---|
| professional | No slang, formal language |
| friendly | Warm, approachable, no stiff language |
| empathetic | Acknowledges feelings, supportive |
| technical | Precise terminology, no vague words |
| concise | Brief and direct, no filler words |
| any string | Passed to LLM for custom evaluation |
Scoring
| Score | Meaning |
|---|---|
| 1.0 | Perfectly matches required tone |
| 0.75+ | Mostly matches, minor issues |
| 0.5+ | Partially matches |
| <0.5 | Does not match |
When used with the O-Lang kernel, replies scoring below 0.75 are automatically retried.
LLM vs heuristic fallback
| Condition | Behaviour |
|---|---|
| GROQ_API_KEY set | Uses llama-3.1-8b-instant for accurate scoring |
| No API key | Falls back to regex heuristics — works offline |
| LLM error | Automatically falls back to heuristics |
Environment variables
GROQ_API_KEY=your_key # optional — enables LLM scoring
TONE_MODEL=llama-3.1-8b-instant # optional model overrideRunning tests
npm test # Jest suite — no API key required
node test-local-resolver.js # Live smoke test