Apidog

Nền tảng phát triển API hợp tác tất cả trong một

Thiết kế API

Tài liệu API

Gỡ lỗi API

Giả lập API

Kiểm thử API tự động

OpenHands: Alternative AI Devin Mở Nguồn

Minh Triết

Minh Triết

Updated on tháng 4 25, 2025

Thế giới phát triển phần mềm đang trải qua một sự chuyển mình mạnh mẽ, được thúc đẩy bởi những tiến bộ nhanh chóng trong trí tuệ nhân tạo. Chúng tôi đã thấy các công cụ AI phát triển từ những trợ lý hoàn thành mã đơn giản đến các hệ thống tinh vi có khả năng hiểu các yêu cầu phức tạp và tạo ra các ứng dụng chức năng. Trong bối cảnh hấp dẫn này, một cái tên mới đã xuất hiện, thu hút trí tưởng tượng của các nhà phát triển trên toàn thế giới: OpenHands. Được định vị như một lựa chọn mạnh mẽ, mã nguồn mở thay thế cho các nhà phát triển AI sở hữu như Devin AI, OpenHands cung cấp một nền tảng nơi các tác nhân AI có thể thực hiện các nhiệm vụ mà trước đây chỉ có các nhà phát triển con người mới làm được.

Được phát triển bởi All-Hands-AI, OpenHands (trước đây được biết đến là OpenDevin) không chỉ là một trợ lý lập trình khác. Nó được thiết kế như một nền tảng đa năng cho các tác nhân AI nhằm giải quyết toàn bộ các nhiệm vụ phát triển phần mềm. Hãy tưởng tượng một AI không chỉ có thể viết mã mà còn sửa đổi các mã nguồn hiện có, thực hiện các lệnh đầu cuối, duyệt web để tìm kiếm thông tin (vâng, thậm chí cả việc tìm kiếm trên Stack Overflow để tìm giải pháp), tương tác với các API và quản lý các quy trình phát triển phức tạp. Đây là lời hứa của OpenHands – để "Code Less, Make More."

Điều thực sự làm cho OpenHands khác biệt chính là cam kết đối với mã nguồn mở. Được xây dựng dưới Giấy phép MIT cho phép, nó mời gọi sự hợp tác, tính minh bạch và đổi mới dựa trên cộng đồng. Điều này tương phản rõ rệt với các mô hình mã nguồn đóng, mang lại cho các nhà phát triển sự kiểm soát, tùy chỉnh và cái nhìn chưa từng có vào cách thức hoạt động bên trong của đối tác phát triển AI của họ. Đối với các đội và cá nhân lo ngại về việc bị ràng buộc vào nhà cung cấp hoặc muốn tùy chỉnh các khả năng AI theo nhu cầu cụ thể, OpenHands đưa ra một đề xuất hấp dẫn.

💡
Bạn muốn một công cụ kiểm tra API tuyệt vời tạo ra tài liệu API đẹp mắt?

Bạn muốn một nền tảng tích hợp, tất cả trong một để đội ngũ phát triển của bạn làm việc cùng nhau với năng suất tối đa?

Apidog đáp ứng mọi yêu cầu của bạn và thay thế Postman với mức giá hợp lý hơn rất nhiều!
button

OpenHands (trước đây là Open Devin) làm gì?

Hiểu các chức năng cốt lõi của OpenHands là chìa khóa để đánh giá tiềm năng của nó như một nền tảng phát triển AI. Nó trang bị cho các tác nhân AI một bộ khả năng toàn diện:

Sửa đổi mã thông minh

Các tác nhân OpenHands có khả năng đọc, hiểu và thay đổi mã trong bối cảnh một dự án hiện có. Tận dụng Mô hình Ngôn ngữ Lớn (LLM) đã chọn, tác nhân phân tích mã nguồn, hiểu mối quan hệ giữa các tệp và chức năng, và thực hiện các thay đổi mục tiêu dựa trên các gợi ý từ người dùng. Điều này bao gồm các nhiệm vụ như tái cấu trúc các chức năng để làm rõ, thêm các điểm cuối API mới, hoặc cập nhật các phụ thuộc dự án theo chỉ thị.

Thực thi lệnh an toàn

Một trong những nền tảng của OpenHands là khả năng thực thi các lệnh shell (như npm install, python manage.py runserver, git commit, ls, grep, và khác) trong một môi trường cách ly, được bảo vệ. Sandbox này, thường được thực hiện dưới dạng container Docker, tách biệt các hành động của tác nhân, ngăn cản bất kỳ tác động không mong muốn nào lên hệ thống chủ. Điều này cho phép tác nhân thực hiện các hoạt động phát triển cần thiết như thiết lập môi trường dự án, thực thi bộ kiểm tra, cài đặt các thư viện cần thiết, chạy các kịch bản xây dựng, và quản lý kiểm soát phiên bản.

Chức năng duyệt web tích hợp

Phát triển phần mềm hiệu quả thường cần thu thập thông tin từ bên ngoài, chẳng hạn như tham khảo tài liệu, tìm kiếm giải pháp trên các nền tảng như Stack Overflow, hoặc nghiên cứu các thư viện. Các tác nhân OpenHands được trang bị khả năng duyệt web một cách tự động, thu thập thông tin cần thiết để hoàn thành các nhiệm vụ được giao. Khả năng này cho phép họ cập nhật với các thực tiễn tốt nhất và nghĩ ra giải pháp cho các vấn đề mới mà không chỉ dựa vào thông tin đã được cung cấp sẵn.

Tương tác API

Cấu trúc phần mềm hiện đại thường liên quan đến việc tích hợp nhiều dịch vụ qua các API. Các tác nhân OpenHands có thể được chỉ định để tương tác với các API bên ngoài này. Việc này có thể bao gồm việc lấy dữ liệu từ một nguồn bên thứ ba, gửi cập nhật đến một hệ thống khác, hoặc tổ chức quy trình làm việc trải dài qua các công cụ khác nhau, từ đó tự động hóa các quy trình phát triển phức tạp hơn.

Quản lý hệ thống tệp

Các tác nhân cần khả năng tương tác với các tệp dự án. OpenHands cấp cho họ quyền tạo, đọc, ghi và xóa các tệp và thư mục trong không gian làm việc chỉ định của họ (thường là một volume được ánh xạ từ hệ thống địa phương vào sandbox của tác nhân). Điều này cho phép họ cấu trúc các dự án một cách hợp lý, thêm các mô-đun hoặc thành phần mới, quản lý các tệp cấu hình, và lưu trữ kết quả đầu ra.

Những khả năng đa dạng này, được phối hợp bởi một backend LLM do người dùng chọn, trao quyền cho các tác nhân OpenHands tự động xử lý các nhiệm vụ phát triển phức tạp, vượt xa việc tạo mã cơ bản để hỗ trợ kỹ thuật phần mềm do AI điều khiển thực sự.

Cách cài đặt OpenHands trên Mac, Linux, Windows

Sử dụng Docker là phương pháp được khuyến nghị và mạnh mẽ nhất để chạy OpenHands cục bộ. Nó đảm bảo tính đồng nhất của môi trường và cung cấp sự cách ly cần thiết cho các hoạt động của tác nhân. Dưới đây là hướng dẫn chi tiết để cài đặt OpenHands trên các hệ điều hành khác nhau.

Yêu cầu hệ thống

Đảm bảo hệ thống của bạn đáp ứng các yêu cầu sau:

  • Hệ điều hành:
  • macOS (hỗ trợ Docker Desktop)
  • Linux (đã thử nghiệm trên Ubuntu 22.04, các phân phối hiện đại khác có thể tương thích)
  • Windows (với WSL 2 và hỗ trợ Docker Desktop)
  • Phần cứng: Một hệ thống có bộ xử lý hiện đại và ít nhất 4GB RAM là được khuyên. Các tác vụ liên quan đến các thao tác phức tạp hoặc chạy LLM địa phương lớn sẽ được hưởng lợi rất nhiều từ việc tăng cường RAM và tài nguyên CPU/GPU.

Các bước cài đặt yêu cầu tiên quyết

Thực hiện theo các bước này một cách cẩn thận để thiết lập các yêu cầu tiên quyết cần thiết.

Bước 1: Cài đặt Docker Desktop

Tải xuống và cài đặt Docker Desktop phù hợp với hệ điều hành của bạn từ trang web chính thức của Docker (https://www.docker.com/products/docker-desktop/). Làm theo hướng dẫn cài đặt mà Docker cung cấp. Sau khi cài đặt, xác nhận rằng daemon Docker đang hoạt động; biểu tượng của nó nên hiển thị trong khay hệ thống hoặc thanh menu của bạn.

Bước 2: Cấu hình Docker tùy thuộc vào hệ điều hành

Cần có các cấu hình cụ thể tùy vào hệ điều hành của bạn.

Cấu hình macOS
  1. Mở Docker Desktop.
  2. Truy cập Settings (thường thông qua biểu tượng bánh răng).
  3. Đi tới phần Advanced.
  4. Xác nhận rằng tùy chọn Allow the default Docker socket to be used đã được kiểm tra (bật). Quyền này rất quan trọng để container OpenHands quản lý các container Docker khác (như sandbox).
Cấu hình Linux
  1. Cài đặt Docker Desktop cho Linux bằng cách làm theo tài liệu chính thức của Docker.
  2. Đảm bảo dịch vụ Docker đang chạy sau khi cài đặt.
    (Lưu ý: Trong khi đã được thử nghiệm trên Ubuntu 22.04, khả năng tương thích với các phân phối Linux khác được dự đoán nhưng không được đảm bảo.)
Cấu hình Windows
  1. Cài đặt WSL (Subsystem Windows cho Linux): Nếu WSL 2 chưa được cài đặt, mở PowerShell với quyền Quản trị viên và thực hiện wsl --install. Lệnh này cài đặt WSL và một phân phối Linux mặc định (thường là Ubuntu). Có thể cần khởi động lại hệ thống.
  2. Xác minh phiên bản WSL: Mở một cửa sổ PowerShell hoặc Command Prompt thông thường và gõ wsl --version. Xác nhận đầu ra cho biết phiên bản WSL là 2 hoặc cao hơn. Nếu phiên bản 1 được hiển thị, hãy cập nhật WSL hoặc đặt phiên bản 2 làm mặc định bằng wsl --set-default-version 2.
  3. Cài đặt Docker Desktop cho Windows: Tiến hành cài đặt Docker Desktop nếu chưa được thực hiện.
  4. Cấu hình tích hợp WSL cho Docker Desktop: Mở Docker Desktop, đi tới Settings. Dưới General, đảm bảo Use the WSL 2 based engine đã được bật. Dưới Resources > WSL Integration, xác nhận Enable integration with my default WSL distro đã được bật. Áp dụng các thay đổi và khởi động lại Docker nếu được yêu cầu.
  5. Lưu ý Quan trọng: Đối với người dùng Windows, tất cả các lệnh docker liên quan đến OpenHands phải được thực hiện từ trong môi trường terminal WSL (ví dụ: terminal Ubuntu), không phải trực tiếp từ PowerShell hoặc Command Prompt.

Bắt đầu ứng dụng OpenHands

Khi các yêu cầu tiên quyết đã được đáp ứng, bạn có thể bắt đầu ứng dụng OpenHands.

Bước 1: Mở terminal của bạn
  • Trên macOS hoặc Linux, mở ứng dụng Terminal mặc định của bạn.
  • Trên Windows, khởi động terminal của phân phối WSL đã cài đặt của bạn (ví dụ: Ubuntu).
Bước 2: Kéo hình ảnh chạy (Tùy chọn)

OpenHands sử dụng một hình ảnh Docker riêng cho môi trường thực thi được sandbox của tác nhân. Trước khi kéo hình ảnh này có thể tăng tốc độ khởi động ban đầu. Sử dụng thẻ được khuyến nghị trong tài liệu chính thức:

docker pull docker.all-hands.dev/all-hands-ai/runtime:0.34-nikolaik

(Luôn xác minh thẻ được khuyến nghị mới nhất từ kho lưu trữ GitHub của OpenHands hoặc tài liệu chính thức, vì các thẻ có thể thay đổi.)

Bước 3: Chạy container OpenHands

Thực hiện lệnh toàn diện sau đây trong terminal của bạn (sử dụng terminal WSL trên Windows):

docker run -it --rm --pull=always \
    -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.34-nikolaik \
    -e LOG_ALL_EVENTS=true \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v ~/.openhands-state:/.openhands-state \
    -p 3000:3000 \
    --add-host host.docker.internal:host-gateway \
    --name openhands-app \
    docker.all-hands.dev/all-hands-ai/openhands:0.34
Bước 4: Truy cập giao diện người dùng web

Khi lệnh docker run được thực hiện, theo dõi đầu ra nhật ký trong terminal của bạn. Khi chuỗi khởi động ứng dụng hoàn tất, hãy mở trình duyệt web ưa thích của bạn và điều hướng đến http://localhost:3000.

Với các bước này được hoàn thành, OpenHands đã được cài đặt và chạy thành công tại địa phương. Bước tiếp theo ngay lập tức là cấu hình một Mô hình Ngôn ngữ Lớn để cung cấp năng lượng cho tác nhân.

Bắt đầu với Open Hands

Khi OpenHands hoạt động, giai đoạn quan trọng tiếp theo là kết nối nó với một LLM, điều này đóng vai trò như động cơ nhận thức của tác nhân. Sau khi thiết lập LLM, bạn có thể bắt đầu giao nhiệm vụ phát triển. Phần này chi tiết cấu hình ban đầu và cung cấp các ví dụ tương tác minh họa.

Cấu hình LLM ban đầu

Đây là bước đầu tiên bắt buộc khi khởi động giao diện người dùng.

  • Lần khởi động đầu tiên: Khi truy cập http://localhost:3000 lần đầu tiên, một modal cấu hình sẽ tự động xuất hiện.
  • Các trường bắt buộc: Bạn cần chọn một Nhà cung cấp LLM (ví dụ: OpenAI, Anthropic, Google, OpenRouter, các tùy chọn cục bộ như Ollama), chọn một Mô hình LLM cụ thể mà nhà cung cấp đó cung cấp và nhập API Key tương ứng của bạn.
  • Truy cập Cài đặt sau: Nếu modal ban đầu bị đóng hoặc nếu bạn cần điều chỉnh cấu hình sau này, hãy nhấn vào b biểu tượng bánh răng (⚙️) trong giao diện người dùng (thường ở gần khu vực nhập chat hoặc trong một bảng điều khiển đặt hàng).

(Hướng dẫn chi tiết về cách cấu hình các nhà cung cấp LLM cụ thể sẽ được cung cấp trong phần tiếp theo.)

Tương tác đầu tiên của bạn: Nhiệm vụ "Hello World"

Bắt đầu tương tác với một nhiệm vụ cơ bản để quan sát quy trình của tác nhân.

Bước 1: Gợi ý cho tác nhân

Nhập lệnh sau vào ô nhập chat và nhấn Enter:

Write a bash script hello.sh that prints "hello world!"
Bước 2: Quan sát giai đoạn lập kế hoạch

OpenHands chuyển tiếp yêu cầu đến LLM đã cấu hình, sau đó hình thành một kế hoạch chiến lược. Thông thường, tác nhân sẽ phác thảo các hành động dự định của nó trong giao diện người dùng, chẳng hạn như:

  1. Tạo một tệp mới có tên hello.sh.
  2. Chèn lệnh bash echo "hello world!" vào tệp này.
  3. Cấp quyền thực thi cho tập lệnh bằng chmod +x hello.sh.
  4. Thực thi tập lệnh thông qua ./hello.sh để xác nhận đầu ra phù hợp với mong đợi.
Bước 3: Quan sát giai đoạn thực thi

Tác nhân tiến hành thực thi các bước đã lên kế hoạch trong môi trường runtime Docker của nó. Nhật ký giao diện người dùng sẽ hiển thị các lệnh đang được thực hiện và phản ánh các sửa đổi trong hệ thống tệp khi chúng xảy ra.

Bước 4: Xác minh kết quả

Sau khi hoàn thành thành công, tác nhân nên báo cáo kết quả thực thi, bao gồm đầu ra mong đợi: "hello world!".

Bước 5: Tinh chỉnh lặp lại

Giờ đây, hãy thay đổi tập lệnh bằng một hướng dẫn theo sau:

Modify hello.sh so that it accepts a name as the first argument, but defaults to "world"
Bước 6: Quan sát quy trình sửa đổi

Tác nhân sẽ lại hình thành và thực hiện một kế hoạch:

  1. Đọc nội dung hiện có của hello.sh.
  2. Cập nhật mã của tập lệnh để bao gồm xử lý tham số, có thể sử dụng mở rộng tham số bash như echo "hello ${1:-world}!".
  3. Tùy chọn, chạy các bài kiểm tra với và không có tham số (ví dụ: ./hello.sh./hello.sh Developer) để xác nhận các thay đổi.
Bước 7: Nhiệm vụ chuyển đổi ngôn ngữ

Chứng minh sự linh hoạt của tác nhân bằng cách yêu cầu thay đổi ngôn ngữ:

Please convert hello.sh to a Ruby script, and run it
Bước 8: Quan sát sự thích nghi của môi trường

Nếu môi trường sandbox thiếu trình thông dịch Ruby cần thiết, tác nhân có thể lên kế hoạch và thực hiện các lệnh cài đặt đầu tiên (ví dụ: apt-get update && apt-get install -y ruby). Sau đó, nó sẽ chuyển đổi logic thành mã Ruby (ví dụ: puts "hello #{ARGV[0] || 'world'}!"), lưu lại vào hello.rb, làm cho nó có thể thực thi và chạy tập lệnh mới.

Ví dụ mở đầu này làm nổi bật quy trình làm việc cốt lõi của tác nhân: hiểu lệnh, lập kế hoạch các bước thực hiện, tương tác với hệ thống tệp và shell trong một sandbox và thích nghi dựa trên các gợi ý lặp lại.

Xây dựng từ đầu: Ví dụ ứng dụng TODO

Các tác nhân thường thể hiện hiệu suất mạnh mẽ trên các dự án "greenfield", nơi chúng có thể thiết lập cấu trúc mà không cần nhiều ngữ cảnh từ một mã nguồn phức tạp có sẵn.

Bước 1: Cung cấp gợi ý dự án ban đầu

Hãy chính xác về các tính năng mong muốn và công nghệ được sử dụng:

Build a frontend-only TODO app in React. All state should be stored in localStorage. Implement basic functionality to add new tasks and display the current list of tasks.
Bước 2: Theo dõi lập kế hoạch và xây dựng

Tác nhân có thể lập kế hoạch như sau:

  1. Sử dụng create-react-app (nếu có sẵn/được chỉ định) hoặc tự tay tạo nền tảng các tệp HTML, CSS và JavaScript/JSX cơ bản.
  2. Phát triển các thành phần React cho biểu mẫu nhập nhiệm vụ và hiển thị danh sách nhiệm vụ.
  3. Thực hiện quản lý trạng thái ứng dụng bằng cách sử dụng các hook của React như useStateuseEffect.
  4. Tích hợp localStorage.setItem()localStorage.getItem() để đảm bảo dữ liệu được lưu trữ giữa các phiên làm việc.
  5. Viết cấu trúc HTML cần thiết và áp dụng kiểu cơ bản với CSS.
Bước 3: Yêu cầu mở rộng tính năng

Khi ứng dụng cơ bản đã hoạt động, yêu cầu các tính năng bổ sung:

Allow adding an optional due date to each task. Display this due date alongside the task description in the list.
Bước 4: Quan sát phát triển lặp lại

Tác nhân sẽ chỉnh sửa các thành phần React hiện có để bao gồm một yếu tố đầu vào ngày, cập nhật cấu trúc trạng thái ứng dụng để xử lý thông tin về ngày đến hạn và điều chỉnh logic hiển thị để phản ánh các ngày đó trong danh sách nhiệm vụ một cách thích hợp.

Bước 5: Thực hiện kiểm soát phiên bản (Thực hành tốt nhất)

Thường xuyên lưu lại tiến độ của tác nhân bằng cách sử dụng kiểm soát phiên bản, giống như bạn làm trong phát triển thủ công. Bạn thậm chí có thể chỉ định cho tác nhân xử lý các commit:

Commit the current changes with the commit message "feat: Add due date functionality to tasks" and push the commit to a new branch named "feature/due-dates" on the origin remote repository.

(Lưu ý: Việc thực thi thành công các lệnh Git, đặc biệt là đẩy lên remotes, yêu cầu Git được cài đặt và có thể cần cấu hình với thông tin xác thực trong không gian làm việc/sandbox của tác nhân.)

Thêm mã mới vào các dự án hiện có

OpenHands có khả năng tích hợp mã và tính năng mới vào các mã nguồn đã được thiết lập.

Ví dụ 1: Thêm một hành động GitHub
  • Gợi ý:
Add a GitHub Action workflow to this repository that lints JavaScript code using ESLint whenever code is pushed to the main branch.
  • Hành vi của tác nhân: Tác nhân có thể sẽ kiểm tra cấu trúc dự án (ví dụ: ls .github/workflows) để xem liệu có workflow nào tồn tại. Sau đó, nó sẽ xác định linter thích hợp (hoặc sử dụng linter đã chỉ định), tạo một tệp YAML mới (ví dụ: .github/workflows/lint.yml), và điền nó với cấu hình chính xác cho một hành động GitHub được kích hoạt khi mã được đẩy lên main, chạy ESLint.
Ví dụ 2: Thêm một tuyến backend (Bối cảnh quan trọng)
  • Gợi ý:
Modify the Express.js application file located at './backend/api/routes.js'. Add a new GET endpoint at '/api/tasks' that retrieves and returns all tasks by calling the asynchronous function 'getAllTasks' found in './db/queries.js'.
  • Hành vi của tác nhân: Cung cấp đường dẫn tệp cụ thể (./backend/api/routes.js) và thông tin bối cảnh liên quan (như sự tồn tại và vị trí của getAllTasks trong ./db/queries.js) sẽ cải thiện đáng kể hiệu quả và độ chính xác của tác nhân. Nó sẽ nhắm mục tiêu vào tệp đã chỉ định và chèn mã xử lý route cần thiết, bao gồm việc nhập hàm cần thiết.

Tái cấu trúc mã

Sử dụng OpenHands để thực hiện các nỗ lực tái cấu trúc mã có mục tiêu.

Ví dụ 1: Đổi tên các biến để làm rõ
  • Gợi ý: Trong tệp './utils/calculation.py', đổi tên tất cả các biến chữ cái đơn trong hàm 'process_data' để mô tả rõ hơn về mục đích của chúng.
Ví dụ 2: Chia nhỏ các hàm lớn
  • Gợi ý: Tái cấu trúc hàm 'process_and_upload_data' trong 'data_handler.java'. Chia logic của nó thành hai hàm riêng biệt: 'process_data' và 'upload_data', duy trì chức năng tổng thể ban đầu.
Ví dụ 3: Cải thiện cấu trúc tệp
  • Gợi ý: Phân tách các định nghĩa route chính trong './api/routes.js' thành các tệp riêng lẻ dựa trên tài nguyên (ví dụ: 'userRoutes.js', 'productRoutes.js'). Cập nhật tệp máy chủ chính ('server.js') để nhập và sử dụng các tệp route mô-đun này.

Sửa lỗi

Mặc dù việc sửa lỗi có thể phức tạp, OpenHands có thể trợ giúp, đặc biệt khi vấn đề được xác định rõ ràng.

Ví dụ 1: Sửa logic cụ thể
  • Gợi ý: Biểu thức chính quy được sử dụng để xác thực email trong bộ xử lý endpoint '/subscribe' trong 'server/handlers.js' từ chối không chính xác các tên miền hợp lệ '.co.uk'. Vui lòng sửa regex pattern.
Ví dụ 2: Thay đổi hành vi
  • Gợi ý: Hàm 'search_items' được thực hiện trong 'search.php' hiện đang thực hiện một tìm kiếm nhạy cảm với chữ hoa. Thay đổi hàm này để đảm bảo rằng tìm kiếm không phân biệt chữ hoa chữ thường.
Ví dụ 3: Sử dụng phương pháp tiếp cận dựa trên kiểm tra
  1. Gợi ý cho việc tạo kiểm tra: Hàm 'calculate_discount' trong 'pricing.js' gặp sự cố khi số lượng đầu vào là không. Viết một trường hợp kiểm tra mới bằng Jest trong tệp 'pricing.test.js' mà cụ thể tạo ra lỗi này.
  2. Quan sát việc chạy kiểm tra: Tác nhân sinh mã kiểm tra, thực hiện bộ kiểm tra (ví dụ: thông qua npm test) và báo cáo sự thất bại như mong đợi.
  3. Gợi ý sửa mã: Giờ đây, hãy điều chỉnh hàm 'calculate_discount' trong 'pricing.js' để xử lý chính xác trường hợp số lượng không, đảm bảo rằng bài kiểm tra đã viết trước đó được thông qua.
  4. Quan sát sửa lỗi và xác nhận: Tác nhân điều chỉnh logic hàm (có thể thêm một kiểm tra điều kiện cho số lượng không) và chạy lại bộ kiểm tra, báo cáo kết quả thành công.

Chiến lược sử dụng chính: Bắt đầu với các yêu cầu đơn giản, cụ thể. Cung cấp ngữ cảnh cần thiết như đường dẫn tệp và tên hàm. Chia nhỏ các mục tiêu lớn thành các bước nhỏ hơn, lặp đi lặp lại. Cam kết thay đổi thường xuyên bằng cách sử dụng kiểm soát phiên bản.

Cách cấu hình OpenHands với LLMs (OpenAI, OpenRouter, Google Gemini, Cục bộ)

Thiết lập kết nối giữa OpenHands và một LLM khả thi là cực kỳ quan trọng. Cấu hình này được quản lý thông qua giao diện người dùng web của OpenHands.

Truy cập cài đặt cấu hình LLM

  • Trong thiết lập ban đầu: Một modal cấu hình sẽ tự động xuất hiện khi tải lần đầu giao diện người dùng tại http://localhost:3000.
  • Đối với các thay đổi sau: Nhấn vào b biểu tượng bánh răng (⚙️) trong giao diện người dùng, thường được đặt gần khu vực nhập chat hoặc trong một bảng điều khiển cài đặt.

Quy trình cấu hình LLM chung

  1. Chọn nhà cung cấp LLM: Chọn dịch vụ bạn muốn (ví dụ: "OpenAI", "Anthropic", "Google", "OpenRouter", "Ollama") từ menu thả xuống hiện có.
  2. Nhập API Key: Cẩn thận dán API Key liên quan đến nhà cung cấp bạn đã chọn vào trường nhập đã chỉ định. API Keys nên được bảo mật như mật khẩu.
  3. Xác định mô hình LLM: Chọn mô hình cụ thể mà bạn định sử dụng từ nhà cung cấp đã chọn (ví dụ: gpt-4o, claude-3-5-sonnet-20240620, gemini-1.5-pro-latest). Các mô hình có sẵn có thể tự động xuất hiện dựa trên nhà cung cấp đã chọn, hoặc bạn có thể cần nhập tên mô hình bằng tay.
  4. Khám phá các tùy chọn nâng cao (Tùy chọn): Chuyển đổi các cài đặt nâng cao để hiện thêm khả năng cấu hình:
  • Mô hình tùy chỉnh: Nếu mô hình ưa thích của bạn không được liệt kê, bạn có thể thường xuyên nhập định danh chính xác của nó tại đây (tham khảo tài liệu của nhà cung cấp để biết ID mô hình đúng).
  • Base URL: Cài đặt này rất quan trọng khi kết nối đến các LLM được host cục bộ hoặc sử dụng dịch vụ proxy. Nó xác định URL endpoint API cụ thể mà OpenHands nên nhắm tới để yêu cầu.

5. Lưu cấu hình: Áp dụng và lưu các cài đặt đã chọn của bạn.

Các bước cấu hình cụ thể cho nhà cung cấp

Thực hiện theo các bước chi tiết cho các nhà cung cấp LLM phổ biến:

Cấu hình OpenAI
  1. Truy cập https://platform.openai.com/.
  2. Đăng nhập hoặc tạo một tài khoản mới.
  3. Đi đến phần API keys và tạo một khóa bí mật mới. Sao chép khóa này ngay lập tức vì nó có thể không được hiển thị lại.
  4. Đảm bảo rằng thông tin thanh toán đã được thiết lập đúng cách dưới cài đặt Billing để cho phép sử dụng API.
  5. Trong cài đặt giao diện người dùng OpenHands:
  • Đặt Nhà cung cấp thành OpenAI.
  • Dán API Key mà bạn đã sinh vào trường API Key.
  • Chọn hoặc nhập mô hình OpenAI mong muốn (ví dụ: gpt-4o, gpt-4-turbo).
Cấu hình Anthropic (Claude)
  1. Truy cập https://console.anthropic.com/.
  2. Đăng nhập hoặc đăng ký tài khoản.
  3. Truy cập Account Settings > API Keys và tạo một API key mới. Sao chép khóa đã được tạo ra.
  4. Cấu hình thanh toán dưới Plans & Billing. Xem xét việc thiết lập giới hạn sử dụng để quản lý chi phí hiệu quả.
  5. Trong cài đặt giao diện người dùng OpenHands:
  • Đặt Nhà cung cấp thành Anthropic.
  • Dán API Key mà bạn đã sao chép.
  • Chọn hoặc nhập mô hình Claude cụ thể (ví dụ: claude-3-5-sonnet-20240620, claude-3-opus-20240229).
Cấu hình Google Gemini
  1. Nhận một API Key thông qua:

2. Nếu sử dụng Google Cloud, đảm bảo rằng các API Vertex AI cần thiết đã được kích hoạt và thanh toán được cấu hình cho dự án của bạn.

3. Trong cài đặt giao diện người dùng OpenHands:

  • Đặt Nhà cung cấp thành Google.
  • Dán API key mà bạn đã nhận được.
  • Chọn hoặc nhập mô hình Gemini mong muốn (ví dụ: gemini-1.5-pro-latest, gemini-1.5-flash-latest).
Cấu hình OpenRouter
  1. Truy cập https://openrouter.ai/.
  2. Đăng nhập hoặc tạo tài khoản.
  3. Đi đến phần Keys và tạo một API key mới. Sao chép nó.
  4. Thêm tín dụng vào tài khoản của bạn qua phần Billing để cho phép sử dụng.
  5. Trong cài đặt giao diện người dùng OpenHands:
  • Đặt Nhà cung cấp thành OpenRouter.
  • Dán API Key OpenRouter được tạo ra.
  • Chọn hoặc nhập chính xác định danh mô hình mà OpenRouter sử dụng (ví dụ: anthropic/claude-3.5-sonnet, google/gemini-pro-1.5, mistralai/mistral-7b-instruct). Tham khảo tài liệu các mô hình OpenRouter để biết danh sách các định danh có sẵn.
Cấu hình LLM cục bộ (ví dụ: qua Ollama)
  1. Cài đặt Ollama: Thực hiện theo hướng dẫn cài đặt tại https://ollama.com/.
  2. Tải mô hình: Sử dụng Ollama CLI để tải một mô hình mong muốn, ví dụ: ollama pull llama3 (hoặc các mô hình khác như codellama, mistral).
  3. Chạy máy chủ Ollama: Đảm bảo máy chủ nền Ollama đang chạy (nó thường bắt đầu tự động sau khi cài đặt).
  4. Trong cài đặt giao diện người dùng OpenHands:
  • Đặt Nhà cung cấp thành Ollama (hoặc có thể là LiteLLM nếu sử dụng như một trung gian).
  • API Key: Thông thường không cần thiết cho các thiết lập Ollama tiêu chuẩn; bạn có thể để trống hoặc nhập NA hoặc ollama.
  • Bật Tùy chọn Nâng cao.
  • Đặt Base URL: Điều này là thiết yếu. Vì OpenHands chạy trong Docker, localhost chỉ đến chính container, không phải máy chủ của bạn nơi Ollama đang chạy. Sử dụng tên DNS đặc biệt http://host.docker.internal:11434. host.docker.internal giải quyết IP của máy chủ của bạn từ trong container, và 11434 là cổng mặc định cho máy chủ API Ollama.
  • Xác định mô hình: Chọn hoặc nhập tên chính xác của mô hình Ollama bạn đã tải xuống (ví dụ: llama3, codellama) trong trường Mô hình hoặc Mô hình Tùy chỉnh.

Cách cấu hình môi trường chạy Docker của OpenHands

Mục đích của môi trường runtime

  • Cách ly và An ninh: Container runtime hoạt động tách biệt với container ứng dụng OpenHands chính. Sự phân chia này tạo ra một sandbox an toàn, ngăn cản các hành động do tác nhân thực hiện (như cài đặt phần mềm hoặc thực thi mã) ảnh hưởng trực tiếp đến ứng dụng cốt lõi hoặc hệ thống chủ.
  • Môi trường thực thi: Hình ảnh runtime thường bao gồm các công cụ cơ bản thiết yếu (như shell và các tiện ích dòng lệnh thông dụng). Tùy thuộc vào hình ảnh cụ thể được chọn, nó cũng có thể được cài đặt sẵn các công cụ phát triển như Python, Node.js hoặc Git. Hơn nữa, tác nhân thường có khả năng cài đặt thêm các công cụ cần thiết khác trong môi trường sandbox này bằng cách sử dụng các trình quản lý gói (apt, npm, pip, v.v.).

Cấu hình qua lệnh docker run

Phương pháp chính để cấu hình runtime là thông qua cờ -e (biến môi trường) trong lệnh docker run được sử dụng để khởi động ứng dụng OpenHands:

-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.34-nikolaik

Biến môi trường này chỉ dẫn cho ứng dụng OpenHands biết thẻ hình ảnh Docker cụ thể mà nó nên sử dụng bất cứ khi nào nó cần cấp phát một container sandbox mới để xử lý việc thực thi nhiệm vụ của một tác nhân.

Thay đổi hoặc cập nhật runtime

  • Chuyển đổi phiên bản runtime: Nếu một phiên bản mới của hình ảnh