مشاركة عبر


الذكاء الاصطناعي العوامل في قاعدة بيانات Azure ل PostgreSQL

يقوم وكلاء الذكاء الاصطناعي بتحويل كيفية تفاعل التطبيقات مع البيانات من خلال الجمع بين نماذج اللغات الكبيرة (LLMs) والأدوات الخارجية وقواعد البيانات. يتيح الوكلاء أتمتة مهام سير العمل المعقدة، ويعززون دقة استرداد المعلومات، ويسهلون واجهات اللغة الطبيعية لقواعد البيانات.

تستكشف هذه المقالة كيفية إنشاء وكلاء الذكاء الاصطناعي ذكيين يمكنهم البحث عن بياناتك وتحليلها في قاعدة بيانات Azure ل PostgreSQL. وهو يستعرض الإعداد والتنفيذ والاختبار باستخدام مساعد بحث قانوني كمثال.

ما الذكاء الاصطناعي العملاء؟

الذكاء الاصطناعي الوكلاء يتجاوزون روبوتات الدردشة البسيطة من خلال الجمع بين LLMs والأدوات الخارجية وقواعد البيانات. على عكس LLMs المستقلة أو أنظمة الجيل المعززة باسترداد قياسية (RAG)، يمكن للوكلاء الذكاء الاصطناعي:

  • الخطة: تقسيم المهام المعقدة إلى خطوات أصغر متتالية.
  • استخدام الأدوات: استخدم واجهات برمجة التطبيقات وتنفيذ التعليمات البرمجية وأنظمة البحث لجمع المعلومات أو تنفيذ الإجراءات.
  • إدراك: فهم ومعالجة المدخلات من مصادر بيانات مختلفة.
  • تذكر: تخزين التفاعلات السابقة واستدعائها لاتخاذ قرارات أفضل.

من خلال توصيل وكلاء الذكاء الاصطناعي بقواعد بيانات مثل قاعدة بيانات Azure ل PostgreSQL، يمكن للوكلاء تقديم استجابات أكثر دقة وإدراكا للسياق استنادا إلى بياناتك. يمتد الذكاء الاصطناعي الوكلاء إلى ما هو أبعد من المحادثة البشرية الأساسية لأداء المهام استنادا إلى اللغة الطبيعية. تتطلب هذه المهام عادة منطقا مرمزا. ومع ذلك، يمكن للوكلاء تخطيط المهام اللازمة للتنفيذ استنادا إلى السياق الذي يوفره المستخدم.

تنفيذ وكلاء الذكاء الاصطناعي

يتضمن تنفيذ وكلاء الذكاء الاصطناعي باستخدام قاعدة بيانات Azure ل PostgreSQL دمج قدرات الذكاء الاصطناعي المتقدمة مع وظائف قاعدة بيانات قوية لإنشاء أنظمة ذكية ومدركة للسياق. باستخدام أدوات مثل البحث عن المتجهات والتضمينات وخدمة عامل Azure الذكاء الاصطناعي Foundry، يمكن للمطورين إنشاء عوامل تفهم استعلامات اللغة الطبيعية، واسترداد البيانات ذات الصلة، وتوفير رؤى قابلة للتنفيذ.

توضح الأقسام التالية العملية خطوة بخطوة لإعداد الذكاء الاصطناعي العوامل وتكوينها ونشرها. تتيح هذه العملية التفاعل السلس بين نماذج الذكاء الاصطناعي وقاعدة بيانات PostgreSQL.

أطر العمل

ويمكن لمختلف الأطر والأدوات أن تيسر تطوير ونشر وكلاء الذكاء الاصطناعي. تدعم جميع أطر العمل هذه استخدام قاعدة بيانات Azure ل PostgreSQL كأداة:

مثال التنفيذ

يستخدم مثال هذه المقالة Azure الذكاء الاصطناعي Foundry Agent Service لتخطيط العامل واستخدام الأدوات والإدراك. ويستخدم قاعدة بيانات Azure ل PostgreSQL كأداة لقاعدة بيانات المتجهات وقدرات البحث الدلالي.

ترشدك الأقسام التالية من خلال إنشاء وكيل الذكاء الاصطناعي يساعد الفرق القانونية على البحث في القضايا ذات الصلة لدعم عملائهم في ولاية واشنطن. العامل:

  1. يقبل استعلامات اللغة الطبيعية حول المواقف القانونية.
  2. يستخدم البحث عن المتجهات في قاعدة بيانات Azure ل PostgreSQL للعثور على سوابق الحالة ذات الصلة.
  3. تحليل وتلخيص النتائج في شكل مفيد للمهنيين القانونيين.

المتطلبات الأساسية

  1. تمكين وتكوين الملحقات azure_ai و pg_vector .

  2. إنشاء مشروع Azure الذكاء الاصطناعي Foundry.

  3. توزيع النماذجgpt-4o-mini و text-embedding-small.

  4. ثبّت Visual Studio Code.

  5. تثبيت ملحق Python .

  6. تثبيت Python 3.11.x.

  7. تثبيت Azure CLI (أحدث إصدار).

    إشعار

    تحتاج إلى المفتاح ونقطة النهاية من النماذج المنشورة التي قمت بإنشائها للعامل.

الشروع

تتوفر جميع التعليمات البرمجية ومجموعات البيانات النموذجية في مستودع GitHub هذا.

الخطوة 1: إعداد البحث عن المتجهات في قاعدة بيانات Azure ل PostgreSQL

أولا، قم بإعداد قاعدة البيانات الخاصة بك لتخزين بيانات الحالة القانونية والبحث فيها باستخدام تضمينات المتجهات.

إعداد البيئة

إذا كنت تستخدم macOS وBash، فقم بتشغيل هذه الأوامر:

python -m venv .pg-azure-ai 
source .pg-azure-ai/bin/activate 
pip install -r requirements.txt

إذا كنت تستخدم Windows وPowerShell، فقم بتشغيل هذه الأوامر:

python -m venv .pg-azure-ai 
.pg-azure-ai \Scripts\Activate.ps1 
pip install -r requirements.txt

إذا كنت تستخدم Windows و cmd.exe، فقم بتشغيل هذه الأوامر:

python -m venv .pg-azure-ai 
.pg-azure-ai \Scripts\activate.bat 
pip install -r requirements.txt

تكوين متغيرات البيئة

.env إنشاء ملف باستخدام بيانات الاعتماد الخاصة بك:

AZURE_OPENAI_API_KEY="" 
AZURE_OPENAI_ENDPOINT="" 
EMBEDDING_MODEL_NAME="" 
AZURE_PG_CONNECTION=""

تحميل المستندات والمتجهات

يعمل ملف Python load_data/main.py كنقطة إدخال مركزية لتحميل البيانات في قاعدة بيانات Azure ل PostgreSQL. تعالج التعليمات البرمجية البيانات الخاصة بحالات العينة، بما في ذلك معلومات حول الحالات في واشنطن.

main.py الملف:

  1. إنشاء الملحقات الضرورية، وإعداد إعدادات OpenAI API، وإدارة جداول قاعدة البيانات عن طريق إسقاط الجداول الموجودة وإنشاء ملحقات جديدة لتخزين بيانات الحالة.
  2. يقرأ البيانات من ملف CSV ويدرجها في جدول مؤقت، ثم يعالجها وينقلها إلى جدول الحالة الرئيسي.
  3. يضيف عمودا جديدا للتضمينات في جدول الحالة وينشئ تضمينات لآراء الحالة باستخدام واجهة برمجة تطبيقات OpenAI. يخزن التضمينات في العمود الجديد. تستغرق عملية التضمين حوالي 3 إلى 5 دقائق.

لبدء عملية تحميل البيانات، قم بتشغيل الأمر التالي من load_data الدليل:

python main.py

فيما يلي إخراج main.py:

Extensions created successfully 
OpenAI connection established successfully 
The case table was created successfully 
Temp cases table created successfully 
Data loaded into temp_cases_data table successfully 
Data loaded into cases table successfully.
Adding Embeddings will take a while, around 3-5 mins.
Embeddings added successfully All Data loaded successfully!

الخطوة 2: إنشاء أداة Postgres للعامل

بعد ذلك، قم بتكوين أدوات عامل الذكاء الاصطناعي لاسترداد البيانات من Postgres. ثم استخدم Azure الذكاء الاصطناعي Foundry Agent Service SDK لتوصيل عامل الذكاء الاصطناعي بقاعدة بيانات Postgres.

تعريف دالة لوكيلك للاتصال بها

ابدأ بتعريف دالة لوكيلك لاستدعاء من خلال وصف بنيتها وأي معلمات مطلوبة في docstring. قم بتضمين جميع تعريفات الدالة في ملف واحد، legal_agent_tools.py. يمكنك بعد ذلك استيراد الملف إلى البرنامج النصي الرئيسي.

def vector_search_cases(vector_search_query: str, start_date: datetime ="1911-01-01", end_date: datetime ="2025-12-31", limit: int = 10) -> str:
    """
 Fetches the case information in Washington State for the specified query.

 :param query(str): The query to fetch cases specifically in Washington.
 :type query: str
 :param start_date: The start date for the search defaults to "1911-01-01"
 :type start_date: datetime, optional
 :param end_date: The end date for the search, defaults to "2025-12-31"
 :type end_date: datetime, optional
 :param limit: The maximum number of cases to fetch, defaults to 10
 :type limit: int, optional

 :return: Cases information as a JSON string.
 :rtype: str
 """
        
 db = create_engine(CONN_STR)
    
 query = """
 SELECT id, name, opinion, 
 opinions_vector <=> azure_openai.create_embeddings(
 'text-embedding-3-small', %s)::vector as similarity
 FROM cases
 WHERE decision_date BETWEEN %s AND %s
 ORDER BY similarity
 LIMIT %s;
 """
    
    # Fetch case information from the database
 df = pd.read_sql(query, db, params=(vector_search_query,datetime.strptime(start_date, "%Y-%m-%d"), datetime.strptime(end_date, "%Y-%m-%d"),limit))

 cases_json = json.dumps(df.to_json(orient="records"))
    return cases_json

الخطوة 3: إنشاء وتكوين عامل الذكاء الاصطناعي باستخدام Postgres

الآن، قم بإعداد عامل الذكاء الاصطناعي ودمجه مع أداة Postgres. يعمل ملف Python src/simple_postgres_and_ai_agent.py كنقطة إدخال مركزية لإنشاء وكيلك واستخدامه.

simple_postgres_and_ai_agent.py الملف:

  1. تهيئة العامل في مشروع Azure الذكاء الاصطناعي Foundry بنموذج معين.
  2. يضيف أداة Postgres للبحث عن المتجهات على قاعدة البيانات الخاصة بك، أثناء تهيئة العامل.
  3. إعداد مؤشر ترابط اتصال. يتم استخدام مؤشر الترابط هذا لإرسال رسائل إلى العامل للمعالجة.
  4. يعالج استعلام المستخدم باستخدام العامل والأدوات. يمكن للعامل التخطيط باستخدام أدوات للحصول على الإجابة الصحيحة. في حالة الاستخدام هذه، يستدعي العامل أداة Postgres استنادا إلى توقيع الدالة و docstring لإجراء بحث متجه واسترداد البيانات ذات الصلة للإجابة على السؤال.
  5. يعرض استجابة العامل لاستعلام المستخدم.

البحث عن سلسلة اتصال المشروع في Azure الذكاء الاصطناعي Foundry

في مشروع Azure الذكاء الاصطناعي Foundry، تجد سلسلة اتصال المشروع من صفحة نظرة عامة على المشروع. يمكنك استخدام هذه السلسلة لتوصيل المشروع ب Azure الذكاء الاصطناعي Foundry Agent Service SDK. أضف هذه السلسلة إلى .env الملف.

لقطة شاشة تعرض صفحة إعداد المشروع.

إعداد الاتصال

أضف هذه المتغيرات إلى ملفك .env في الدليل الجذر:

PROJECT_CONNECTION_STRING=" " 
MODEL_DEPLOYMENT_NAME="gpt-4o-mini" 
AZURE_TRACING_GEN_AI_CONTENT_RECORDING_ENABLED="true"
### Create the agent with tool access
We created the agent in the Azure AI Foundry project and added the Postgres tools needed to query the database. The code snippet below is an excerpt from the file [simple_postgres_and_ai_agent.py](https://github.com/Azure-Samples/postgres-agents/blob/main/azure-ai-agent-service/src/simple_postgres_and_ai_agent.py).

# Create an Azure AI Foundry client
project_client = AIProjectClient.from_connection_string(
    credential=DefaultAzureCredential(),
    conn_str=os.environ["PROJECT_CONNECTION_STRING"],
)

# Initialize the agent toolset with user functions
functions = FunctionTool(user_functions)
toolset = ToolSet()
toolset.add(functions)

agent = project_client.agents.create_agent(
    model= os.environ["MODEL_DEPLOYMENT_NAME"], 
    name="legal-cases-agent",
    instructions= "You are a helpful legal assistant who can retrieve information about legal cases.", 
    toolset=toolset
)

إنشاء مؤشر ترابط اتصال

يوضح مقتطف التعليمات البرمجية هذا كيفية إنشاء مؤشر ترابط عامل ورسالة، التي يعالجها العامل في التشغيل:

# Create a thread for communication
thread = project_client.agents.create_thread()

# Create a message to thread
message = project_client.agents.create_message(
    thread_id=thread.id,
    role="user",
    content="Water leaking into the apartment from the floor above. What are the prominent legal precedents in Washington regarding this problem in the last 10 years?"
)

معالجة الطلب

ينشئ مقتطف التعليمات البرمجية التالي تشغيلا للعامل لمعالجة الرسالة واستخدام الأدوات المناسبة لتوفير أفضل نتيجة.

باستخدام الأدوات، يمكن للعامل استدعاء Postgres والبحث المتجه في الاستعلام "تسرب المياه إلى الشقة من الطابق أعلاه" لاسترداد البيانات التي يحتاجها للإجابة على السؤال على أفضل نحو.

from pprint import pprint

# Create and process an agent run in the thread with tools
run = project_client.agents.create_and_process_run(
thread_id=thread.id, 
agent_id=agent.id
)

# Fetch and log all messages
messages = project_client.agents.list_messages(thread_id=thread.id)
pprint(messages['data'][0]['content'][0]['text']['value'])

تشغيل العامل

لتشغيل العامل، قم بتشغيل الأمر التالي من src الدليل:

python simple_postgres_and_ai_agent.py

ينتج العامل نتيجة مماثلة باستخدام أداة Azure Database for PostgreSQL للوصول إلى بيانات حالة الأحرف المحفوظة في قاعدة بيانات Postgres.

فيما يلي مقتطف من الإخراج من العامل:

1.     Pham v. Corbett

Citation: Pham v. Corbett, No. 4237124
Summary: This case involved tenants who counterclaimed against their landlord for relocation assistance and breached the implied warranty of habitability due to severe maintenance issues, including water and sewage leaks. The trial court held that the landlord had breached the implied warranty and awarded damages to the tenants.

2.     Hoover v. Warner

Citation: Hoover v. Warner, No. 6779281
Summary: The Warners appealed a ruling finding them liable for negligence and nuisance after their road grading project caused water drainage issues affecting Hoover's property. The trial court found substantial evidence supporting the claim that the Warners' actions impeded the natural water flow and damaged Hoover's property.

الخطوة 4: اختبار وتصحيح الأخطاء مع ملعب العامل

بعد تشغيل عاملك باستخدام Azure الذكاء الاصطناعي Foundry Agent Service SDK، يتم تخزين العامل في مشروعك. يمكنك تجربة العامل في ملعب العامل:

  1. في Azure الذكاء الاصطناعي Foundry، انتقل إلى قسم Agents .

  2. ابحث عن وكيلك في القائمة وحدده لفتحه.

  3. استخدم واجهة الملعب لاختبار الاستعلامات القانونية المختلفة.

    لقطة شاشة تعرض التحديدات للعثور على ملعب العامل.

  4. اختبر الاستعلام "تسرب المياه إلى الشقة من الطابق أعلاه، ما هي السوابق القانونية البارزة في واشنطن؟" يختار العامل الأداة المناسبة للاستخدام ويطلب الإخراج المتوقع لهذا الاستعلام. استخدم sample_vector_search_cases_output.json كإخراج عينة.

    لقطة شاشة تعرض نتائج استعلام في ملعب العامل.

الخطوة 5: تتبع الأخطاء باستخدام تتبع Azure الذكاء الاصطناعي Foundry

عند تطوير العامل باستخدام Azure الذكاء الاصطناعي Foundry Agent Service SDK، يمكنك تصحيح أخطاء العامل باستخدام التتبع. يسمح لك التتبع بتصحيح المكالمات إلى أدوات مثل Postgres ومعرفة كيفية تنسيق العامل لكل مهمة.

  1. في Azure الذكاء الاصطناعي Foundry، انتقل إلى Tracing.

  2. لإنشاء مورد Application Insights جديد، حدد Create new. لتوصيل مورد موجود، حدد موردا في مربع اسم مورد Application Insights ، ثم حدد اتصال.

    لقطة شاشة تعرض منطقة تحديد مورد Application Insights وتنشيط التتبع.

  3. عرض تتبعات مفصلة لعمليات وكيلك.

    لقطة شاشة توضح نتيجة التتبع في الذكاء الاصطناعي Foundry.

تعرف على المزيد حول كيفية إعداد التتبع باستخدام عامل الذكاء الاصطناعي وPostgres في ملف advanced_postgres_and_ai_agent_with_tracing.py على GitHub.