Aracılığıyla paylaş


PostgreSQL için Azure Veritabanı'nda yapay zeka aracıları

Yapay zeka aracıları, büyük dil modellerini (LLM) dış araçlar ve veritabanlarıyla birleştirerek uygulamaların verilerle etkileşim kurma şeklini dönüştürüyor. Aracılar karmaşık iş akışlarının otomasyonunu sağlar, bilgi alma doğruluğunu artırır ve veritabanlarına doğal dil arabirimlerini kolaylaştırır.

Bu makalede PostgreSQL için Azure Veritabanı'nda verilerinizi arayabilen ve çözümleyebilecek akıllı yapay zeka aracılarının nasıl oluşturulacağı açıklanmaktadır. Örnek olarak bir hukuk araştırma yardımcısı kullanarak kurulum, uygulama ve test adımlarını gösterir.

Yapay zeka aracıları nedir?

Yapay zeka aracıları, LLM'leri dış araçlar ve veritabanlarıyla birleştirerek basit sohbet botlarının ötesine geçer. Tek başına LLM'lerden veya standart alma artırılmış üretim (RAG) sistemlerinden farklı olarak yapay zeka aracıları şunları yapabilir:

  • Plan: Karmaşık görevleri daha küçük, sıralı adımlara ayırın.
  • Araçları kullanma: Bilgi toplamak veya eylem gerçekleştirmek için API'leri, kod yürütmeyi ve arama sistemlerini kullanın.
  • Algıla: Çeşitli veri kaynaklarından gelen girişleri anlayın ve işleyin.
  • Unutmayın: Daha iyi karar alma için önceki etkileşimleri depolayın ve hatırlayın.

Aracılar, yapay zeka aracılarını PostgreSQL için Azure Veritabanı gibi veritabanlarına bağlayarak verilerinize göre daha doğru, bağlama duyarlı yanıtlar sunabilir. Yapay zeka aracıları, doğal dile dayalı görevler gerçekleştirmek için temel insan konuşmalarının ötesine uzanır. Bu görevler geleneksel olarak kodlanmış mantık gerektirir. Ancak aracılar, kullanıcı tarafından sağlanan bağlama göre yürütmek için gereken görevleri planlayabilir.

Yapay zeka aracılarının uygulanması

PostgreSQL için Azure Veritabanı ile yapay zeka aracılarının uygulanması, akıllı, bağlama duyarlı sistemler oluşturmak için gelişmiş yapay zeka özelliklerini güçlü veritabanı işlevleriyle tümleştirmeyi içerir. Geliştiriciler vektör araması, eklemeler ve Azure AI Foundry Agent Service gibi araçları kullanarak doğal dil sorgularını anlayan, ilgili verileri alan ve eyleme dönüştürülebilir içgörüler sağlayan aracılar oluşturabilir.

Aşağıdaki bölümlerde yapay zeka aracılarını ayarlama, yapılandırma ve dağıtmaya yönelik adım adım işlemler özetlenmiştir. Bu işlem yapay zeka modelleri ile PostgreSQL veritabanınız arasında sorunsuz etkileşime olanak tanır.

Çerçeveler

Çeşitli çerçeveler ve araçlar, yapay zeka aracılarının geliştirilmesini ve dağıtımını kolaylaştırabilir. Tüm bu çerçeveler PostgreSQL için Azure Veritabanı'nın araç olarak kullanılmasını destekler:

Uygulama örneği

Bu makalenin örneğinde, aracı planlaması, araç kullanımı ve algı için Azure AI Foundry Agent Service kullanılır. Vektör veritabanı ve anlamsal arama özellikleri için bir araç olarak PostgreSQL için Azure Veritabanı'nı kullanır.

Aşağıdaki bölümlerde, yasal ekiplerin Washington State'teki müşterilerini desteklemek için ilgili vakaları araştırmalarına yardımcı olan bir yapay zeka aracısı oluşturma adımları açıklanmaktadır. Aracı:

  1. Yasal durumlarla ilgili doğal dil sorgularını kabul eder.
  2. PostgreSQL için Azure Veritabanı'nda vektör araması kullanarak ilgili davaya ilişkin emsalleri bulur.
  3. Bulguları hukuk uzmanları için yararlı bir biçimde analiz eder ve özetler.

Önkoşullar

  1. Etkinleştirin ve yapılandırınazure_ai ve pg_vector uzantılarını.

  2. Azure AI Foundry projesi oluşturma.

  3. Modellerigpt-4o-mini dağıtma işlemi ve text-embedding-small.

  4. Visual Studio Code’u yükleyin.

  5. Python uzantısını yükleyin.

  6. Python 3.11.x'i yükleyin.

  7. Azure CLI'yi (en son sürüm) yükleyin.

    Uyarı

    Aracı için oluşturduğunuz dağıtılan modellerden anahtara ve uç noktaya ihtiyacınız vardır.

Başlangıç Yapmak

Tüm kod ve örnek veri kümeleri bu GitHub deposunda kullanılabilir.

1. Adım: PostgreSQL için Azure Veritabanı'nda vektör aramasını ayarlama

İlk olarak, vektör eklemelerini kullanarak veritabanınızı yasal olay verilerini depolamak ve aramak için hazırlayın.

Ortamı ayarlama

macOS ve Bash kullanıyorsanız şu komutları çalıştırın:

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

Windows ve PowerShell kullanıyorsanız şu komutları çalıştırın:

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

Windows ve cmd.exekullanıyorsanız şu komutları çalıştırın:

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

Ortam değişkenlerini yapılandırma

Kimlik bilgilerinizle bir .env dosya oluşturun:

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

Belgeleri ve vektörleri yükleme

Load_data/main.py Python dosyası, PostgreSQL için Azure Veritabanı'na veri yüklemek için merkezi giriş noktası görevi görür. Kod, Washington'daki vakalar hakkındaki bilgiler de dahil olmak üzere örnek vakalar için verileri işler.

main.py dosyası:

  1. Gerekli uzantıları oluşturur, OpenAI API ayarlarını yapılandırır ve mevcut olanları silerek vaka verilerini depolamak için yeni veritabanı tabloları oluşturarak yönetir.
  2. CSV dosyasındaki verileri okur, geçici bir tabloya ekler, ardından işler ve ana vaka tablosuna aktarır.
  3. Servis talebi tablosuna eklemeler için yeni bir sütun ekler ve OpenAI'nin API'sini kullanarak servis talebi görüşleri için eklemeler oluşturur. Eklemeleri yeni sütunda depolar. Ekleme işlemi yaklaşık 3-5 dakika sürer.

Veri yükleme işlemini başlatmak için dizinden load_data aşağıdaki komutu çalıştırın:

python main.py

çıktısı aşağıdadır 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. Adım: Aracı için Postgres aracısını oluşturma

Ardından, Postgres'ten veri almak için yapay zeka aracısı araçlarını yapılandırın. Ardından Azure AI Foundry Aracı Hizmeti SDK'sını kullanarak yapay zeka aracınızı Postgres veritabanına bağlayın.

Aracınızın çağıracak bir işlev tanımlama

Aracınızın çağırdığı bir işlevi tanımlamak için yapısını ve docstring'deki gerekli parametreleri açıklayarak başlayın. Tüm işlev tanımlarınızı tek bir dosyaya legal_agent_tools.py ekleyin. Ardından dosyayı ana betiğinize aktarabilirsiniz.

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. Adım: Postgres ile yapay zeka aracısını oluşturma ve yapılandırma

Şimdi yapay zeka aracısını ayarlayın ve Postgres aracısıyla tümleştirin. Python dosyası src/simple_postgres_and_ai_agent.py , aracınızı oluşturmak ve kullanmak için merkezi giriş noktası görevi görür.

simple_postgres_and_ai_agent.py dosyası:

  1. Azure AI Foundry projenizdeki aracıyı belirli bir modelle başlatır.
  2. Aracı başlatma sırasında veritabanınızda vektör araması için Postgres aracını ekler.
  3. Bir iletişim iş parçacığı kurar. Bu iş parçacığı, işleme için aracıya ileti göndermek için kullanılır.
  4. Aracıyı ve araçları kullanarak kullanıcının sorgusunu işler. Ajan, doğru yanıtı almak için çeşitli araçlarla plan yapabilir. Bu kullanım örneğinde aracı, vektör araması yapmak ve soruyu yanıtlamak için ilgili verileri almak için işlev imzasını ve docstring'i temel alarak Postgres aracını çağırır.
  5. Temsilcinin kullanıcının sorgusuna verdiği cevabı görüntüler.

Azure AI Foundry'de proje bağlantı dizesini bulma

Azure AI Foundry projenizde proje bağlantı dizenizi projenin genel bakış sayfasında bulabilirsiniz. Projeyi Azure AI Foundry Aracı Hizmeti SDK'sına bağlamak için bu dizeyi kullanırsınız. Bu dizeyi dosyaya .env ekleyin.

Proje kurulum sayfasını gösteren ekran görüntüsü.

Bağlantıyı ayarlama

Kök dizindeki dosyanıza .env şu değişkenleri ekleyin:

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
)

İletişim konusu oluştur

Bu kod parçacığı, bir ajan iş parçacığı ve mesajın nasıl oluşturulacağını gösterir; bu mesaj, ajan tarafından bir çalıştırma sırasında işlenir.

# 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?"
)

İsteği işleme

Aşağıdaki kod parçacığı, aracının iletiyi işlemesi için bir çalıştırma oluşturur ve en iyi sonucu sağlamak için uygun araçları kullanır.

Aracı, araçları kullanarak Postgres'i ve "Yukarıdaki kattan daireye su sızdırıyor" sorgusundaki vektör aramasını çağırarak soruyu en iyi şekilde yanıtlaması için gereken verileri alabilir.

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'])

Aracıyı çalıştır

Aracıyı çalıştırmak için dizinden src aşağıdaki komutu çalıştırın:

python simple_postgres_and_ai_agent.py

Aracı, Postgres veritabanına kaydedilen servis talebi verilerine erişmek için PostgreSQL için Azure Veritabanı aracını kullanarak benzer bir sonuç üretir.

Aracıdan alınan bir çıkış parçacığı aşağıdadır:

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. Adım: Aracı oyun alanıyla test ve hata ayıklama

Azure AI Foundry Aracı Hizmeti SDK'sını kullanarak aracınızı çalıştırdıktan sonra aracı projenizde depolanır. Aracı oyun alanında aracıyla denemeler yapabilirsiniz:

  1. Azure AI Foundry'de Aracılar bölümüne gidin.

  2. Ajanınızı listede bulun ve açmak için seçin.

  3. Çeşitli yasal sorguları test etmek için oyun alanı arabirimini kullanın.

    Temsilci oyun alanını bulma seçeneklerini gösteren ekran görüntüsü.

  4. "Yukarıdaki kattan daireye su sızıyor, Washington'daki önemli yasal emsaller nelerdir?" sorgusunu test edin. Aracı kullanılacak doğru aracı seçer ve bu sorgu için beklenen çıkışı ister. Örnek çıktı olarak sample_vector_search_cases_output.json kullanın.

    Agent oyun alanında bir sorgunun sonuçlarını gösteren ekran görüntüsü.

5. Adım: Azure AI Foundry izleme ile hata ayıklama

Azure AI Foundry Aracı Hizmeti SDK'sını kullanarak aracıyı geliştirirken, izleme ile aracıda hata ayıklayabilirsiniz. İzleme, Postgres gibi araçlara yapılan çağrılarda hata ayıklamanıza ve aracının her görevi nasıl düzenleyip düzenlemediğini görmenize olanak tanır.

  1. Azure AI Foundry'de İzleme'ye gidin.

  2. Yeni bir Application Insights kaynağı oluşturmak için Yeni oluştur'u seçin. Mevcut bir kaynağı bağlamak için Application Insights kaynak adı kutusundan bir kaynak seçin ve ardından Bağlan'ı seçin.

    Application Insights kaynağı seçme ve izlemeyi etkinleştirme alanını gösteren ekran görüntüsü.

  3. Ajanınızın işlemlerinin ayrıntılı izlerini görüntüleyin.

    AI Foundry'de izlemenin sonucunu gösteren ekran görüntüsü.

GitHub'daki advanced_postgres_and_ai_agent_with_tracing.py dosyasında yapay zeka aracısı ve Postgres ile izlemeyi ayarlama hakkında daha fazla bilgi edinin.