Tạo Ứng Dụng Agent Tự Nghiên Cứu

Hôm nay, chúng ta sẽ xây dựng dự án lớn đầu tiên – một Deep Research Agent.

Đây là một trong những ứng dụng kinh điển của Agentic AI – nơi agent sẽ:

Mục tiêu của dự án

Tạo một AI Agent có khả năng:

Công cụ cần chuẩn bị

Cấu trúc dự án gợi ý

deep_research_agent/
├── .env
├── deep_research.ipynb
└── requirements.txt

1. Cài đặt môi trường

Tạo thư mục và cài thư viện

mkdir deep_research_agent
cd deep_research_agent
python -m venv venv
source venv/bin/activate  # hoặc .\venv\Scripts\activate trên Windows

pip install openai python-dotenv jupyter

Tạo file requirements.txt

openai
python-dotenv
jupyter

2. Tạo file .env

Tạo file .env chứa API key của bạn:

OPENAI_API_KEY=sk-...

3. Tạo Notebook deep_research.ipynb

Bạn có thể tạo một file notebook mới trong VSCode hoặc Jupyter. Dưới đây là nội dung gợi ý từng bước bạn cần triển khai:

4. Nội dung notebook (deep_research.ipynb)

🔹 Bước 1: Khởi tạo môi trường
import os
from dotenv import load_dotenv
import openai

load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")

🔹 Bước 2: Định nghĩa công cụ hosted (web search)

from openai import OpenAI
from openai.types.beta.threads import ToolAssistant
from openai.types.beta.tools import ToolChoice

client = OpenAI()

# Mô tả Search Agent
instructions = """
You are a research assistant.
Given a search term, you search the web for that term.
You produce a concise summary in 2–3 paragraphs, capturing the main points.
Write succinctly. No need for good grammar.
"""

tools = [{"type": "web-search"}]  # Tool được OpenAI host

🔹 Bước 3: Tạo Assistant (Agent)

assistant = client.beta.assistants.create(
    name="Search Agent",
    instructions=instructions,
    tools=tools,
    model="gpt-4-turbo"
)

Bước 4: Tạo Thread, gửi yêu cầu tìm kiếm

thread = client.beta.threads.create()

user_input = "Latest AI agent frameworks in 2025"

# Thêm message
client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content=user_input
)

# Run với yêu cầu bắt buộc dùng web-search
run = client.beta.threads.runs.create(
    thread_id=thread.id,
    assistant_id=assistant.id,
    tool_choice={"type": "required"},
    model="gpt-4-turbo"
)

# Chờ chạy xong
import time
while True:
    run_status = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
    if run_status.status in ["completed", "failed"]:
        break
    time.sleep(1)

# Lấy kết quả
messages = client.beta.threads.messages.list(thread_id=thread.id)
for msg in messages:
    print(f"{msg.role}: {msg.content[0].text.value}")

Lưu ý về chi phí

 


Phiên bản #1
Được tạo 2 tháng 5 2025 05:17:32 bởi Đỗ Ngọc Tú
Được cập nhật 2 tháng 5 2025 05:30:56 bởi Đỗ Ngọc Tú