|
| 1 | +# BabyAGI |
| 2 | + |
| 3 | +# Mục tiêu |
| 4 | + |
| 5 | +Script Python này là một ví dụ về hệ thống quản lý công việc được trí tuệ nhân tạo hỗ trợ. |
| 6 | +Hệ thống sử dụng OpenAI và cơ sở dữ liệu vector như Chroma hoặc Weaviate để tạo, |
| 7 | +ưu tiên và thực hiện các công việc. Ý tưởng chính đằng sau hệ thống này là nó tạo ra các |
| 8 | +đầu việc dựa trên kết quả của các nhiệm vụ trước đó và một mục tiêu đã được xác định trước. |
| 9 | +Sau đó, script sử dụng khả năng xử lý ngôn ngữ tự nhiên (NLP) của OpenAI để tạo ra các công việc |
| 10 | +mới dựa trên mục tiêu, và sử dụng Chroma/Weaviate để lưu trữ và truy xuất |
| 11 | +kết quả công việc trước đó để có bối cảnh (context). Đây là phiên bản rút gọn của |
| 12 | +[Task-Driven Autonomous Agent](https://twitter.com/yoheinakajima/status/1640934493489070080?s=20) |
| 13 | +(28 tháng 3 năm 2023). |
| 14 | + |
| 15 | +Bản README này bao gồm: |
| 16 | +- [Cách script hoạt động](#how-it-works) |
| 17 | +- [Cách sử dụng script](#how-to-use) |
| 18 | +- [Các mô hình được hỗ trợ](#supported-models) |
| 19 | +- [Cảnh báo về việc chạy script liên tục](#continuous-script-warning) |
| 20 | + |
| 21 | + |
| 22 | + |
| 23 | +# Cách script hoạt động<a name="how-it-works"></a> |
| 24 | + |
| 25 | +Script này hoạt động bằng cách chạy một vòng lặp vô hạn và thực hiện các bước sau: |
| 26 | +1. Lấy công việc đầu tiên từ danh sách công việc. |
| 27 | +2. Gửi công việc đến agent thực thi, sử dụng API của OpenAI để hoàn thành công việc dựa trên bối cảnh. |
| 28 | +3. Bổ sung kết quả và lưu trữ nó trong [Chroma](https://docs.trychroma.com)/[Weaviate](https://weaviate.io/). |
| 29 | +4. Tạo công việc mới và sắp xếp lại mức độ ưu tiên của danh sách công việc dựa trên mục tiêu và kết quả của công việc trước đó. |
| 30 | + |
| 31 | + |
| 32 | + </br> |
| 33 | + |
| 34 | + |
| 35 | + |
| 36 | +Hàm `execution_agent()` sử dụng API của OpenAI. Nó nhận hai tham số: mục tiêu và công việc. |
| 37 | +Sau đó, nó gửi một yêu cầu đầu vào (prompt) đến API của OpenAI, và nhận kết quả trả về từ đó. |
| 38 | +Yêu cầu đầu vào (prompt) bao gồm mô tả công việc của hệ thống AI, mục tiêu và yêu cầu công việc. |
| 39 | +Kết quả sau đó được trả về dưới dạng chuỗi. |
| 40 | + |
| 41 | +Hàm `task_creation_agent()` sử dụng API của OpenAI để tạo ra các công việc mới dựa trên mục tiêu |
| 42 | +và kết quả của công việc trước đó. Hàm nhận bốn tham số: mục tiêu, kết quả của công việc trước đó, mô tả công việc, |
| 43 | +và danh sách công việc hiện tại. Sau đó, nó gửi một yêu cầu đầu vào (prompt) đến API của OpenAI, và nhận danh sách |
| 44 | +công việc mới dưới dạng chuỗi. Hàm sau đó trả về các đầu việc mới dưới dạng danh sách các từ điển (dictionaries) chứa tên công việc. |
| 45 | + |
| 46 | +Hàm `prioritization_agent()` sử dụng API của OpenAI để sắp xếp lại danh sách công việc dựa trên mức độ ưu tiên. |
| 47 | +Hàm nhận một tham số: ID của công việc hiện tại. Nó gửi một yêu cầu đầu vào (prompt) đến API của OpenAI, |
| 48 | +và nhận danh sách công việc đã được sắp xếp lại dưới dạng danh sách có số thứ tự. |
| 49 | + |
| 50 | +Cuối cùng, script sử dụng Chroma/Weaviate để lưu trữ và truy xuất kết quả công việc để có bối cảnh. |
| 51 | +Script tạo một bộ sưu tập (collection) Chroma/Weaviate dựa trên tên bảng biểu được chỉ định trong biến TABLE_NAME. |
| 52 | +Chroma/Weaviate sau đó được sử dụng để lưu trữ kết quả của công việc trong bộ sưu tập, |
| 53 | +cùng với tên công việc và bất kỳ siêu dữ liệu (metadata) nào khác. |
| 54 | + |
| 55 | + |
| 56 | +# Cách sử dụng script<a name="how-to-use"></a> |
| 57 | + |
| 58 | +Để sử dụng script, bạn cần thực hiện các bước sau: |
| 59 | +1. Clone repository bằng `git clone https://github.com/yoheinakajima/babyagi.git` và `cd` vào thư mục đã clone. |
| 60 | +2. Cài đặt các package cần thiết bằng lệnh: `pip install -r requirements.txt` |
| 61 | +3. Sao chép file *.env.example* thành *.env* bằng lệnh: `cp .env.example .env`. Đây là nơi bạn sẽ thiết lập các biến sau. |
| 62 | +4. Đặt API key của OpenAI vào biến OPENAI_API_KEY và OPENAI_API_MODEL. Để sử dụng với Weaviate, bạn cũng cần thiết lập thêm các biến bổ sung, chi tiết xem [ở đây](docs/weaviate.md). |
| 63 | +5. Đặt tên bảng biểu (table) mà kết quả công việc sẽ được lưu trữ vào biến TABLE_NAME. |
| 64 | +6. (Tùy chọn) Đặt tên của BabyAGI instance trong biến BABY_NAME. |
| 65 | +7. (Tùy chọn) Đặt mục tiêu của hệ thống quản lý công việc trong biến OBJECTIVE. |
| 66 | +8. (Tùy chọn) Đặt công việc đầu tiên của hệ thống trong biến INITIAL_TASK. |
| 67 | +9. Chạy script: `python babyagi.py` |
| 68 | + |
| 69 | +Tất cả các giá trị tùy chọn ở trên cũng có thể được chỉ định khi chạy lệnh. |
| 70 | + |
| 71 | +# Chạy script trong Docker container |
| 72 | + |
| 73 | +Để chạy hệ thống trong Docker container, bạn cần cài đặt docker và docker-compose. |
| 74 | +Docker desktop là lựa chọn đơn giản nhất https://www.docker.com/products/docker-desktop/ |
| 75 | + |
| 76 | +Để chạy hệ thống trong một Docker container, thiết lập file *.env* như các bước ở trên và chạy lệnh sau: |
| 77 | + |
| 78 | + docker-compose up |
| 79 | + |
| 80 | +# Các mô hình được hỗ trợ<a name="supported-models"></a> |
| 81 | + |
| 82 | +Script này hoạt động được với tất cả các mô hình của OpenAI, cũng như Llama và các biến thể của nó thông qua Llama.cpp. |
| 83 | +Mô hình mặc định là **gpt-3.5-turbo**. Để sử dụng một mô hình khác, chỉ định nó thông qua biến LLM_MODEL hoặc sử dụng giao diện dòng lệnh (command line). |
| 84 | + |
| 85 | + |
| 86 | +## Llama** |
| 87 | + |
| 88 | +Llama yêu cầu cài đặt package llama-cpp. Bạn cũng cần tải về weights của mô hình Llama. |
| 89 | + |
| 90 | +- **Không chia sẻ IPFS, magnet links, hoặc bất kỳ liên kết nào khác đến việc tải xuống mô hình ở bất kỳ nơi nào trong repository này, bao gồm trong issues, thảo luận hoặc pull requests. Chúng sẽ bị xóa ngay lập tức.** |
| 91 | + |
| 92 | +Một khi bạn đã cài đặt và tải về các files cần thiết, đặt LLAMA_MODEL_PATH tới đường dẫn của mô hình cụ thể mà |
| 93 | +bạn muốn sử dụng. Để thuận tiện, bạn có thể liên kết `models` trong BabyAGI repo với thư mục chứa weights của |
| 94 | +mô hình Llama. Sau đó chạy script với `LLM_MODEL=llama` hoặc thêm `-l` argument. |
| 95 | + |
| 96 | +# Cảnh báo về việc chạy script liên tục<a name="continuous-script-warning"></a> |
| 97 | + |
| 98 | +Script này được thiết kế để chạy liên tục như một phần của hệ thống quản lý công việc. |
| 99 | +Chạy script này liên tục có thể dẫn đến số lượng request API gửi đi là rất lớn, vì vậy hãy sử dụng nó một cách có trách nhiệm. |
| 100 | +Ngoài ra, BabyAGI script yêu cầu API của OpenAI được thiết lập đúng cách, vì vậy hãy chắc chắn rằng bạn đã set up API trước khi chạy script. |
| 101 | + |
| 102 | + |
| 103 | +# Đóng góp |
| 104 | + |
| 105 | +Cảm ơn bạn đã quan tâm đến việc đóng góp cho BabyAGI! |
| 106 | +Để giữ cho BabyAGI đơn giản và dễ hiểu, chúng tôi đề xuất bạn tuân thủ các hướng dẫn sau khi gửi PR: |
| 107 | +- Tập trung vào các sửa đổi nhỏ, từng phần hơn là việc tái cấu trúc lớn. |
| 108 | +- Khi giới thiệu các tính năng mới, hãy cung cấp mô tả chi tiết về trường hợp sử dụng cụ thể mà bạn đang giải quyết. |
| 109 | + |
| 110 | +Lời ghi chú từ @yoheinakajima(Mùng 5 tháng 4 năm 2023): |
| 111 | +> Tôi biết có nhiều PR đang chờ xử lý, cảm ơn sự kiên nhẫn của bạn - vì tôi vừa mới bắt đầu với GitHub/OpenSource, |
| 112 | +> và không dự định thời gian của mình một cách hợp lý trong tuần này. Về hướng đi, tôi đang phân vân giữa giữ |
| 113 | +> nó đơn giản và mở rộng - hiện tôi đang hướng về việc giữ một Baby AGI cốt lõi đơn giản, và sử dụng nó như |
| 114 | +> một nền tảng để hỗ trợ và quảng bá các phương pháp khác nhau để mở rộng nó (ví dụ: BabyAGIxLangchain là |
| 115 | +> một hướng đi). Tôi tin rằng có nhiều phương pháp có giá trị để khám phá, và tôi thấy giá trị trong việc có |
| 116 | +> một nơi trung tâm để so sánh và thảo luận. Sắp tới sẽ có thêm nhiều cập nhật. |
| 117 | +
|
| 118 | +Tôi mới bắt đầu với GitHub và open source, vì vậy hãy kiên nhẫn khi tôi học cách quản lý dự án này |
| 119 | +một cách tốt nhất. Tôi làm việc tại một quỹ đầu tư mạo hiểm vào ban ngày, vì vậy tôi thường xem qua PR và issues |
| 120 | +vào buổi tối sau khi đưa con cái đi ngủ - có thể không phải mỗi tối. Tôi chào đón các ý tưởng về việc có thêm |
| 121 | +sự hỗ trợ, và tôi sẽ cập nhật phần này sớm thôi (kỳ vọng, tầm nhìn, v.v.). |
| 122 | +Tôi đang nói chuyện với nhiều người và cùng lúc học hỏi thêm - hãy kiên nhẫn chờ đợi cập nhật nhé! |
| 123 | + |
| 124 | +# Báo cáo hoạt động BabyAGI |
| 125 | + |
| 126 | +Để giúp cộng đồng BabyAGI cập nhật thông tin về tiến trình dự án, Blueprint AI đã phát triển một bộ tóm tắt |
| 127 | +hoạt động Github cho BabyAGI. Báo cáo ngắn gọn này hiển thị tóm tắt tất cả các đóng góp vào repository BabyAGI trong |
| 128 | +7 ngày qua (liên tục cập nhật), giúp bạn dễ dàng theo dõi các cập nhật mới nhất. |
| 129 | + |
| 130 | +Để xem báo cáo hoạt động 7 ngày của BabyAGI, hãy truy cập vào đây: [https://app.blueprint.ai/github/yoheinakajima/babyagi](https://app.blueprint.ai/github/yoheinakajima/babyagi) |
| 131 | + |
| 132 | +[<img width="293" alt="image" src="https://user-images.githubusercontent.com/334530/235789974-f49d3cbe-f4df-4c3d-89e9-bfb60eea6308.png">](https://app.blueprint.ai/github/yoheinakajima/babyagi) |
| 133 | + |
| 134 | +# Các dự án được truyền cảm hứng |
| 135 | + |
| 136 | +Trong thời gian ngắn kể từ khi nó được phát hành, BabyAGI đã truyền cảm hứng cho nhiều dự án. |
| 137 | +Bạn có thể xem tất cả chúng [tại đây](docs/inspired-projects.md). |
| 138 | + |
| 139 | +# Nguồn gốc |
| 140 | + |
| 141 | +BabyAGI là phiên bản rút gọn của [Task-Driven Autonomous Agent](https://twitter.com/yoheinakajima/status/1640934493489070080?s=20) |
| 142 | +(28 tháng 3 năm 2023) được chia sẻ trên Twitter. Phiên bản này giảm xuống còn 140 dòng: 13 comment, 22 dòng trống, và 105 dòng code. |
| 143 | +Tên của repository được đặt ra sau khi phản ứng với agent tự động ban đầu - tác giả không có ý định ngụ ý rằng đây là AGI. |
| 144 | + |
| 145 | +Made with love bởi [@yoheinakajima](https://twitter.com/yoheinakajima), một nhà đầu tư mạo hiểm (và rất muốn biết bạn đang xây dựng cái gì!) |
0 commit comments