การออกแบบระบบซอฟต์แวร์ที่ขับเคลื่อนด้วย AI ที่ปรับขนาดได้และมีจริยธรรมด้วยสถาปัตยกรรมเวิร์กโฟลว์แบบแยกส่วนและตัวแทน AI | B4N1

การออกแบบระบบซอฟต์แวร์ที่ขับเคลื่อนด้วย AI ที่ปรับขนาดได้และมีจริยธรรมด้วยสถาปัตยกรรมเวิร์กโฟลว์แบบแยกส่วนและตัวแทน AI

3 months ago · b4n1 Read time: 2 min

บทนำ

ความก้าวหน้าอย่างรวดเร็วในด้านปัญญาประดิษฐ์ (AI) และวิศวกรรมซอฟต์แวร์ได้นำไปสู่การพัฒนาระบบซอฟต์แวร์ที่ซับซ้อนซึ่งรวมเอเจนต์ AI และสถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์ ระบบเหล่านี้มีศักยภาพที่จะปฏิวัติวิธีที่เราเข้าใกล้ระบบอัตโนมัติและการจัดการ DevOps อย่างไรก็ตาม การออกแบบระบบซอฟต์แวร์ที่ขับเคลื่อนด้วย AI ที่สามารถปรับขนาดได้และมีจริยธรรม จำเป็นต้องมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับความก้าวหน้าล่าสุดใน AI วิศวกรรมซอฟต์แวร์ และสถาปัตยกรรม

ในบทความนี้ เราจะสำรวจหลักการออกแบบและแนวปฏิบัติที่ดีที่สุดสำหรับการสร้างระบบซอฟต์แวร์แบบโมดูลาร์ ปรับขนาดได้ และมีจริยธรรมที่รวมเอเจนต์ AI และสถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์ เราจะมุ่งเน้นไปที่การผสมผสานความก้าวหน้าล่าสุดใน AI (โมเดลภาษาขนาดใหญ่ (LLM), การดึงข้อมูล-Augmented Generation (RAG)), วิศวกรรมซอฟต์แวร์ (Python, Rust, Go) และสถาปัตยกรรมเพื่อสร้างระบบที่แข็งแกร่งและบำรุงรักษาได้

สถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์

สถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์เป็นรูปแบบการออกแบบที่แบ่งระบบที่ซับซ้อนออกเป็นโมดูลที่เล็กลงและเป็นอิสระ ซึ่งสามารถบำรุงรักษา อัปเดต และปรับขนาดได้อย่างง่ายดาย แต่ละโมดูลมีหน้าที่รับผิดชอบงานหรือฟังก์ชันเฉพาะ และสื่อสารระหว่างกันผ่านอินเทอร์เฟซที่กำหนดไว้อย่างดี

นี่คือตัวอย่างง่ายๆ ของสถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์ใน Python:

#เวิร์กโฟลว์.py
เวิร์กโฟลว์ของชั้นเรียน:
    def __init__(ตนเอง):
        ตนเองโมดูล = []

    def add_module (ตัวเอง, โมดูล):
        self.modules.append (โมดูล)

    วิ่งแน่นอน (ตัวเอง):
        สำหรับโมดูลใน self.modules:
            โมดูล.รัน()

# module1.py
คลาสโมดูล 1:
    วิ่งแน่นอน (ตัวเอง):
        print("โมดูล 1 กำลังทำงาน")

# module2.py
คลาสโมดูล 2:
    วิ่งแน่นอน (ตัวเอง):
        print("โมดูล 2 กำลังทำงานอยู่")

# main.py
ถ้า __name__ == "__main__":
    เวิร์กโฟลว์ = เวิร์กโฟลว์()
    เวิร์กโฟลว์ add_module (โมดูล 1 ())
    เวิร์กโฟลว์ add_module (โมดูล 2 ())
    เวิร์กโฟลว์.รัน()

ในตัวอย่างนี้ เรามีคลาส "เวิร์กโฟลว์" ที่จัดการรายการโมดูล แต่ละโมดูลมีหน้าที่รับผิดชอบงานเฉพาะ และจะถูกเพิ่มเข้าไปในเวิร์กโฟลว์โดยใช้เมธอด add_module วิธีการ run ใช้เพื่อดำเนินการแต่ละโมดูลในเวิร์กโฟลว์

ตัวแทนเอไอ

เจ้าหน้าที่ AI คือส่วนประกอบซอฟต์แวร์ที่ใช้อัลกอริธึมการเรียนรู้ของเครื่องเพื่อตัดสินใจและดำเนินการในระบบ สามารถใช้เพื่อทำให้งานอัตโนมัติ ปรับปรุงประสบการณ์ผู้ใช้ และเพิ่มประสิทธิภาพของระบบ

ตัวแทน AI มีหลายประเภท ได้แก่:

  • ตัวแทนตามกฎ: เจ้าหน้าที่เหล่านี้ใช้กฎที่กำหนดไว้ล่วงหน้าในการตัดสินใจ
  • ตัวแทนการเรียนรู้ของเครื่อง: เจ้าหน้าที่เหล่านี้ใช้อัลกอริธึมการเรียนรู้ของเครื่องเพื่อเรียนรู้จากข้อมูลและตัดสินใจ
  • เอเจนต์ไฮบริด: เอเจนต์เหล่านี้ผสมผสานแนวทางตามกฎและแมชชีนเลิร์นนิงเพื่อการตัดสินใจ

นี่คือตัวอย่างของเอเจนต์ AI อย่างง่ายใน Python ที่ใช้อัลกอริธึมการเรียนรู้ของเครื่อง:

#ตัวแทน.py
จาก sklearn.ensemble นำเข้า RandomForestClassifier
จาก sklearn.model_selection นำเข้า train_test_split
จาก sklearn.datasets นำเข้า load_iris

ตัวแทนคลาส:
    def __init__(ตนเอง):
        self.model = RandomForestClassifier()

    รถไฟ def (ตัวเอง, X, y):
        X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, สุ่ม_state=42)
        self.model.fit(X_train, y_train)

    ทำนายแน่นอน (ตัวเอง, X):
        กลับ self.model.predict (X)

# main.py
ถ้า __name__ == "__main__":
    ม่านตา = load_iris()
    X = ม่านตา.data
    y = iris.target
    ตัวแทน = ตัวแทน()
    ตัวแทน.train(X, y)
    การทำนาย = agent.predict(X)
    พิมพ์ (การคาดการณ์)

ในตัวอย่างนี้ เรามีเอเจนต์ AI แบบธรรมดาที่ใช้ตัวแยกประเภทฟอเรสต์แบบสุ่มเพื่อทำการคาดการณ์ เอเจนต์ได้รับการฝึกอบรมเกี่ยวกับชุดข้อมูลม่านตาและทำการคาดการณ์บนชุดข้อมูลเดียวกัน

การรวมตัวแทน AI และสถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์

การรวมเอเจนต์ AI และสถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์ทำให้เราสามารถสร้างระบบที่ซับซ้อนซึ่งรวมการตัดสินใจที่ขับเคลื่อนด้วย AI เข้ากับสถาปัตยกรรมแบบโมดูลาร์ที่ปรับขนาดได้

นี่คือตัวอย่างของระบบที่รวมเอเจนต์ AI และสถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์:

#เวิร์กโฟลว์.py
เวิร์กโฟลว์ของชั้นเรียน:
    def __init__(ตนเอง):
        ตนเองโมดูล = []
        self.agent = ไม่มี

    def add_module (ตัวเอง, โมดูล):
        self.modules.append (โมดูล)

    def add_agent (ตนเอง ตัวแทน):
        self.agent = ตัวแทน

    วิ่งแน่นอน (ตัวเอง):
        สำหรับโมดูลใน self.modules:
            โมดูล.รัน()
        ถ้า self.agent:
            self.agent.ทำนาย ()

# module1.py
คลาสโมดูล 1:
    วิ่งแน่นอน (ตัวเอง):
        print("โมดูล 1 กำลังทำงานอยู่")

# module2.py
คลาสโมดูล 2:
    วิ่งแน่นอน (ตัวเอง):
        print("โมดูล 2 กำลังทำงานอยู่")

#ตัวแทน.py
จาก sklearn.ensemble นำเข้า RandomForestClassifier
จาก sklearn.model_selection นำเข้า train_test_split
จาก sklearn.datasets นำเข้า load_iris

ตัวแทนคลาส:
    def __init__(ตนเอง):
        self.model = RandomForestClassifier()

รถไฟ def (ตัวเอง, X, y):
        X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, สุ่ม_state=42)
        self.model.fit(X_train, y_train)

    ทำนายแน่นอน (ตัวเอง, X):
        กลับ self.model.predict (X)

# main.py
ถ้า __name__ == "__main__":
    เวิร์กโฟลว์ = เวิร์กโฟลว์()
    เวิร์กโฟลว์ add_module (โมดูล 1 ())
    เวิร์กโฟลว์ add_module (โมดูล 2 ())
    ตัวแทน = ตัวแทน()
    ตัวแทน.train(X, y)
    workflow.add_agent (ตัวแทน)
    เวิร์กโฟลว์.รัน()

ในตัวอย่างนี้ เรามีระบบที่รวมเอเจนต์ AI และสถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์ ระบบมีสองโมดูลและเอเจนต์ AI ที่ใช้ตัวแยกประเภทฟอเรสต์แบบสุ่มเพื่อทำการคาดการณ์ เอเจนต์ถูกเพิ่มลงในเวิร์กโฟลว์โดยใช้เมธอด add_agent และทำการคาดการณ์หลังจากที่โมดูลทำงานแล้ว

คำสั่ง/ตัวอย่างที่ใช้มากที่สุด 5-10 อันดับแรก

ต่อไปนี้เป็นคำสั่งและตัวอย่างที่ใช้บ่อยที่สุดสำหรับการออกแบบระบบซอฟต์แวร์ที่ขับเคลื่อนด้วย AI ที่ปรับขนาดได้และมีจริยธรรม พร้อมด้วยสถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์และเอเจนต์ AI:

  1. Python: นำเข้าแพนด้าเป็น pd (นำเข้าไลบรารีแพนด้า)
  2. Python: pd.read_csv('data.csv') (อ่านไฟล์ CSV ลงใน dataframe ของ pandas)
  3. Python: agent.train(X, y) (ฝึกอบรมตัวแทน AI บนชุดข้อมูล)
  4. Python: agent.predict(X) (ทำการคาดการณ์โดยใช้เอเจนต์ AI)
  5. สนิม: let mut agent = Agent::new() (สร้าง AI agent ใหม่ใน Rust)
  6. สนิม: agent.train(X, y) (ฝึกอบรมตัวแทน AI บนชุดข้อมูลใน Rust)
  7. ไป: ตัวแทน := NewAgent() (สร้างตัวแทน AI ใหม่ใน Go)
  8. ไป: agent.Train(X, y) (ฝึกอบรมตัวแทน AI บนชุดข้อมูลใน Go)
  9. Chart.js: const chart = new Chart(ctx, { type: 'bar', data: { label: ['Label 1', 'Label 2'], datasets: [{ label: 'Dataset 1', data: [10, 20] }] } }); (การสร้างแผนภูมิแท่งโดยใช้ Chart.js)
  10. Chart.js: chart.data.datasets[0].data.push(30) (เพิ่มจุดข้อมูลใหม่ลงในแผนภูมิโดยใช้ Chart.js)

การแสดงภาพ

นี่คือตัวอย่างแผนภูมิแท่งโดยใช้ Chart.js:

{
  "type": "บาร์",
  "ข้อมูล": {
    "ป้ายกำกับ": ["ป้ายกำกับ 1", "ป้ายกำกับ 2"],
    "ชุดข้อมูล": [
      {
        "label": "ชุดข้อมูล 1",
        "ข้อมูล": [10, 20]
      }
    ]
  }
}

แผนภูมินี้มีสองป้ายกำกับและชุดข้อมูลหนึ่งชุดที่มีจุดข้อมูลสองจุด แผนภูมิสามารถปรับแต่งได้โดยใช้ตัวเลือกและการตั้งค่าต่างๆ

บทสรุป

การออกแบบระบบซอฟต์แวร์ที่ขับเคลื่อนด้วย AI ที่ปรับขนาดได้และมีจริยธรรมด้วยสถาปัตยกรรมเวิร์กโฟลว์แบบแยกส่วนและตัวแทน AI จำเป็นต้องมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับความก้าวหน้าล่าสุดใน AI วิศวกรรมซอฟต์แวร์ และสถาปัตยกรรม ด้วยการรวมตัวแทน AI และสถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์ เราสามารถสร้างระบบที่ซับซ้อนที่รวมการตัดสินใจที่ขับเคลื่อนด้วย AI เข้ากับสถาปัตยกรรมแบบโมดูลาร์ที่ปรับขนาดได้

ในบทความนี้ เราได้สำรวจหลักการออกแบบและแนวปฏิบัติที่ดีที่สุดสำหรับการสร้างระบบซอฟต์แวร์แบบโมดูลาร์ ปรับขนาดได้ และมีจริยธรรมที่รวมเอเจนต์ AI และสถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์ นอกจากนี้เรายังได้จัดเตรียมตัวอย่างของเอเจนต์ AI แบบง่ายและสถาปัตยกรรมเวิร์กโฟลว์แบบโมดูลาร์ใน Python, Rust และ Go รวมถึงตัวอย่างการแสดงภาพโดยใช้ Chart.js

เมื่อปฏิบัติตามแนวทางและแนวทางปฏิบัติที่ดีที่สุดที่ระบุไว้ในบทความนี้ นักพัฒนาจะสามารถสร้างระบบซอฟต์แวร์ที่ขับเคลื่อนด้วย AI ที่แข็งแกร่งและบำรุงรักษาได้ ซึ่งตอบสนองความต้องการของแอปพลิเคชันและอุตสาหกรรมสมัยใหม่


Have Questions?

Let's Talk

Contact me on LinkedIn