Bỏ qua nội dung chính
OpenAI

Giới thiệu Codex

Một tác nhân kỹ thuật phần mềm dựa trên nền tảng đám mây có thể thực hiện nhiều tác vụ song song, được hỗ trợ bởi codex-1. Hiện chỉ dành cho người dùng ChatGPT Pro, Team và Enterprise và sẽ sớm ra mắt cho người dùng Plus.

Bảng điều khiển hiện câu hỏi "Chúng ta nên viết mã gì tiếp theo?" với hộp lời nhắc, bộ chọn kho lưu trữ/nhánh và danh sách tác vụ trên nền theo chủ đề mã màu phấn.
Đang tải…

Hôm nay chúng tôi ra mắt bản xem trước nghiên cứu của Codex: một tác nhân kỹ thuật phần mềm dựa trên nền tảng đám mây có thể thực hiện nhiều tác vụ song song. Codex có thể thực hiện các tác vụ thay bạn như viết tính năng, trả lời các câu hỏi về cơ sở mã, sửa lỗi và đề xuất các thay đổi để xem xét; mỗi tác vụ chạy trong môi trường sandbox đám mây riêng có tải sẵn kho lưu trữ của bạn.

Codex được hỗ trợ bởi codex-1, một phiên bản của OpenAI o3 được tối ưu hóa cho kỹ thuật phần mềm. Tác nhân này được huấn luyện bằng phương pháp học củng cố với các tác vụ viết mã thực tế trong nhiều môi trường khác nhau để tạo ra mã phản ánh chặt chẽ phong cách của con người và các ưu tiên theo PR, tuân thủ chính xác các hướng dẫn và có thể chạy thử nghiệm liên tục cho đến khi nhận được kết quả đạt yêu cầu. Hôm nay, chúng tôi bắt đầu triển khai Codex cho người dùng ChatGPT Pro, Enterprise và Team, đồng thời sẽ sớm hỗ trợ người dùng Plus và Edu.

Cách thức hoạt động của Codex

Hiện tại, bạn có thể truy cập Codex thông qua thanh bên trong ChatGPT và chỉ định các tác vụ viết mã mới bằng cách nhập lời nhắc và nhấp vào “Viết mã”. Nếu bạn muốn hỏi Codex về cơ sở mã của mình, hãy nhấp vào “Hỏi”. Mỗi tác vụ được xử lý độc lập trong một môi trường tách biệt có tải sẵn cơ sở mã của bạn. Codex có thể đọc và chỉnh sửa tệp, cũng như chạy các lệnh bao gồm khai thác kiểm thử, kiểm tra lỗi và kiểm tra kiểu. Thời gian để hoàn thành tác vụ thường từ ​​1 đến 30 phút tùy thuộc vào độ phức tạp, và bạn có thể theo dõi tiến trình của Codex theo thời gian thực.

Khi hoàn thành một tác vụ, Codex sẽ lưu thay đổi trong môi trường của mình. Codex cung cấp bằng chứng có thể xác minh về các hành động của mình thông qua việc trích dẫn nhật ký thiết bị đầu cuối và kết quả thử nghiệm, cho phép bạn theo dõi từng bước thực hiện trong quá trình hoàn thành tác vụ. Sau đó, bạn có thể xem lại kết quả, yêu cầu sửa đổi thêm, mở đề xuất thay đổi trong GitHub hoặc tích hợp trực tiếp các thay đổi vào môi trường cục bộ của bạn. Trong sản phẩm, bạn có thể định cấu hình môi trường Codex sao cho phù hợp nhất có thể với môi trường phát triển thực tế của mình.

Codex có thể được hướng dẫn bởi các tệp AGENTS.md nằm trong kho lưu trữ của bạn. Đây là các tệp văn bản, tương tự như README.md, mà qua đó bạn có thể thông báo cho Codex cách điều hướng cơ sở mã của mình, các lệnh cần chạy để thử nghiệm và cách tốt nhất để tuân thủ các thông lệ chuẩn của dự án. Giống như nhà phát triển là con người, các tác nhân Codex hoạt động tốt nhất khi được cung cấp môi trường phát triển đã cấu hình, thiết lập thử nghiệm đáng tin cậy và tài liệu hướng dẫn rõ ràng. 

Trong các đánh giá viết mã và so với các điểm chuẩn nội bộ, codex-1 cho thấy hiệu suất mạnh mẽ ngay cả khi không có tệp AGENTS.md hoặc khung tùy chỉnh.

Chúng tôi đã loại trừ 23 mẫu đã xác minh theo SWE-Bench mà không thể chạy trên cơ sở hạ tầng nội bộ của mình. codex-1 đã được thử nghiệm ở độ dài ngữ cảnh tối đa là 192k token và 'nỗ lực suy luận' ở mức trung bình, đây là cài đặt sẽ có trong sản phẩm hiện tại. Để biết chi tiết về các đánh giá o3, hãy xem tại đây.

Điểm chuẩn nội bộ của chúng tôi về tác vụ SWE là một tập hợp các tác vụ SWE nội bộ thực tế được tuyển chọn tại OpenAI.

Xây dựng các tác nhân an toàn và đáng tin cậy

Chúng tôi đang phát hành Codex dưới dạng bản xem trước nghiên cứu, phù hợp với chiến lược triển khai từng bước của chúng tôi. Chúng tôi ưu tiên tính bảo mật và minh bạch khi thiết kế Codex để người dùng có thể xác minh đầu ra - một biện pháp bảo vệ ngày càng quan trọng hơn trong bối cảnh các mô hình AI xử lý các tác vụ viết mã phức tạp hơn một cách độc lập và ngày càng có nhiều điều cần cân nhắc về an toàn. Người dùng có thể kiểm tra hoạt động của Codex thông qua trích dẫn, nhật ký thiết bị đầu cuối và kết quả thử nghiệm. Khi không chắc chắn hoặc gặp phải lỗi khi thử nghiệm, tác nhân Codex sẽ thông báo rõ ràng những vấn đề này, từ đó cho phép người dùng đưa ra quyết định sáng suốt về cách tiến hành. Người dùng vẫn cần phải xem xét và xác thực thủ công tất cả mã do tác nhân tạo ra trước khi tích hợp và thực thi.

Ảnh chụp màn hình quy trình xem xét mã với lớp phủ tệp thử nghiệm xác minh tên tệp được trích dẫn, cùng với bản tóm tắt và các thử nghiệm đạt yêu cầu trên nền màu xanh lam.
Ảnh chụp màn hình quy trình xem xét mã với lớp phủ thiết bị đầu cuối màu đen cho thấy một thử nghiệm đạt yêu cầu đối với tên tệp được trích dẫn; bản tóm tắt và tệp diff về thay đổi ‘Fix /diff error with special characters’ hiển thị trên nền màu xanh lam nhạt.

Điều chỉnh theo ưu tiên của con người

Mục tiêu chính khi huấn luyện codex-1 là điều chỉnh đầu ra theo sát các tiêu chuẩn và ưu tiên của con người khi viết mã. So với OpenAI o3, codex-1 luôn tạo ra các bản vá sạch hơn, sẵn sàng để con người xem xét ngay lập tức và tích hợp vào quy trình làm việc tiêu chuẩn.

Please fix the following issue in the astropy/astropy repository. Please resolve the issue in the problem below by editing and testing code files in your current code execution session. The repository is cloned in the /testbed folder. You must fully solve the problem for your answer to be considered correct. Problem statement:Modeling's `separability_matrix` does not compute separability correctly for nested CompoundModels Consider the following model: ```python from astropy.modeling import models as m from astropy.modeling.separable import separability_matrix cm = m.Linear1D(10) & m.Linear1D(5) ``` It's separability matrix as you might expect is a diagonal: ```python >>> separability_matrix(cm) array([[ True, False], [False, True]]) ``` If I make the model more complex: ```python >>> separability_matrix(m.Pix2Sky_TAN() & m.Linear1D(10) & m.Linear1D(5)) array([[ True, True, False, False], [ True, True, False, False], [False, False, True, False], [False, False, False, True]]) ``` The output matrix is again, as expected, the outputs and inputs to the linear models are separable and independent of each other. If however, I nest these compound models: ```python >>> separability_matrix(m.Pix2Sky_TAN() & cm) array([[ True, True, False, False], [ True, True, False, False], [False, False, True, True], [False, False, True, True]]) ``` Suddenly the inputs and outputs are no longer separable? This feels like a bug to me, but I might be missing something?
Codex
OpenAI o3

Ngăn ngừa lạm dụng

Việc bảo vệ chống lại các ứng dụng có hại của kỹ thuật phần mềm dựa trên AI, chẳng hạn như phát triển phần mềm độc hại, ngày càng trở nên quan trọng. Đồng thời, điều quan trọng là các biện pháp bảo vệ không cản trở quá mức các ứng dụng chính đáng và có lợi mà có thể tận dụng các kỹ thuật đôi khi cũng được dùng để phát triển phần mềm độc hại, chẳng hạn như kỹ thuật nhân hệ điều hành mức thấp.

Để cân bằng giữa tính an toàn và tiện dụng, Codex được huấn luyện để xác định và từ chối chính xác các yêu cầu nhắm đến việc phát triển phần mềm độc hại, đồng thời phân biệt rõ ràng và hỗ trợ các tác vụ chính đáng. Chúng tôi cũng đã tăng cường các khung chính sách và kết hợp các đánh giá an toàn nghiêm ngặt để củng cố các ranh giới này một cách hiệu quả. Chúng tôi đã công bố một phụ lục cho Thẻ hệ thống o3 để phản ánh những đánh giá này.

Thực thi bảo mật

Tác nhân Codex hoạt động hoàn toàn trong một vùng chứa an toàn và tách biệt trên đám mây. Trong quá trình thực hiện tác vụ, quyền truy cập internet sẽ bị vô hiệu hóa, khiến tác nhân chỉ tương tác với mã được cung cấp rõ ràng thông qua kho lưu trữ GitHub và các tác vụ phụ thuộc được cài đặt sẵn do người dùng cấu hình thông qua tập lệnh thiết lập. Tác nhân không thể truy cập vào các trang web bên ngoài, API hoặc các dịch vụ khác.

Các trường hợp sử dụng ban đầu

Các nhóm kỹ thuật tại OpenAI đã bắt đầu sử dụng Codex như một phần trong bộ công cụ hàng ngày của họ. Tác nhân này thường được các kỹ sư OpenAI sử dụng để chuyển giao các tác vụ lặp lại nhiều lần có phạm vi rõ ràng, như tái cấu trúc, đổi tên và viết quy trình thử nghiệm, mà có thể làm họ mất tập trung. Codex cũng hữu ích khi xây dựng các tính năng mới, nối các thành phần, sửa lỗi và soạn thảo tài liệu. Các nhóm đang xây dựng thói quen mới xoay quanh tác nhân này: phân loại các vấn đề khi làm việc, lập kế hoạch tác vụ vào đầu ngày và chuyển giao công việc cơ bản để tiếp tục hoạt động. Bằng cách giảm việc chuyển đổi ngữ cảnh và hiển thị những việc cần làm bị quên, Codex giúp các kỹ sư hoàn thành công việc nhanh hơn và tập trung vào những điều quan trọng nhất.

Trước khi phát hành, chúng tôi cũng đã làm việc với một nhóm nhỏ những người thử nghiệm bên ngoài để hiểu rõ hơn về hiệu suất của Codex với nhiều cơ sở mã, quy trình phát triển và nhóm khác nhau.

  • Cisco(mở trong cửa sổ mới) đang tìm hiểu cách Codex có thể giúp các nhóm kỹ sư của họ hiện thực hóa những ý tưởng tham vọng nhanh hơn. Trong vai trò đối tác thiết kế ban đầu, Cisco đang giúp định hình tương lai của Codex bằng cách đánh giá Codex cho các trường hợp sử dụng thực tế với toàn bộ danh mục sản phẩm của họ và cung cấp phản hồi cho nhóm OpenAI.
  • Temporal(mở trong cửa sổ mới) sử dụng Codex để đẩy nhanh quá trình phát triển tính năng, gỡ lỗi, viết và thực thi các quy trình kiểm tra, đồng thời tái cấu trúc các cơ sở mã lớn. Tác nhân này cũng giúp họ tập trung bằng cách chạy các tác vụ phức tạp ở chế độ nền, qua đó giúp các kỹ sư tập trung làm việc trong khi tăng tốc độ lặp lại.
  • Superhuman(mở trong cửa sổ mới) sử dụng Codex để tăng tốc các tác vụ nhỏ nhưng lặp lại nhiều lần như cải thiện phạm vi thử nghiệm và sửa lỗi tích hợp. Codex cũng giúp họ triển khai nhanh hơn bằng cách cho phép các quản lý sản phẩm đóng góp những thay đổi nhỏ về mã mà không cần nhờ đến kỹ sư, ngoại trừ bước xem xét mã.
  • Kodiak(mở trong cửa sổ mới) đang sử dụng Codex để giúp viết các công cụ gỡ lỗi, cải thiện phạm vi thử nghiệm và tái cấu trúc mã—nhằm đẩy nhanh quá trình phát triển Kodiak Driver, công nghệ lái xe tự động của họ. Codex cũng đã trở thành một công cụ tham chiếu có giá trị, giúp các kỹ sư hiểu được các phần còn lạ lẫm của ngăn xếp bằng cách khám phá ngữ cảnh liên quan và những thay đổi trước đây.

Dựa trên kinh nghiệm từ những người thử nghiệm ban đầu, chúng tôi khuyên bạn nên giao các tác vụ có phạm vi rõ ràng cho nhiều tác nhân cùng lúc và thử nghiệm nhiều loại tác vụ và lời nhắc khác nhau để khám phá các khả năng của mô hình một cách hiệu quả.

Các cập nhật với Codex CLI

Tháng trước, chúng tôi đã ra mắt Codex CLI, một tác nhân viết mã nguồn mở rút gọn chạy trên thiết bị đầu cuối của bạn. Nó đưa sức mạnh của các mô hình như o3 và o4-mini vào quy trình làm việc cục bộ của bạn, giúp bạn dễ dàng cộng tác với chúng để hoàn thành tác vụ nhanh hơn. 

Hôm nay, chúng tôi cũng phát hành phiên bản nhỏ hơn của codex-1, một phiên bản của o4-mini được thiết kế riêng để sử dụng trong Codex CLI. Mô hình mới này hỗ trợ quy trình làm việc nhanh hơn trong CLI và được tối ưu hóa cho việc hỏi đáp và chỉnh sửa mã có độ trễ thấp, đồng thời vẫn giữ nguyên các điểm mạnh về phong cách và tuân theo hướng dẫn. Hiện tại, chúng tôi phát hành dưới dạng mô hình mặc định trong Codex CLI và trong API dưới dạng codex-mini-latest. Ảnh chụp nhanh cơ bản sẽ được cập nhật thường xuyên khi chúng tôi tiếp tục cải thiện mô hình Codex-mini.

Chúng tôi cũng giúp bạn kết nối tài khoản nhà phát triển của mình với Codex CLI dễ dàng hơn rất nhiều. Thay vì tạo và định cấu hình token API theo cách thủ công, giờ đây bạn có thể đăng nhập bằng tài khoản ChatGPT và chọn tổ chức API mà bạn muốn sử dụng. Chúng tôi sẽ tự động tạo và định cấu hình khóa API cho bạn. Người dùng Plus và Pro đăng nhập vào Codex CLI bằng ChatGPT cũng có thể bắt đầu đổi $5 và $50 điểm credit API miễn phí vào cuối ngày hôm nay trong 30 ngày tới.

Khả năng sử dụng, mức giá và các hạn chế của Codex

Bắt đầu từ hôm nay, chúng tôi bắt đầu triển khai Codex cho người dùng ChatGPT Pro, Enterprise và Team trên toàn cầu, đồng thời sẽ sớm hỗ trợ người dùng Plus và Edu. Người dùng sẽ được truy cập thoải mái mà không mất thêm chi phí trong những tuần tới để bạn có thể khám phá những khả năng của Codex, sau đó chúng tôi sẽ triển khai quyền truy cập hạn chế và các lựa chọn giá linh hoạt cho phép bạn mua thêm quyền sử dụng theo nhu cầu. Chúng tôi có kế hoạch mở rộng quyền truy cập cho người dùng Plus và Edu trong thời gian ngắn.

Đối với các nhà phát triển xây dựng bằng codex-mini-latest, mô hình có sẵn trên API Responses và có giá $1,50 cho 1 triệu token đầu vào và $6 cho 1 triệu token đầu ra, với mức giảm %75 cho việc lưu trữ lời nhắc vào bộ nhớ tạm.

Codex vẫn đang trong giai đoạn đầu phát triển. Ở giai đoạn bản xem trước nghiên cứu, hiện tại tác nhân này thiếu các tính năng như nhập hình ảnh cho công việc với giao diện người dùng và khả năng điều chỉnh hành động của tác nhân trong quá trình hoạt động. Ngoài ra, việc ủy ​​quyền cho một tác nhân từ xa mất nhiều thời gian hơn so với chỉnh sửa tương tác, và có thể mất một thời gian để làm quen. Theo thời gian, việc tương tác với các tác nhân Codex sẽ ngày càng giống với trải nghiệm cộng tác không đồng bộ với các đồng nghiệp. Khi khả năng của mô hình được cải thiện, chúng tôi kỳ vọng các tác nhân sẽ xử lý các tác vụ phức tạp hơn trong thời gian dài hơn.

Kế hoạch tiếp theo

Chúng tôi hình dung ra một tương lai mà các nhà phát triển sẽ điều hành công việc họ muốn làm và phân công phần còn lại cho các tác nhân - nhờ đó làm việc nhanh hơn và hiệu quả hơn với AI. Để đạt được điều đó, chúng tôi đang xây dựng một bộ công cụ Codex hỗ trợ cả khả năng cộng tác theo thời gian thực và ủy quyền không đồng bộ. 

Việc cộng tác với các công cụ AI như Codex CLI và các công cụ khác đã nhanh chóng trở thành chuẩn mực trong ngành, giúp các nhà phát triển viết mã nhanh hơn. Nhưng chúng tôi tin rằng quy trình làm việc sử dụng nhiều tác nhân không đồng bộ được Codex giới thiệu trong ChatGPT sẽ trở thành phương pháp chính thức để các kỹ sư viết ra mã chất lượng cao.

Chúng tôi hình dung rằng cuối cùng, hai phương thức tương tác này - cộng tác theo thời gian thực và ủy quyền tác vụ - sẽ hội tụ với nhau. Các nhà phát triển sẽ cộng tác với các tác nhân AI trong các IDE và các công cụ hàng ngày của họ để đặt câu hỏi, nhận đề xuất và chuyển giao các tác vụ dài hơn, tất cả trong một quy trình làm việc thống nhất.

Trong tương lai, chúng tôi có kế hoạch phát triển các quy trình làm việc linh hoạt và giàu tính tương tác hơn cho tác nhân. Các nhà phát triển sẽ sớm có thể cung cấp hướng dẫn trong quá trình thực hiện tác vụ, cộng tác về các chiến lược triển khai và nhận thông tin cập nhật về tiến độ. Chúng tôi cũng hình dung rằng sẽ có sự tích hợp sâu hơn với các công cụ mà bạn đang sử dụng: hiện tại Codex kết nối với GitHub và bạn sẽ sớm có thể chỉ định tác vụ từ Codex CLI, ChatGPT Desktop hoặc thậm chí là các công cụ như trình theo dõi sự cố hoặc hệ thống CI.

Kỹ thuật phần mềm là một trong những ngành đầu tiên ghi nhận ​​sự gia tăng đáng kể về năng suất nhờ AI, từ đó mở ra nhiều khả năng mới cho cá nhân và nhóm nhỏ. Mặc dù chúng tôi lạc quan về những thành quả này, chúng tôi cũng đang hợp tác với các đối tác để hiểu rõ hơn về tác động của việc áp dụng rộng rãi tác nhân đối với quy trình làm việc của nhà phát triển, phát triển kỹ năng của mọi người, cấp độ kỹ năng và khu vực địa lý. 

Đây chỉ là sự khởi đầu và chúng tôi rất mong chờ xem bạn sẽ xây dựng được những gì với Codex.

Xem lại buổi phát trực tiếp

Phụ lục

Thông báo hệ thống

Chúng tôi chia sẻ thông báo hệ thống codex-1 để giúp các nhà phát triển hiểu được hành vi mặc định của mô hình và điều chỉnh Codex để hoạt động hiệu quả trong quy trình làm việc tùy chỉnh. Ví dụ: thông báo hệ thống codex-1 khuyến khích Codex chạy tất cả các thử nghiệm được đề cập trong tệp AGENTS.md, nhưng nếu bạn không có nhiều thời gian, bạn có thể yêu cầu Codex bỏ qua các thử nghiệm này.

1
# Instructions
2
- The user will provide a task.
3
- The task involves working with Git repositories in your current working directory.
4
- Wait for all terminal commands to be completed (or terminate them) before finishing.
5

6
# Git instructions
7
If completing the user's task requires writing or modifying files:
8
- Do not create new branches.
9
- Use git to commit your changes.
10
- If pre-commit fails, fix issues and retry.
11
- Check git status to confirm your commit. You must leave your worktree in a clean state.
12
- Only committed code will be evaluated.
13
- Do not modify or amend existing commits.
14

15
# AGENTS.md spec
16
- Containers often contain AGENTS.md files. These files can appear anywhere in the container's filesystem. Typical locations include `/`, `~`, and in various places inside of Git repos.
17
- These files are a way for humans to give you (the agent) instructions or tips for working within the container.
18
- Some examples might be: coding conventions, info about how code is organized, or instructions for how to run or test code.
19
- AGENTS.md files may provide instructions about PR messages (messages attached to a GitHub Pull Request produced by the agent, describing the PR). These instructions should be respected.
20
- Instructions in AGENTS.md files:
21
- The scope of an AGENTS.md file is the entire directory tree rooted at the folder that contains it.
22
- For every file you touch in the final patch, you must obey instructions in any AGENTS.md file whose scope includes that file.
23
- Instructions about code style, structure, naming, etc. apply only to code within the AGENTS.md file's scope, unless the file states otherwise.
24
- More-deeply-nested AGENTS.md files take precedence in the case of conflicting instructions.
25
- Direct system/developer/user instructions (as part of a prompt) take precedence over AGENTS.md instructions.
26
- AGENTS.md files need not live only in Git repos. For example, you may find one in your home directory.
27
- If the AGENTS.md includes programmatic checks to verify your work, you MUST run all of them and make a best effort to validate that the checks pass AFTER all code changes have been made.
28
- This applies even for changes that appear simple, i.e. documentation. You still must run all of the programmatic checks.
29

30
# Citations instructions
31
- If you browsed files or used terminal commands, you must add citations to the final response (not the body of the PR message) where relevant. Citations reference file paths and terminal outputs with the following formats:
32
1) `【F:<file_path>†L<line_start>(-L<line_end>)?】`
33
- File path citations must start with `F:`. `file_path` is the exact file path of the file relative to the root of the repository that contains the relevant text.
34
- `line_start` is the 1-indexed start line number of the relevant output within that file.
35
2) `【<chunk_id>†L<line_start>(-L<line_end>)?】`
36
- Where `chunk_id` is the chunk_id of the terminal output, `line_start` and `line_end` are the 1-indexed start and end line numbers of the relevant output within that chunk.
37
- Line ends are optional, and if not provided, line end is the same as line start, so only 1 line is cited.
38
- Ensure that the line numbers are correct, and that the cited file paths or terminal outputs are directly relevant to the word or clause before the citation.
39
- Do not cite completely empty lines inside the chunk, only cite lines that have content.
40
- Only cite from file paths and terminal outputs, DO NOT cite from previous pr diffs and comments, nor cite git hashes as chunk ids.
41
- Use file path citations that reference any code changes, documentation or files, and use terminal citations only for relevant terminal output.
42
- Prefer file citations over terminal citations unless the terminal output is directly relevant to the clauses before the citation, i.e. clauses on test results.
43
- For PR creation tasks, use file citations when referring to code changes in the summary section of your final response, and terminal citations in the testing section.
44
- For question-answering tasks, you should only use terminal citations if you need to programmatically verify an answer (i.e. counting lines of code). Otherwise, use file citations.

Tác giả

OpenAI