इस ट्यूटोरियल में, हम पाइडटेंटाई लाइब्रेरी का उपयोग करके एजेंटिक एआई द्वारा संचालित एक अंतिम to एंड टिकटिंग सहायक का निर्माण करेंगे। हम Pydantic V2 मॉडल के साथ अपने डेटा नियमों को परिभाषित करेंगे, एक it memory sqlite डेटाबेस में टिकट स्टोर करेंगे, और पायथन के UUID मॉड्यूल के साथ अद्वितीय पहचानकर्ता उत्पन्न करेंगे। पर्दे के पीछे, दो एजेंट, एक टिकट बनाने के लिए और एक स्थिति की जाँच करने के लिए, Google Gemini (Pydanticai के Google-GLA प्रदाता के माध्यम से) का लाभ उठाने के लिए आपके प्राकृतिक and language संकेतों की व्याख्या करने और हमारे कस्टम डेटाबेस फ़ंक्शंस को कॉल करें। परिणाम एक स्वच्छ, टाइप eyssefective वर्कफ़्लो है जिसे आप तुरंत COLAB में चला सकते हैं।
!pip install --upgrade pip
!pip install pydantic-ai
सबसे पहले, ये दो कमांड आपके पिप इंस्टॉलर को नवीनतम संस्करण में अपडेट करते हैं, नई सुविधाओं और सुरक्षा पैच में लाते हैं, और फिर पाइदेटिकई स्थापित करते हैं। यह लाइब्रेरी टाइप-सेफ एआई एजेंटों की परिभाषा और एलएलएम के साथ पाइडेंटिक मॉडल के एकीकरण को सक्षम करती है।
import os
from getpass import getpass
if "GEMINI_API_KEY" not in os.environ:
os.environ("GEMINI_API_KEY") = getpass("Enter your Google Gemini API key: ")
हम जांचते हैं कि क्या GENINI_API_KEY पर्यावरण चर पहले से ही सेट है। यदि नहीं, तो हम सुरक्षित रूप से आपको (बिना गूंज के) को रनटाइम में अपने Google GENINI API कुंजी में प्रवेश करने के लिए प्रेरित करते हैं, फिर इसे OS.Environ में स्टोर करें ताकि आपका एजेंट AI कॉल स्वचालित रूप से प्रमाणित कर सके।
!pip install nest_asyncio
हम NEST_ASYNCIO पैकेज स्थापित करते हैं, जो आपको मौजूदा Asyncio Event लूप को पैच करने देता है ताकि आप Async फ़ंक्शंस (या उपयोग .run_sync () का उपयोग कर सकें।
import sqlite3
import uuid
from dataclasses import dataclass
from typing import Literal
from pydantic import BaseModel, Field
from pydantic_ai import Agent, RunContext
हम अपने in मेमोरी डेटाबेस और UUID के लिए अजगर के SQLite3 में अद्वितीय टिकट आईडी उत्पन्न करने के लिए, स्पष्ट निर्भरता और प्रकार की परिभाषाओं के लिए डेटाक्लास और शाब्दिक का उपयोग करने के लिए लाते हैं, और पायडैटिक के बेसमॉडल/फ़ील्ड को लोड करने के लिए डेटा स्कीमाओं को लागू करने के लिए एजेंट और रनकॉन्टेक्स्ट को पायडैटिक एगेंट्स से आगे बढ़ाने के लिए।
conn = sqlite3.connect(":memory:")
conn.execute("""
CREATE TABLE tickets (
ticket_id TEXT PRIMARY KEY,
summary TEXT NOT NULL,
severity TEXT NOT NULL,
department TEXT NOT NULL,
status TEXT NOT NULL
)
""")
conn.commit()
हम एक it मेमोरी sqlite डेटाबेस में सेट करते हैं और टिकट_आईडी, सारांश, गंभीरता, विभाग और स्थिति के लिए कॉलम के साथ एक टिकट तालिका को परिभाषित करते हैं, फिर स्कीमा करते हैं, इसलिए आपके पास अपने टिकट रिकॉर्ड के प्रबंधन के लिए एक हल्का, क्षणिक स्टोर है।
@dataclass
class TicketingDependencies:
"""Carries our DB connection into system prompts and tools."""
db: sqlite3.Connection
class CreateTicketOutput(BaseModel):
ticket_id: str = Field(..., description="Unique ticket identifier")
summary: str = Field(..., description="Text summary of the issue")
severity: Literal("low","medium","high") = Field(..., description="Urgency level")
department: str = Field(..., description="Responsible department")
status: Literal("open") = Field("open", description="Initial ticket status")
class TicketStatusOutput(BaseModel):
ticket_id: str = Field(..., description="Unique ticket identifier")
status: Literal("open","in_progress","resolved") = Field(..., description="Current ticket status")
यहां, हम प्रत्येक एजेंट कॉल में हमारे SQLite कनेक्शन को पारित करने के लिए एक साधारण टिकटिंगडिपेंडेंसी DataClass को परिभाषित करते हैं, और फिर दो pydantic मॉडल की घोषणा करते हैं: CreateTicketOutput (टिकट आईडी, सारांश, गंभीरता, विभाग और डिफ़ॉल्ट स्थिति “ओपन” और टिकटस्टैटसाउटपुट (टिकट आईडी और इसकी वर्तमान स्थिति के साथ)। ये मॉडल हमारे एजेंटों के लौटने वाली हर चीज पर एक स्पष्ट, मान्य संरचना को लागू करते हैं, यह सुनिश्चित करते हुए कि आप हमेशा अच्छी तरह से गठित डेटा प्राप्त करते हैं।
create_agent = Agent(
"google-gla:gemini-2.0-flash",
deps_type=TicketingDependencies,
output_type=CreateTicketOutput,
system_prompt="You are a ticketing assistant. Use the `create_ticket` tool to log new issues."
)
@create_agent.tool
async def create_ticket(
ctx: RunContext(TicketingDependencies),
summary: str,
severity: Literal("low","medium","high"),
department: str
) -> CreateTicketOutput:
"""
Logs a new ticket in the database.
"""
tid = str(uuid.uuid4())
ctx.deps.db.execute(
"INSERT INTO tickets VALUES (?,?,?,?,?)",
(tid, summary, severity, department, "open")
)
ctx.deps.db.commit()
return CreateTicketOutput(
ticket_id=tid,
summary=summary,
severity=severity,
department=department,
status="open"
)
हम ‘create_agent’ नामक एक pydanticai एजेंट बनाते हैं जो Google मिथुन को वायर्ड है और हमारे SQLite कनेक्शन (DEPS_TYPE = TICKENINGDEPENDENCIES) और आउटपुट स्कीमा (CreateTicketOutput) से अवगत है। @Create_agent.tool Descreator तब एक async create_ticket फ़ंक्शन को पंजीकृत करता है, जो एक UUID उत्पन्न करता है, टिकट तालिका में एक नई पंक्ति सम्मिलित करता है, और एक मान्य CreateTicketOutput ऑब्जेक्ट देता है।
status_agent = Agent(
"google-gla:gemini-2.0-flash",
deps_type=TicketingDependencies,
output_type=TicketStatusOutput,
system_prompt="You are a ticketing assistant. Use the `get_ticket_status` tool to retrieve current status."
)
@status_agent.tool
async def get_ticket_status(
ctx: RunContext(TicketingDependencies),
ticket_id: str
) -> TicketStatusOutput:
"""
Fetches the ticket status from the database.
"""
cur = ctx.deps.db.execute(
"SELECT status FROM tickets WHERE ticket_id = ?", (ticket_id,)
)
row = cur.fetchone()
if not row:
raise ValueError(f"No ticket found for ID {ticket_id!r}")
return TicketStatusOutput(ticket_id=ticket_id, status=row(0))
हमने Google मिथुन प्रदाता और हमारे साझा टिकटिंगडेंसिटी का उपयोग करके एक दूसरा Pydanticai एजेंट, Status_agent भी सेट किया है। यह एक ASYNC get_ticket_status टूल को पंजीकृत करता है जो SQLite डेटाबेस में किसी दिए गए टिकट_आईडी को देखता है और एक मान्य टिकटस्टैटसाउटपुट देता है, या टिकट नहीं मिलने पर एक त्रुटि उठाता है।
deps = TicketingDependencies(db=conn)
create_result = await create_agent.run(
"My printer on 3rd floor shows a paper jam error.", deps=deps
)
print("Created Ticket →")
print(create_result.output.model_dump_json(indent=2))
tid = create_result.output.ticket_id
status_result = await status_agent.run(
f"What's the status of ticket {tid}?", deps=deps
)
print("Ticket Status →")
print(status_result.output.model_dump_json(indent=2))
अंत में, हम पहले आपके SQLite कनेक्शन को DEPS में पैकेज करते हैं, फिर Create_agent से एक प्राकृतिक ing language प्रॉम्प्ट के माध्यम से एक नया टिकट लॉग इन करने के लिए कहें, JSON के रूप में मान्य टिकट डेटा को प्रिंट करें। यह तब लौटा हुआ टिकट_आईडी लेता है, उस टिकट की वर्तमान स्थिति के लिए Status_agent को प्रश्न करता है, और JSON फॉर्म में स्थिति को प्रिंट करता है।
निष्कर्ष में, आपने देखा है कि कैसे एजेंटिक एआई और पाइदेटिकई एक पूरी सेवा प्रक्रिया को स्वचालित करने के लिए एक साथ काम करते हैं, एक नए मुद्दे को लॉग इन करने से लेकर अपनी लाइव स्थिति को पुनः प्राप्त करने के लिए, सभी संवादी संकेतों के माध्यम से प्रबंधित किए गए। Pydantic V2 का हमारा उपयोग यह सुनिश्चित करता है कि प्रत्येक टिकट आपके द्वारा परिभाषित स्कीमा से मेल खाता हो, जबकि SQLite एक हल्का बैकएंड प्रदान करता है जिसे किसी भी डेटाबेस के साथ बदलना आसान है। जगह में इन उपकरणों के साथ, आप सहायक का विस्तार कर सकते हैं, नए एजेंट कार्यों को जोड़ सकते हैं, ओपनईएआई जैसे अन्य एआई मॉडल को एकीकृत कर सकते हैं: जीपीटी -4 ओ, या वास्तविक y विश्व एपीआई को जोड़ना, विश्वास है कि आपका डेटा संरचित और विश्वसनीय बना हुआ है।
यह रहा कोलैब नोटबुक। इसके अलावा, हमें फॉलो करना न भूलें ट्विटर और हमारे साथ जुड़ें तार -चैनल और लिंक्डइन जीआरओयूपी। हमारे साथ जुड़ने के लिए मत भूलना 90K+ एमएल सबरेडिट।
🔥 ।

Asif Razzaq MarkTechPost Media Inc के सीईओ हैं .. एक दूरदर्शी उद्यमी और इंजीनियर के रूप में, ASIF सामाजिक अच्छे के लिए कृत्रिम बुद्धिमत्ता की क्षमता का उपयोग करने के लिए प्रतिबद्ध है। उनका सबसे हालिया प्रयास एक आर्टिफिशियल इंटेलिजेंस मीडिया प्लेटफॉर्म, मार्कटेकपोस्ट का शुभारंभ है, जो मशीन लर्निंग और डीप लर्निंग न्यूज के अपने गहन कवरेज के लिए खड़ा है, जो तकनीकी रूप से ध्वनि और आसानी से एक व्यापक दर्शकों द्वारा समझ में आता है। मंच 2 मिलियन से अधिक मासिक विचारों का दावा करता है, दर्शकों के बीच अपनी लोकप्रियता को दर्शाता है।
