Sdílet prostřednictvím


Agenti AI ve službě Azure Database for PostgreSQL

Agenti umělé inteligence transformují způsob interakce aplikací s daty kombinací velkých jazykových modelů (LLM) s externími nástroji a databázemi. Agenti umožňují automatizaci složitých pracovních postupů, zlepšují přesnost načítání informací a usnadňují rozhraní přirozeného jazyka pro databáze.

Tento článek popisuje, jak vytvořit inteligentní agenty AI, kteří můžou prohledávat a analyzovat vaše data ve službě Azure Database for PostgreSQL. Jako příklad vás provede nastavením, implementací a testováním pomocí právního výzkumného asistenta.

Co jsou agenti AI?

Agenti umělé inteligence překračují rámec jednoduchých chatovacích robotů tím, že kombinují LLM s externími nástroji a databázemi. Na rozdíl od samostatných modelů LLM nebo standardních systémů generace augmentované vyhledáváním (RAG) mohou agenti umělé inteligence:

  • Plán: Rozdělte složité úkoly do menších sekvenčních kroků.
  • Použití nástrojů: Ke shromažďování informací nebo provádění akcí použijte rozhraní API, spouštění kódu a vyhledávací systémy.
  • Vnímání: Pochopení a zpracování vstupů z různých zdrojů dat.
  • Mějte na paměti: Ukládání a odvolávání předchozích interakcí pro lepší rozhodování.

Připojením agentů AI k databázím, jako je Azure Database for PostgreSQL, můžou agenti na základě vašich dat poskytovat přesnější odpovědi s podporou kontextu. Agenti umělé inteligence překračují rámec základní lidské konverzace a provádějí úkoly na základě přirozeného jazyka. Tyto úlohy tradičně vyžadovaly kódovanou logiku. Agenti ale můžou plánovat úlohy potřebné ke spuštění na základě kontextu poskytnutého uživatelem.

Implementace agentů AI

Implementace agentů AI se službou Azure Database for PostgreSQL zahrnuje integraci pokročilých funkcí umělé inteligence s robustními databázovými funkcemi pro vytváření inteligentních systémů s podporou kontextu. Pomocí nástrojů, jako je vektorové vyhledávání, vkládání a služba agentů Azure AI Foundry, můžou vývojáři vytvářet agenty, kteří rozumí dotazům v přirozeném jazyce, načítají relevantní data a poskytují užitečné přehledy.

Následující části popisují podrobný postup nastavení, konfigurace a nasazení agentů AI. Tento proces umožňuje bezproblémovou interakci mezi modely AI a databází PostgreSQL.

Rámce

Různé architektury a nástroje můžou usnadnit vývoj a nasazení agentů AI. Všechny tyto architektury podporují použití Azure Database for PostgreSQL jako nástroje:

Příklad implementace

Příklad tohoto článku používá službu agenta Azure AI Foundry k plánování agentů , využití nástrojů a vnímání. Používá Azure Database for PostgreSQL jako nástroj pro možnosti vektorové databáze a sémantického vyhledávání.

Následující části vás provedou vytvořením agenta AI, který pomáhá právním týmům zkoumat relevantní případy podpory jejich klientů ve státě Washington. Agent:

  1. Přijímá dotazy v přirozeném jazyce týkající se právních situací.
  2. Používá vektorové vyhledávání ve službě Azure Database for PostgreSQL k vyhledání relevantních předchůdců případu.
  3. Analyzuje a shrnuje závěry ve užitečném formátu pro právní profesionály.

Požadavky

  1. Povolte a nakonfigurujteazure_ai rozšíření pg_vector .

  2. Vytvořte projekt Azure AI Foundry.

  3. Nasazení modelůgpt-4o-mini a text-embedding-small.

  4. Nainstalujte Visual Studio Code.

  5. Nainstalujte rozšíření Pythonu .

  6. Nainstalujte Python 3.11.x.

  7. Nainstalujte Azure CLI (nejnovější verze).

    Poznámka:

    Klíč a koncový bod potřebujete z nasazených modelů, které jste vytvořili pro agenta.

Začínáme

V tomto úložišti GitHubu jsou k dispozici všechny kódy a ukázkové datové sady.

Krok 1: Nastavení vektorové vyhledávání ve službě Azure Database for PostgreSQL

Nejprve připravte databázi na ukládání a vyhledávání dat právních případů pomocí vektorových vkládání.

Nastavení prostředí

Pokud používáte macOS a Bash, spusťte tyto příkazy:

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

Pokud používáte Windows a PowerShell, spusťte tyto příkazy:

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

Pokud používáte Windows a cmd.exe, spusťte tyto příkazy:

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

Konfigurace proměnných prostředí

Vytvořte .env soubor s přihlašovacími údaji:

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

Načtení dokumentů a vektorů

Soubor Pythonu load_data/main.py slouží jako centrální vstupní bod pro načítání dat do Služby Azure Database for PostgreSQL. Kód zpracovává data pro ukázkové případy, včetně informací o případech ve Washingtonu.

Soubor main.py:

  1. Vytvoří potřebná rozšíření, nastaví nastavení rozhraní API OpenAI a spravuje databázové tabulky tím, že odstraní stávající tabulky a vytvoří nové pro ukládání dat případů.
  2. Načte data ze souboru CSV a vloží je do dočasné tabulky a pak je zpracuje a přenese do hlavní tabulky případu.
  3. Přidá nový sloupec pro vkládání v tabulce případu a vygeneruje vkládání pro případová stanoviska pomocí rozhraní API OpenAI. Uloží vložené hodnoty do nového sloupce. Proces vkládání trvá asi 3 až 5 minut.

Proces načítání dat spustíte spuštěním následujícího příkazu z load_data adresáře:

python main.py

Tady je výstup 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!

Krok 2: Vytvoření nástroje Postgres pro agenta

Dále nakonfigurujte nástroje agenta AI pro načtení dat z Postgres. Pak pomocí sady SDK služby agenta Azure AI Foundry připojte agenta AI k databázi Postgres.

Definování funkce pro volání agenta

Začněte definováním funkce, kterou má agent volat popisem jeho struktury a všech požadovaných parametrů v docstringu. Zahrňte všechny definice funkcí do jednoho souboru legal_agent_tools.py. Soubor pak můžete importovat do hlavního skriptu.

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

Krok 3: Vytvoření a konfigurace agenta AI pomocí Postgres

Teď nastavte agenta AI a integrujte ho s nástrojem Postgres. Soubor Pythonu src/simple_postgres_and_ai_agent.py slouží jako centrální vstupní bod pro vytváření a používání agenta.

Soubor simple_postgres_and_ai_agent.py:

  1. Inicializuje agenta v projektu Azure AI Foundry pomocí konkrétního modelu.
  2. Přidá nástroj Postgres pro vektorové vyhledávání v databázi během inicializace agenta.
  3. Nastaví komunikační vlákno. Toto vlákno slouží k odesílání zpráv agentům ke zpracování.
  4. Zpracovává dotaz uživatele pomocí agenta a nástrojů. Agent může plánovat pomocí nástrojů, aby získal správnou odpověď. V tomto případě agent zavolá nástroj Postgres na základě podpisu funkce a popisu funkce, aby provedl vyhledávání ve vektorovém prostoru a načetl relevantní data pro odpověď na otázku.
  5. Zobrazí odpověď agenta na dotaz uživatele.

Vyhledání připojovacího řetězce projektu v Azure AI Foundry

V projektu Azure AI Foundry najdete připojovací řetězec projektu na stránce s přehledem projektu. Tento řetězec použijete k připojení projektu k sadě SDK služby agenta Azure AI Foundry. Přidejte tento řetězec do .env souboru.

Snímek obrazovky znázorňující stránku nastavení projektu

Nastavení připojení

Do souboru v .env kořenovém adresáři přidejte tyto proměnné:

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
)

Vytvoření komunikačního vlákna

Tento fragment kódu ukazuje, jak vytvořit vlákno a zprávu agenta, které agent zpracovává při spuštění:

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

Zpracování požadavku

Následující fragment kódu vytvoří úlohu pro agenta, aby zpracoval zprávu a pomocí příslušných nástrojů zajistil nejlepší výsledek.

Pomocí nástrojů může agent dotázat Postgres a provést vektorové vyhledávání dotazu "Voda unikající do bytu z podlahy výše", aby načetl potřebná data pro co nejlepší odpověď na otázku.

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

Spusťte agenta

Pokud chcete spustit agenta, spusťte z src adresáře následující příkaz:

python simple_postgres_and_ai_agent.py

Agent vytvoří podobný výsledek pomocí nástroje Azure Database for PostgreSQL pro přístup k datům případu uloženým v databázi Postgres.

Tady je ukázka výstupu od agenta:

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.

Krok 4: Testování a ladění pomocí testovacího prostředí agenta

Po spuštění agenta pomocí sady SDK služby agenta Azure AI Foundry se agent uloží do vašeho projektu. S agentem můžete experimentovat v testovacím prostředí agenta.

  1. V Azure AI Foundry přejděte do části Agenti .

  2. Najděte agenta v seznamu a vyberte ho, abyste ho otevřeli.

  3. Pomocí rozhraní dětského hřiště otestujte různé právní dotazy.

    Snímek obrazovky znázorňující výběry pro vyhledání experimentálního prostředí agenta.

  4. Otestujte dotaz: "Voda prosakuje do bytu z podlahy nad námi, jaké jsou významné právní precedenty ve Washingtonu?" Agent vybere správný nástroj a požádá o očekávaný výstup pro tento dotaz. Jako ukázkový výstup použijte sample_vector_search_cases_output.json .

    Snímek obrazovky ukazující výsledky dotazu v testovacím prostředí agenta.

Krok 5: Ladění s využitím trasování Azure AI Foundry

Při vývoji agenta pomocí sady SDK služby agenta Azure AI Foundry můžete agenta ladit pomocí trasování. Trasování umožňuje ladit volání nástrojů, jako je Postgres, a zjistit, jak agent orchestruje jednotlivé úlohy.

  1. V Azure AI Foundry přejděte na Trasování.

  2. Pokud chcete vytvořit nový prostředek Application Insights, vyberte Vytvořit nový. Pokud chcete připojit existující prostředek, vyberte ho v poli Název prostředku Application Insights a pak vyberte Připojit.

    Snímek obrazovky znázorňující oblast pro výběr prostředku Application Insights a aktivaci trasování

  3. Prohlédněte si podrobné sledování operací agenta.

    Snímek obrazovky s výsledkem trasování v AI Foundry

Přečtěte si další informace o tom, jak nastavit trasování pomocí agenta AI a Postgres v souboru advanced_postgres_and_ai_agent_with_tracing.py na GitHubu.