AI & AUTOMATION

OASIS: mô phỏng tương tác xã hội với một triệu agent ai từ camel-ai

Tóm tắt nhanh

  • OASIS hỗ trợ mô phỏng lên đến một triệu agent AI trên nền tảng giống Twitter và Reddit, tái tạo hành vi tập thể thực tế.
  • Kiến trúc dựa trên graph agent, hệ thống khuyến nghị và LLM cho phép tương tác động với 23 loại hành động.
  • Cài đặt chỉ qua lệnh pip, không cần phần cứng đặc biệt cho quy mô nhỏ, dễ mở rộng nghiên cứu hiện tượng xã hội.
  • Dữ liệu simulation được lưu trong SQLite, hỗ trợ phân tích trực quan và đánh giá lan truyền thông tin, phân cực nhóm.
  • Dự án mã nguồn mở từ CAMEL-AI cung cấp nền tảng lý thuyết và thực thi cho multi-agent simulation quy mô lớn.

OASIS, viết tắt của Open Agent Social Interaction Simulations, là dự án đột phá từ CAMEL-AI nhằm mô phỏng tương tác xã hội của các tác nhân AI. Khung này cho phép nghiên cứu hành vi tập thể ở quy mô chưa từng có, lên đến một triệu agent, trên các nền tảng giống mạng xã hội thực tế như Twitter (nay là X) và Reddit.

Multi-agent simulation ở đây không chỉ dừng ở vài trăm agent như các hệ thống trước đây mà mở rộng sang hàng triệu thực thể, giúp khám phá các hiện tượng phức tạp như lan truyền thông tin, phân cực nhóm và hiệu ứng bầy đàn. OASIS sử dụng large language model (LLM) để mỗi agent hành động như người dùng thật, dựa trên persona được sinh tự động từ dữ liệu nhân khẩu học.

Dự án kế thừa nền tảng từ CAMEL framework, tập trung vào quy luật mở rộng của agent. Các nhà nghiên cứu xã hội học số có thể sử dụng OASIS để kiểm chứng giả thuyết mà không cần dữ liệu thực tế nhạy cảm, trong khi kỹ sư AI tận dụng để thử nghiệm hệ thống multi-agent ở quy mô sản xuất.

Kiến trúc hệ thống và khả năng mở rộng

Module agent

Mỗi agent trong OASIS được xây dựng quanh LLM, bao gồm hai thành phần chính: bộ nhớ và module hành động. Bộ nhớ lưu trữ bài viết, hành động trước đó và chuỗi suy nghĩ (chain-of-thought), giúp agent duy trì ngữ cảnh liên tục. Module hành động hỗ trợ tạo hành vi tự nhiên qua prompt vai trò và suy nghĩ từng bước.

Agent được sinh từ file profile JSON, kết hợp dữ liệu thực tế và LLM để tạo tên, bio, sở thích. Điều này đảm bảo đa dạng nhân khẩu học, tránh thiên kiến.

Môi trường và cơ sở dữ liệu

Môi trường là hệ thống động với mạng xã hội và nội dung bài viết được cập nhật thời gian thực. Toàn bộ trạng thái được lưu trong cơ sở dữ liệu SQLite, bao gồm bảng người dùng, bài viết, bình luận và quan hệ theo dõi. Mỗi bước simulation (thường tương đương 3 phút thời gian thực) sẽ cập nhật database, hỗ trợ truy vấn nhanh.

Giao diện tuân theo chuẩn PettingZoo, cho phép thực thi không đồng bộ qua asyncio, rất phù hợp với quy mô lớn.

Hệ thống khuyến nghị

OASIS tích hợp hai thuật toán khuyến nghị chính: dựa trên sở thích (interest-based) sử dụng embedding từ OpenAI hoặc TwHIN-BERT, và dựa trên điểm nóng (hot-score) tính theo lượt tương tác và thời gian. Trên Reddit, hot-score sử dụng công thức log upvotes điều chỉnh theo thời gian; trên X, kết hợp nội dung từ follower và ngoài mạng.

Hệ thống này kiểm soát nội dung hiển thị cho từng agent, tạo ra tương tác thực tế và giúp hiện tượng xã hội nổi lên một cách tự nhiên.

Khả năng mở rộng đến một triệu agent

Khả năng xử lý một triệu agent đến từ thiết kế phân tán không đồng bộ: hàng đợi tin nhắn, quản lý GPU song song và inference hiệu quả (sử dụng vLLM). Với 27 GPU A100, mỗi bước simulation mất khoảng 18 giờ cho quy mô tối đa, tạo ra hàng chục nghìn bài viết và bình luận mới.

Mạng agent được xây dựng theo mô hình scale-free (Barabási-Albert), kết hợp dữ liệu thực và xác suất theo sở thích, đảm bảo tính thực tế mà không gây quá tải bộ nhớ. Điều này vượt trội so với các mô phỏng trước chỉ dừng ở vài nghìn agent.

Hướng dẫn cài đặt chi tiết

Dependencies

OASIS yêu cầu Python 3 và thư viện camel-oasis. Các gói phụ thuộc bao gồm camel-ai (phiên bản mới nhất), OpenAI SDK và các công cụ asyncio. Không cần GPU cho simulation nhỏ, nhưng khuyến nghị cho quy mô lớn.

Clone

Để có đầy đủ ví dụ và dữ liệu mẫu, thực hiện clone repository:

git clone https://github.com/camel-ai/oasis.git
cd oasis


Sau đó cài đặt package qua pip để sử dụng trực tiếp.

Environment

Tạo thư mục ./data/reddit và tải file user_data_36.json từ repository. Thiết lập biến môi trường OpenAI API key:

export OPENAI_API_KEY=your_key_here


Xóa database cũ trước mỗi lần chạy mới để tránh xung đột:

if os.path.exists("./data/reddit_simulation.db"):
    os.remove("./data/reddit_simulation.db")

Cách khởi tạo một mô phỏng xã hội đầu tiên

Sau khi cài đặt, tạo file Python với mã sau để khởi chạy simulation Reddit mẫu:

import asyncio
import os

from camel.models import ModelFactory
from camel.types import ModelPlatformType, ModelType

import oasis
from oasis import (ActionType, LLMAction, ManualAction,
                   generate_reddit_agent_graph)


async def main():
    openai_model = ModelFactory.create(
        model_platform=ModelPlatformType.OPENAI,
        model_type=ModelType.GPT_4O_MINI,
    )

    available_actions = [
        ActionType.LIKE_POST,
        ActionType.DISLIKE_POST,
        ActionType.CREATE_POST,
        ActionType.CREATE_COMMENT,
        ActionType.LIKE_COMMENT,
        ActionType.DISLIKE_COMMENT,
        ActionType.SEARCH_POSTS,
        ActionType.SEARCH_USER,
        ActionType.TREND,
        ActionType.REFRESH,
        ActionType.DO_NOTHING,
        ActionType.FOLLOW,
        ActionType.MUTE,
    ]

    agent_graph = await generate_reddit_agent_graph(
        profile_path="./data/reddit/user_data_36.json",
        model=openai_model,
        available_actions=available_actions,
    )

    db_path = "./data/reddit_simulation.db"
    if os.path.exists(db_path):
        os.remove(db_path)

    env = oasis.make(
        agent_graph=agent_graph,
        platform=oasis.DefaultPlatformType.REDDIT,
        database_path=db_path,
    )

    await env.reset()

    # Thực hiện hành động thủ công
    actions_1 = {}
    actions_1[env.agent_graph.get_agent(0)] = [
        ManualAction(action_type=ActionType.CREATE_POST,
                     action_args={"content": "Hello, world!"}),
        ManualAction(action_type=ActionType.CREATE_COMMENT,
                     action_args={
                         "post_id": "1",
                         "content": "Welcome to the OASIS World!"
                     })
    ]
    actions_1[env.agent_graph.get_agent(1)] = ManualAction(
        action_type=ActionType.CREATE_COMMENT,
        action_args={
            "post_id": "1",
            "content": "I like the OASIS world."
        })
    await env.step(actions_1)

    # Chuyển sang hành động LLM tự động
    actions_2 = {
        agent: LLMAction()
        for _, agent in env.agent_graph.get_agents()
    }
    await env.step(actions_2)

    await env.close()


if __name__ == "__main__":
    asyncio.run(main())

Chạy lệnh python script.py. Mô phỏng sẽ tạo bài viết, bình luận và lưu vào database. Bạn có thể mở rộng bằng cách tăng số agent hoặc thay đổi platform.

Phân tích dữ liệu từ các agent

Sau simulation, dữ liệu nằm trong file reddit_simulation.db. Sử dụng công cụ SQLite hoặc pandas để truy vấn: số lượng bài viết, lượt tương tác, mạng theo dõi.

Tham khảo tutorial user_generation_visualization.md trong thư mục examples để vẽ đồ thị agent, phân tích độ lan truyền và trực quan hóa phân cực. Kết quả có thể dùng để đo lường hiện tượng xã hội với metric như normalized RMSE cho lan truyền thông tin hoặc điểm cực đoan ý kiến.

OASIS không chỉ cung cấp dữ liệu thô mà còn hỗ trợ đánh giá quy mô lớn, giúp kỹ sư AI tinh chỉnh mô hình và nhà xã hội học số kiểm chứng lý thuyết thực nghiệm.

Với OASIS, cộng đồng nghiên cứu có công cụ mạnh mẽ để khám phá xã hội kỹ thuật số ở quy mô thực tế. Dự án mã nguồn mở Apache 2.0 khuyến khích đóng góp, từ việc thêm platform mới đến tối ưu inference. Bắt đầu ngay hôm nay để xây dựng simulation multi-agent của riêng bạn và góp phần vào hiểu biết sâu sắc hơn về hành vi tập thể AI.

Duy Nghiện
Hãy làm khán giả, đừng làm nhân vật chính :)

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận