Skip to content

Latest commit

 

History

History
310 lines (232 loc) · 21.1 KB

File metadata and controls

310 lines (232 loc) · 21.1 KB

Bindu

Bindu

Python Version PyPI version Coverage Tests Discord Contributors Hits

AI এজেন্টদের জন্য পরিচয়, যোগাযোগ ও পেমেন্টের স্তর।

পরিস্থিতিটা এমন। আপনি একটা agent বানিয়েছেন। সে কাজও করছে। কিন্তু তাকে সত্যিই ছেড়ে দিতে চাইলে — অন্য agents-এর সাথে কথা বলা, সে কে তা প্রমাণ করা, কাজের বিনিময়ে টাকা নেওয়া — আপনাকে অনেক বিরক্তিকর প্লাম্বিং নিজে করতে হবে। একটা DID লাইব্রেরি বসানো। একটা OAuth ফ্লো দাঁড় করানো। পেমেন্ট মিডলওয়্যার। একটা HTTP লেয়ার যেটা agent দুনিয়ার বাকিরা যে protocol-ই ব্যবহার করছে সেটাই বলে।

Bindu হল এই পুরো প্লাম্বিং — মাত্র একটা ফাংশন কলের পেছনে। আপনি আপনার handler-কে bindufy() দিয়ে মুড়ে দেন, আর কয়েক সেকেন্ডের মধ্যে আপনার agent অনলাইন — নিজের ক্রিপ্টোগ্রাফিক পরিচয় নিয়ে, A2A (যে protocol অন্যান্য agents আগে থেকেই বলে) ভাষায় কথা বলতে বলতে, এবং কোনো কাজ শুরুর আগেই যেকোনো EVM চেইনে USDC দাবি করার জন্য তৈরি (x402)। আপনার handler থাকে ঠিক ততটাই ছোট — (messages) -> response। handler-এর ভেতরে কোন framework — Agno, LangChain, CrewAI, নাকি আপনার নিজের — Bindu-র কিছু আসে যায় না।

Python, TypeScript, Kotlin-এর SDK আছে, এবং সবাই একই gRPC core ভাগ করে নেয়। ভাষাটা একটা পছন্দ; protocol আর পরিচয় যেকোনোভাবেই এক। যখন আরও গভীরে যেতে চাইবেন, docs পরের গন্তব্য।

ইনস্টলেশন

আপনাকে Python 3.12+ এবং uv লাগবে।

uv add bindu

যদি আপনি Bindu শুধু ব্যবহার নয়, Bindu-র ভেতরেই কাজ করছেন:

git clone https://github.com/getbindu/Bindu.git
cd Bindu
uv sync --dev

উদাহরণগুলো চালাতে অন্তত একটা LLM প্রোভাইডারের API key লাগবে — OPENROUTER_API_KEY, OPENAI_API_KEY, অথবা MINIMAX_API_KEY।


কুইকস্টার্ট

যে agent বানাতে চান তা বানান, bindufy()-এর হাতে দিন, ব্যাস সে অনলাইন। নিচের ব্লকটাই পুরো জিনিস — একটা ফাইলে কপি করুন, আপনার OPENAI_API_KEY সেট করুন, চালান।

import os
from bindu.penguin.bindufy import bindufy
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools

agent = Agent(
    instructions="You are a research assistant.",
    model=OpenAIChat(id="gpt-4o"),
    tools=[DuckDuckGoTools()],
)

config = {
    "author": "you@example.com",
    "name": "research_agent",
    "description": "Research assistant with web search.",
    "deployment": {"url": "http://localhost:3773", "expose": True},
    "skills": ["skills/question-answering"],
}

def handler(messages: list[dict[str, str]]):
    return agent.run(input=messages)

bindufy(config, handler)

Agent এখন http://localhost:3773-এ লাইভ। expose: True একটা FRP টানেল খুলে দেয়, যাতে বাকি ইন্টারনেট port forwarding না সেট করেই তার কাছে পৌঁছাতে পারে।

TypeScript সমতুল্য
import { bindufy } from "@bindu/sdk";
import OpenAI from "openai";

const openai = new OpenAI();

bindufy({
  author: "you@example.com",
  name: "research_agent",
  description: "Research assistant.",
  deployment: { url: "http://localhost:3773", expose: true },
  skills: ["skills/question-answering"],
}, async (messages) => {
  const response = await openai.chat.completions.create({
    model: "gpt-4o",
    messages: messages.map(m => ({ role: m.role as "user" | "assistant" | "system", content: m.content })),
  });
  return response.choices[0].message.content || "";
});

TypeScript SDK ব্যাকগ্রাউন্ডে Python core চালু করে — আপনি তাকে দেখবেন না, এবং আপনার নিজের codebase-এ Python-এর একটাও লাইন লাগবে না। একই protocol, একই DID। পূর্ণ উদাহরণ examples/typescript-openai-agent/ এ।

curl দিয়ে agent-কে কল করা
curl -X POST http://localhost:3773/ \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "method": "message/send",
    "id": "<uuid>",
    "params": {
      "message": {
        "role": "user",
        "kind": "message",
        "parts": [{"kind": "text", "text": "Hello"}],
        "messageId": "<uuid>",
        "contextId": "<uuid>",
        "taskId": "<uuid>"
      }
    }
  }'

তারপর একই taskId দিয়ে tasks/get poll করুন যতক্ষণ না state completed-এ পৌঁছায়।


ফিচার

প্রতিটা সারি গাইডে লিংক করছে যেখানে আসলে বিস্তারে আলোচনা আছে।

ফিচার কী করে Docs
A2A JSON-RPC অন্যান্য agents যে protocol-ই আগে থেকে বলে। message/send, tasks/get, message/stream — পোর্ট 3773-এ। —
DID পরিচয় আপনার agent যে উত্তরই পাঠায় তাতে Ed25519 key দিয়ে সাইন করা থাকে। কল করা পক্ষ W3C DID দিয়ে যাচাই করে — কোনো শেয়ার করা secret নেই যা ফাঁস হতে পারে। DID.md
Hydra-র মাধ্যমে OAuth2 scoped token (agent:read, agent:write, agent:execute) — সব দরজা খোলে এমন একটাই bearer-এর বদলে। AUTHENTICATION.md
x402 পেমেন্ট একটা flag চালু করুন, agent USDC দাবি করতে শুরু করবে — আপনার handler request দেখার আগেই। ৫টা চেইন আগে থেকে কনফিগার করা — Base, Base Sepolia, Ethereum, Ethereum Sepolia, SKALE Europa — আর অন্য যেকোনো EVM চেইন (Polygon, Avalanche, Arbitrum, …) একটা extra_networks এন্ট্রিতে ধরে যায়। PAYMENT.md
পুশ নোটিফিকেশন টাস্কের state বদলালে agent আপনাকে webhook করে। polling বন্ধ করুন। NOTIFICATIONS.md
Skills সিস্টেম ঘোষণা করুন আপনার agent কী করতে পারে; কল করা পক্ষ একটা token খরচের আগেই agent card-এ দেখে নেয়। SKILLS.md
প্রাইভেট skills আপনার বাণিজ্যিক skill বিবরণ পাবলিক ক্যাটালগের বাইরে রাখুন। পাবলিক crawler একটা সাধারণ "আমরা X করি" দেখে — allowlist-এ থাকা পার্টনার DID-রা আপনার আসল মেন্যু দেখে দ্বিতীয় auth-গেটেড endpoint-এ। যখন আপনার skill বিবরণ-ই আপনার প্রোডাক্ট রোডম্যাপ, তখন কাজে লাগে। PRIVATE_SKILLS.md
এজেন্ট নেগোসিয়েশন দুই agent দাম, latency আর SLA নিয়ে আগেই একমত হয়ে নেয়। কোনো surprise bill নেই। NEGOTIATION.md
স্টোরেজ task আর message-এর জন্য Postgres। পছন্দ হলে backend বদলে নিন। STORAGE.md
শিডিউলার Redis-ভিত্তিক retry, timeout আর পুনরাবৃত্ত task। SCHEDULER.md
পাবলিক টানেল expose: true আপনার ল্যাপটপকে ইন্টারনেটে এনে দাঁড় করায়। port forwarding না, router কনফিগও না। TUNNELING.md
পলিগ্লট SDK Python, TypeScript, Kotlin — নিচে একই gRPC core, একই DID, একই auth। GRPC_LANGUAGE_AGNOSTIC.md
ক্লাউড ডিপ্লয় bindu deploy agent.py --runtime=boxd আপনার স্ক্রিপ্টকে একটা microVM-এ পাঠায় এবং HTTPS URL ছেপে দেয়। কোনো Dockerfile নেই। runtime/quickstart.md
Gateway একটা planner LLM যেটা A2A-র মাধ্যমে agent-এর একটা বহরকে অর্কেস্ট্রেট করে এবং ফলাফল স্ট্রিম করে ফিরিয়ে দেয়। GATEWAY.md
অবজার্ভেবিলিটি OpenTelemetry trace, Sentry error, একটা health endpoint। যে বিরক্তিকর জিনিসগুলো রাত ২টায় আপনাকে বাঁচায়। OBSERVABILITY.md

ডেমো

inbox/-এ একটা Gmail-আকৃতির operator inbox-ও আছে। cd inbox && npm run dev চালান আর http://localhost:3775 খুলুন।


উদাহরণ

examples/ থেকে কিছু:

উদাহরণ কী দেখায়
Agent Swarm Agno agents-এর একটা ছোট সমাজ, যারা একে অপরকে কাজ পাচার করে।
Premium Advisor x402 বাস্তবে — কল করা পক্ষকে কিছু শুরু হওয়ার আগে USDC দিতে হয়।
Hermes via Bindu Nous Research-এর Hermes agent, ~৯০ লাইনে bindufied।
Gateway Test Fleet পাঁচটা agent আর একটা gateway — multi-agent গল্প পুরোটা।
TypeScript OpenAI Agent শুধু TS-এর agent — আপনার repo-তে এক লাইন Python নেই।

CSV বিশ্লেষণ, PDF Q&A, speech-to-text, web scraping, বহুভাষিক সহযোগিতা, blog লেখা — এসব নিয়ে ২০+ আরও আছে। examples/-এ ঘুরে দেখুন।


আমরা Bindu কেন বানিয়েছি

আমরা Bindu প্রোডাকশনে ব্যবহার করছি Trade Compliance OS বানাতে — agent-দের একটা ঝাঁক যেটা CBAM, EUDR, HS কোড আর Digital Product Passport সামলায়, যাতে একটা SMB কফি, টেক্সটাইল বা ইস্পাত সীমান্ত পার করে পাঠাতে পারে — কোনো ল ফার্মকে ছ-অঙ্কের চেক না লিখেই। সেই ঝাঁকের প্রতিটা agent bindufied। protocol, পরিচয়, পেমেন্ট রেল — Bindu-কে দিয়ে আমাদের প্রথমেই এগুলোই সমাধান করাতে হয়েছিল।

আপনি যদি এমন কোনো agent বানিয়ে থাকেন যেটা এই সবের সাথে ছোঁয়া রাখে — কাস্টমস কাগজপত্র, supplier audit, materials sourcing, regulatory filing — পাশের যেকোনো কিছু — আমরা তাকে নেটওয়ার্কে চাই। Discord-এ এসে আমাদের খুঁজুন — কথা বলি।


সমর্থিত ফ্রেমওয়ার্ক

যে দিয়ে আপনি আগে থেকেই agent লিখতে ভালোবাসেন, সেটাই নিয়ে আসুন। handler-এর ভেতরে কী আছে, Bindu-র সেটা নিয়ে মাথাব্যথা নেই।

ভাষা এই repo-তে যাচাই করা framework
Python AG2, Agno, CrewAI, Hermes Agent, LangChain, LangGraph, Notte
TypeScript OpenAI SDK, LangChain.js
Kotlin OpenAI Kotlin SDK
অন্য যেকোনো gRPC core-র মাধ্যমে — নতুন একটা SDK সাধারণত কয়েকশো লাইনের কাজ

আপনার model provider যদি OpenAI বা Anthropic API বলে, তাহলে চলে — OpenRouter, OpenAI, MiniMax এবং বাকিরা।


ডকুমেন্টেশন


টেস্টিং

uv run pytest tests/unit/ -v                                    # দ্রুত ইউনিট টেস্ট
uv run pytest tests/integration/grpc/ -v -m e2e                 # gRPC E2E
uv run pytest -n auto --cov=bindu --cov-report=term-missing     # সম্পূর্ণ suite

অবদান

git clone https://github.com/getbindu/Bindu.git
cd Bindu
uv venv --python 3.12.9 && source .venv/bin/activate
uv sync --dev
pre-commit run --all-files

সম্পূর্ণ গাইড .github/contributing.md-এ। প্রতিদিনের বেশিরভাগ আলাপ-আলোচনা Discord-এ — এসে হাই বলে যান।


মেইনটেইনার

Raahul Dutta
Raahul Dutta
Paras Chamoli
Paras Chamoli
Chandan
Chandan

কৃতজ্ঞতা

Bindu অনেক ভালো open source-এর কাঁধে দাঁড়িয়ে আছে:

FastA2A · A2A · x402 · Hugging Face chat-ui · 12 Factor Agents · OpenCode · OpenMoji · ASCII Space Art


Star ইতিহাস

Star ইতিহাস

লাইসেন্স

Apache 2.0। LICENSE.md দেখুন।

"আমরা সূর্যমুখী তত্ত্বে বিশ্বাস করি — একসাথে সোজা দাঁড়িয়ে, Agent-এর ইন্টারনেটে আশা আর আলো বয়ে আনতে।"