zalo
Chat ngay

Cách định dạng đầu vào cho mô hình ChatGPT

ChatGPT được hỗ trợ bởi gpt-3.5-turbo và gpt-4, các mô hình tiên tiến nhất của OpenAI

Xem thêm: mua tài khoản ChatGPT Plus chính hãng giá rẻ

Bạn có thể xây dựng ứng dụng của riêng mình bằng gpt-3.5-turbo hoặc gpt-4 sử dụng API OpenAI.

Các mô hình trò chuyện lấy một loạt tin nhắn làm đầu vào và trả về tin nhắn do AI viết làm đầu ra.

Hướng dẫn này minh họa định dạng trò chuyện bằng một số lệnh gọi API ví dụ.

Nhập thư viện openai

# if needed, install and/or upgrade to the latest version of the OpenAI Python library
%pip install --upgrade openai
# import the OpenAI Python library for calling the OpenAI API
from openai import OpenAI
import os
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY", ""))

Một ví dụ về cuộc gọi API hoàn thành trò chuyện

Tham số cuộc gọi API hoàn thành trò chuyện, Bắt buộc

  • model: tên của mô hình bạn muốn sử dụng (ví dụ: gpt-3.5-turbogpt-4gpt-3.5-turbo-16k-1106)
  • messages: danh sách các đối tượng tin nhắn, trong đó mỗi đối tượng có hai trường bắt buộc:
    • role: vai trò của người đưa tin (hoặc systemuserassistanthoặc tool)
    • content: nội dung của tin nhắn (ví dụ, Write me a beautiful poem)

Tin nhắn cũng có thể chứa một nametrường tùy chọn, cung cấp cho người nhắn tin một cái tên. Ví dụ, example-userAliceBlackbeardBot. Tên không được chứa khoảng trắng.

Không bắt buộc

  • frequency_penalty: Xử phạt các mã thông báo dựa trên tần suất của chúng, giảm sự lặp lại.
  • logit_bias: Sửa đổi khả năng xuất hiện của các mã thông báo được chỉ định với các giá trị sai lệch.
  • logprobs: Trả về xác suất logarit của mã thông báo đầu ra nếu đúng.
  • top_logprobs: Chỉ định số lượng mã thông báo có khả năng trả về cao nhất ở mỗi vị trí.
  • max_tokens: Thiết lập số lượng mã thông báo tối đa được tạo ra khi hoàn tất trò chuyện.
  • n: Tạo ra số lượng lựa chọn hoàn thành trò chuyện cụ thể cho mỗi mục nhập.
  • presence_penalty: Xử phạt các mã thông báo mới dựa trên sự hiện diện của chúng trong văn bản.
  • response_format: Chỉ định định dạng đầu ra, ví dụ: chế độ JSON.
  • seed: Đảm bảo lấy mẫu xác định với hạt giống được chỉ định.
  • stop: Chỉ định tối đa 4 chuỗi trong đó API sẽ ngừng tạo mã thông báo.
  • stream: Gửi tin nhắn delta một phần khi có mã thông báo.
  • temperature: Đặt nhiệt độ lấy mẫu giữa 0 và 2.
  • top_p: Sử dụng lấy mẫu hạt nhân; xem xét các mã thông báo có khối lượng xác suất top_p.
  • tools: Liệt kê các hàm mà mô hình có thể gọi.
  • tool_choice: Kiểm soát các lệnh gọi hàm của mô hình (none/auto/function).
  • user: Mã định danh duy nhất để giám sát người dùng cuối và phát hiện lạm dụng.

Tính đến tháng 1 năm 2024, bạn cũng có thể tùy chọn gửi danh sách functionscho GPT biết liệu nó có thể tạo JSON để đưa vào hàm hay không. Để biết chi tiết, hãy xem tài liệu , tham chiếu API hoặc hướng dẫn Cookbook Cách gọi hàm bằng mô hình trò chuyện .

Thông thường, cuộc trò chuyện sẽ bắt đầu bằng một thông báo hệ thống hướng dẫn trợ lý cách ứng xử, tiếp theo là các thông báo xen kẽ giữa người dùng và trợ lý, nhưng bạn không bắt buộc phải tuân theo định dạng này.

Hãy cùng xem một ví dụ về lệnh gọi API trò chuyện để xem định dạng trò chuyện hoạt động như thế nào trong thực tế.

# Example OpenAI Python library request
MODEL = "gpt-3.5-turbo"
response = client.chat.completions.create( model=MODEL, messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Knock knock."}, {"role": "assistant", "content": "Who's there?"}, {"role": "user", "content": "Orange."}, ], temperature=0,
)
print(json.dumps(json.loads(response.model_dump_json()), indent=4))
{ "id": "chatcmpl-8dee9DuEFcg2QILtT2a6EBXZnpirM", "choices": [ { "finish_reason": "stop", "index": 0, "logprobs": null, "message": { "content": "Orange là ai?", "role": "assistant", "function_call": null, "tool_calls": null } } ], "created": 1704461729, "model": "gpt-3.5-turbo-0613", "object": "chat.completion", "system_fingerprint": null, "usage": { "completion_tokens": 3, "prompt_tokens": 35, "total_tokens": 38 } }

Như bạn có thể thấy, đối tượng phản hồi có một số trường:

  • id: ID của yêu cầu
  • choices: danh sách các đối tượng hoàn thành (chỉ một, trừ khi bạn đặt lớn hơn 1)
    • finish_reason: lý do mô hình ngừng tạo văn bản ( stophoặc lengthnếu max_tokensđạt đến giới hạn)
    • index: Chỉ số của lựa chọn trong danh sách các lựa chọn.
    • logprobs: Ghi lại thông tin xác suất cho sự lựa chọn.
    • message: đối tượng tin nhắn được tạo ra bởi mô hình
      • content: nội dung tin nhắn
      • role: Vai trò của tác giả của tin nhắn này.
      • tool_calls: Các lệnh gọi công cụ được tạo ra bởi mô hình, chẳng hạn như lệnh gọi hàm. nếu các công cụ được cung cấp
  • created: dấu thời gian của yêu cầu
  • model: tên đầy đủ của mô hình được sử dụng để tạo phản hồi
  • object: loại đối tượng được trả về (ví dụ: chat.completion)
  • system_fingerprint:Dấu vân tay này biểu thị cấu hình phụ trợ mà mô hình chạy cùng.
  • usage: số lượng mã thông báo được sử dụng để tạo ra các phản hồi, đếm lời nhắc, hoàn thành và tổng số

Chỉ trích xuất câu trả lời bằng:

response.choices[0].message.content
'Cam là ai?'

Ngay cả những nhiệm vụ không dựa trên hội thoại cũng có thể phù hợp với định dạng trò chuyện, bằng cách đưa hướng dẫn vào tin nhắn đầu tiên của người dùng.

Ví dụ, để yêu cầu mô hình giải thích về lập trình không đồng bộ theo phong cách của cướp biển Blackbeard, chúng ta có thể cấu trúc cuộc trò chuyện như sau:

# example with a system message
response = client.chat.completions.create( model=MODEL, messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Explain asynchronous programming in the style of the pirate Blackbeard."}, ], temperature=0,
)
print(response.choices[0].message.content)
Arr, bạn tôi ơi! Để tôi kể cho bạn nghe một câu chuyện về lập trình không đồng bộ, theo phong cách của tên cướp biển đáng sợ Blackbeard!
Hãy tưởng tượng điều này, các bạn thân mến. Trong đại dương lập trình bao la, có những lúc bạn cần thực hiện nhiều tác vụ cùng một lúc. Nhưng đừng sợ, vì lập trình không đồng bộ sẽ ở đây để cứu vãn tình hình!
Bạn thấy đấy, trong lập trình truyền thống, bạn phải đợi một tác vụ được thực hiện xong trước khi chuyển sang tác vụ tiếp theo. Nhưng với lập trình không đồng bộ, bạn có thể xử lý nhiều tác vụ cùng một lúc, giống như một tên cướp biển làm nhiều tác vụ cùng lúc trên biển cả!
Thay vì chờ một tác vụ được hoàn thành, bạn có thể gửi nó đi trên hành trình riêng của nó, trong khi bạn chuyển sang tác vụ tiếp theo. Nó giống như có một phi hành đoàn gồm những thủy thủ đáng tin cậy, mỗi người tự lo nhiệm vụ của mình, mà không cần chờ đợi những người khác. Bây giờ, bạn có thể tự hỏi, phép thuật này hoạt động như thế nào? Vâng, bạn tôi ơi, tất cả đều liên quan đến các lệnh gọi lại và lời hứa. Khi bạn gửi một nhiệm vụ, bạn đang đính kèm một hàm gọi lại vào đó. Điều này giống như để lại một thông điệp trong một cái chai, cho nhiệm vụ biết phải làm gì khi nó hoàn thành. Trong khi nhiệm vụ đang tự trôi đi, bạn có thể chuyển sang nhiệm vụ tiếp theo mà không lãng phí thời gian quý báu nào. Và khi nhiệm vụ đầu tiên được hoàn thành, nó sẽ gửi một tín hiệu trở lại cho bạn, cho bạn biết nó đã hoàn thành. Sau đó, bạn có thể xử lý hàm gọi lại, giống như mở chai và đọc thông điệp bên trong. Nhưng hãy đợi, vẫn còn nhiều hơn thế nữa! Với những lời hứa, bạn có thể thực hiện những sắp xếp thậm chí còn cầu kỳ hơn. Thay vì các cuộc gọi lại, bạn đang hứa rằng nhiệm vụ sẽ được hoàn thành. Nó giống như một hợp đồng giữa bạn và nhiệm vụ, thề rằng nó sẽ được thực hiện. Bạn có thể đính kèm nhiều lời hứa vào một nhiệm vụ, hứa hẹn những kết quả khác nhau. Và khi nhiệm vụ hoàn thành, nó sẽ thực hiện lời hứa, cho bạn biết nó đã hoàn thành. Sau đó, bạn có thể xử lý việc thực hiện, giống như thu thập phần thưởng cho cuộc phiêu lưu cướp biển của bạn!
Vì vậy, các bạn thân mến, đó là câu chuyện về lập trình không đồng bộ, được kể theo phong cách của tên cướp biển đáng sợ Blackbeard! Với các lệnh gọi lại và lời hứa, bạn có thể xử lý nhiều nhiệm vụ cùng một lúc, giống như một tên cướp biển chinh phục bảy vùng biển!
# example without a system message
response = client.chat.completions.create( model=MODEL, messages=[ {"role": "user", "content": "Explain asynchronous programming in the style of the pirate Blackbeard."}, ], temperature=0,
)
print(response.choices[0].message.content)
Arr, các bạn thân mến! Hãy tập hợp lại và lắng nghe, vì tôi sẽ kể cho các bạn nghe về nghệ thuật lập trình bất đồng bộ bí ẩn, theo phong cách của tên cướp biển đáng sợ Blackbeard!
Bây giờ, các bạn thấy đấy, trong thế giới lập trình, có những lúc chúng ta cần thực hiện các nhiệm vụ mất rất nhiều thời gian để hoàn thành. Những nhiệm vụ này có thể liên quan đến việc lấy dữ liệu từ sâu trong internet hoặc thực hiện các phép tính phức tạp khiến ngay cả Davy Jones cũng phải gãi đầu.
Ngày xưa, chúng tôi, những tên cướp biển, thường kiên nhẫn chờ từng nhiệm vụ hoàn thành trước khi chuyển sang nhiệm vụ tiếp theo. Nhưng như vậy là lãng phí thời gian quý báu, các bạn thân mến! Chúng tôi là những tên cướp biển, luôn tìm cách để hiệu quả hơn và cướp được nhiều chiến lợi phẩm hơn!
Đó chính là lúc lập trình bất đồng bộ phát huy tác dụng, các bạn ạ. Đó là cách giải quyết nhiều nhiệm vụ cùng một lúc, mà không cần chờ từng nhiệm vụ hoàn thành trước khi chuyển sang nhiệm vụ tiếp theo. Giống như có một đội quân vô lại làm việc trên nhiều nhiệm vụ khác nhau cùng lúc, trong khi bạn giám sát toàn bộ hoạt động.
Bạn thấy đấy, trong lập trình không đồng bộ, chúng ta chia nhỏ các nhiệm vụ của mình thành các phần nhỏ hơn được gọi là "coroutine". Mỗi coroutine giống như một tên cướp biển riêng biệt, làm nhiệm vụ của riêng mình. Khi một coroutine bắt đầu công việc của mình, nó không đợi nhiệm vụ hoàn thành trước khi chuyển sang nhiệm vụ tiếp theo. Thay vào đó, nó chuyển sang nhiệm vụ tiếp theo, để nhiệm vụ đầu tiên tiếp tục ở chế độ nền.
Bây giờ, bạn có thể tự hỏi, "Nhưng Râu Đen, làm sao chúng ta biết khi nào một nhiệm vụ được hoàn thành nếu chúng ta không chờ đợi nó?" Ồ, các bạn thân mến, đó là nơi phép thuật của các lệnh gọi lại và lời hứa xuất hiện!
Khi một coroutine bắt đầu công việc của mình, nó sẽ đính kèm một lệnh gọi lại hoặc một lời hứa vào đó. Điều này giống như để lại một tin nhắn trong một cái chai, cho coroutine biết phải làm gì khi nó hoàn thành. Vì vậy, trong khi coroutine đang làm việc, phần còn lại của phi hành đoàn sẽ chuyển sang các nhiệm vụ khác, cướp bóc nhiều chiến lợi phẩm hơn trên đường đi.
Khi một coroutine hoàn thành nhiệm vụ của mình, nó sẽ gửi tín hiệu đến lệnh gọi lại hoặc thực hiện lời hứa, cho phần còn lại của phi hành đoàn biết rằng nhiệm vụ đã hoàn thành. Sau đó, phi hành đoàn có thể tập hợp lại và xử lý kết quả của nhiệm vụ đã hoàn thành, ăn mừng chiến thắng và đếm chiến lợi phẩm của họ.
Vì vậy, các bạn thân mến, lập trình không đồng bộ giống như có một phi hành đoàn cướp biển làm việc trên nhiều nhiệm vụ cùng một lúc, mà không cần đợi từng nhiệm vụ hoàn thành trước khi chuyển sang nhiệm vụ khác. Đó là một cách để hiệu quả hơn, cướp bóc nhiều chiến lợi phẩm hơn và chinh phục biển cả mênh mông của lập trình!
Bây giờ, hãy căng buồm, các bạn của tôi, và nắm lấy sức mạnh của lập trình không đồng bộ như những tên cướp biển thực thụ của thế giới kỹ thuật số! Arr!

Mẹo hướng dẫn gpt-3.5-turbo-0301

Các phương pháp hay nhất để hướng dẫn mô hình có thể thay đổi tùy theo phiên bản mô hình. Lời khuyên sau đây áp dụng cho gpt-3.5-turbo-0301và có thể không áp dụng cho các mô hình trong tương lai.

Tin nhắn hệ thống

Có thể sử dụng thông báo hệ thống để giới thiệu cho trợ lý những tính cách hoặc hành vi khác nhau.

Lưu ý rằng gpt-3.5-turbo-0301 thường không chú ý nhiều đến thông báo hệ thống như gpt-4-0314 hoặc gpt-3.5-turbo-0613. Do đó, đối với gpt-3.5-turbo-0301, chúng tôi khuyên bạn nên đặt các hướng dẫn quan trọng vào thông báo của người dùng. Một số nhà phát triển đã thành công khi liên tục di chuyển thông báo hệ thống gần cuối cuộc trò chuyện để giữ sự chú ý của mô hình không bị trôi đi khi cuộc trò chuyện kéo dài hơn.

# An example of a system message that primes the assistant to explain concepts in great depth
response = client.chat.completions.create( model=MODEL, messages=[ {"role": "system", "content": "You are a friendly and helpful teaching assistant. You explain concepts in great depth using simple terms, and you give examples to help people learn. At the end of each explanation, you ask a question to check for understanding"}, {"role": "user", "content": "Can you explain how fractions work?"}, ], temperature=0,
)
print(response.choices[0].message.content)
Tất nhiên rồi! Phân số là một cách để biểu diễn các phần của một tổng thể. Chúng bao gồm hai số: tử số và mẫu số. Tử số cho bạn biết bạn có bao nhiêu phần, và mẫu số cho bạn biết có bao nhiêu phần bằng nhau tạo nên tổng thể.
Chúng ta hãy lấy một ví dụ để hiểu rõ hơn về điều này. Hãy tưởng tượng bạn có một chiếc bánh pizza được chia thành 8 phần bằng nhau. Nếu bạn ăn 3 phần, bạn có thể biểu diễn dưới dạng phân số 3/8. Ở đây, tử số là 3 vì bạn đã ăn 3 phần, và mẫu số là 8 vì toàn bộ chiếc bánh pizza được chia thành 8 phần.
Phân số cũng có thể được sử dụng để biểu diễn các số nhỏ hơn 1. Ví dụ, nếu bạn ăn một nửa chiếc bánh pizza, bạn có thể viết là 1/2. Ở đây, tử số là 1 vì bạn đã ăn một phần, và mẫu số là 2 vì toàn bộ chiếc bánh pizza được chia thành 2 phần bằng nhau.
Bây giờ, chúng ta hãy nói về các phân số tương đương. Các phân số tương đương là các phân số khác nhau biểu diễn cùng một lượng. Ví dụ, 1/2 và 2/4 là các phân số tương đương vì cả hai đều biểu diễn một nửa của một cái gì đó. Để tìm các phân số tương đương, bạn có thể nhân hoặc chia cả tử số và mẫu số cho cùng một số.
Đây là một câu hỏi để kiểm tra sự hiểu biết của bạn: Nếu bạn có một chiếc bánh được chia thành 12 phần bằng nhau và bạn ăn 4 phần, thì bạn đã ăn bao nhiêu phần của chiếc bánh?
# An example of a system message that primes the assistant to give brief, to-the-point answers
response = client.chat.completions.create( model=MODEL, messages=[ {"role": "system", "content": "You are a laconic assistant. You reply with brief, to-the-point answers with no elaboration."}, {"role": "user", "content": "Can you explain how fractions work?"}, ], temperature=0,
)
print(response.choices[0].message.content)
Phân số biểu diễn các phần của một tổng thể. Chúng có tử số (số ở trên) và mẫu số (số ở dưới).

Nhắc nhở ít lần

Trong một số trường hợp, việc cho mô hình thấy những gì bạn muốn sẽ dễ hơn là nói cho mô hình biết những gì bạn muốn.

Một cách để cho mô hình thấy những gì bạn muốn là sử dụng các thông điệp ví dụ giả mạo.

Ví dụ:

# An example of a faked few-shot conversation to prime the model into translating business jargon to simpler speech
response = client.chat.completions.create( model=MODEL, messages=[ {"role": "system", "content": "You are a helpful, pattern-following assistant."}, {"role": "user", "content": "Help me translate the following corporate jargon into plain English."}, {"role": "assistant", "content": "Sure, I'd be happy to!"}, {"role": "user", "content": "New synergies will help drive top-line growth."}, {"role": "assistant", "content": "Things working well together will increase revenue."}, {"role": "user", "content": "Let's circle back when we have more bandwidth to touch base on opportunities for increased leverage."}, {"role": "assistant", "content": "Let's talk later when we're less busy about how to do better."}, {"role": "user", "content": "This late pivot means we don't have time to boil the ocean for the client deliverable."}, ], temperature=0,
)
print(response.choices[0].message.content)
Sự thay đổi hướng đi đột ngột này có nghĩa là chúng tôi không có đủ thời gian để hoàn thành toàn bộ dự án cho khách hàng.

Để giúp làm rõ rằng các tin nhắn mẫu không phải là một phần của cuộc trò chuyện thực tế và không nên được mô hình tham chiếu lại, bạn có thể thử đặt trường nametin systemnhắn thành example_uservà example_assistant.

Biến đổi ví dụ vài bức ảnh ở trên, chúng ta có thể viết:

# The business jargon translation example, but with example names for the example messages
response = client.chat.completions.create( model=MODEL, messages=[ {"role": "system", "content": "You are a helpful, pattern-following assistant that translates corporate jargon into plain English."}, {"role": "system", "name":"example_user", "content": "New synergies will help drive top-line growth."}, {"role": "system", "name": "example_assistant", "content": "Things working well together will increase revenue."}, {"role": "system", "name":"example_user", "content": "Let's circle back when we have more bandwidth to touch base on opportunities for increased leverage."}, {"role": "system", "name": "example_assistant", "content": "Let's talk later when we're less busy about how to do better."}, {"role": "user", "content": "This late pivot means we don't have time to boil the ocean for the client deliverable."}, ], temperature=0,
)
print(response.choices[0].message.content)
Sự thay đổi hướng đi đột ngột này có nghĩa là chúng tôi không có đủ thời gian để hoàn thành toàn bộ dự án cho khách hàng.

Không phải mọi nỗ lực bắt chuyện đều thành công ngay từ đầu.

Nếu những lần thử đầu tiên của bạn thất bại, đừng ngại thử nghiệm nhiều cách khác nhau để chuẩn bị hoặc điều chỉnh mô hình.

Ví dụ, một nhà phát triển đã phát hiện ra sự gia tăng độ chính xác khi họ chèn một thông báo cho người dùng có nội dung "Cho đến nay làm tốt lắm, mọi thứ đều hoàn hảo" để giúp điều chỉnh mô hình nhằm cung cấp phản hồi chất lượng cao hơn.

Để biết thêm ý tưởng về cách nâng cao độ tin cậy của các mô hình, hãy cân nhắc đọc hướng dẫn của chúng tôi về các kỹ thuật để tăng độ tin cậy . Hướng dẫn này được viết cho các mô hình không trò chuyện, nhưng nhiều nguyên tắc của nó vẫn áp dụng được.

Đếm token

Khi bạn gửi yêu cầu, API sẽ chuyển đổi các thông báo thành một chuỗi mã thông báo.

Số lượng mã thông báo được sử dụng ảnh hưởng đến:

  • chi phí của yêu cầu
  • thời gian cần thiết để tạo ra phản hồi
  • khi câu trả lời bị cắt khỏi việc đạt đến giới hạn mã thông báo tối đa (4.096 cho gpt-3.5-turbohoặc 8.192 cho gpt-4)

Bạn có thể sử dụng hàm sau để đếm số lượng mã thông báo mà danh sách tin nhắn sẽ sử dụng.

Lưu ý rằng cách chính xác mà các mã thông báo được đếm từ tin nhắn có thể thay đổi tùy theo từng mô hình. Hãy coi số đếm từ hàm bên dưới là ước tính, không phải là sự đảm bảo vĩnh cửu.

Đặc biệt, các yêu cầu sử dụng hàm tùy chọn đầu vào sẽ sử dụng thêm mã thông báo ngoài các ước tính được tính toán bên dưới.

Đọc thêm về cách đếm token trong Cách đếm token bằng tiktoken .

import tiktoken
def num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613"): """Return the number of tokens used by a list of messages.""" try: encoding = tiktoken.encoding_for_model(model) except KeyError: print("Warning: model not found. Using cl100k_base encoding.") encoding = tiktoken.get_encoding("cl100k_base") if model in { "gpt-3.5-turbo-0613", "gpt-3.5-turbo-16k-0613", "gpt-4-0314", "gpt-4-32k-0314", "gpt-4-0613", "gpt-4-32k-0613", }: tokens_per_message = 3 tokens_per_name = 1 elif model == "gpt-3.5-turbo-0301": tokens_per_message = 4 # every message follows <|start|>{role/name}\n{content}<|end|>\n tokens_per_name = -1 # if there's a name, the role is omitted elif "gpt-3.5-turbo" in model: print("Warning: gpt-3.5-turbo may update over time. Returning num tokens assuming gpt-3.5-turbo-0613.") return num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613") elif "gpt-4" in model: print("Warning: gpt-4 may update over time. Returning num tokens assuming gpt-4-0613.") return num_tokens_from_messages(messages, model="gpt-4-0613") else: raise NotImplementedError( f"""num_tokens_from_messages() is not implemented for model {model}.""" ) num_tokens = 0 for message in messages: num_tokens += tokens_per_message for key, value in message.items(): num_tokens += len(encoding.encode(value)) if key == "name": num_tokens += tokens_per_name num_tokens += 3 # every reply is primed with <|start|>assistant<|message|> return num_tokens
# let's verify the function above matches the OpenAI API response
example_messages = [ { "role": "system", "content": "You are a helpful, pattern-following assistant that translates corporate jargon into plain English.", }, { "role": "system", "name": "example_user", "content": "New synergies will help drive top-line growth.", }, { "role": "system", "name": "example_assistant", "content": "Things working well together will increase revenue.", }, { "role": "system", "name": "example_user", "content": "Let's circle back when we have more bandwidth to touch base on opportunities for increased leverage.", }, { "role": "system", "name": "example_assistant", "content": "Let's talk later when we're less busy about how to do better.", }, { "role": "user", "content": "This late pivot means we don't have time to boil the ocean for the client deliverable.", },
]
for model in [ # "gpt-3.5-turbo-0301", # "gpt-4-0314", # "gpt-4-0613", "gpt-3.5-turbo-1106", "gpt-3.5-turbo", "gpt-4", "gpt-4-1106-preview", ]: print(model) # example token count from the function defined above print(f"{num_tokens_from_messages(example_messages, model)} prompt tokens counted by num_tokens_from_messages().") # example token count from the OpenAI API response = client.chat.completions.create(model=model, messages=example_messages, temperature=0, max_tokens=1) token = response.usage.prompt_tokens print(f'{token} prompt tokens counted by the OpenAI API.') print()
gpt-3.5-turbo-1106 Cảnh báo: gpt-3.5-turbo có thể cập nhật theo thời gian. Trả về num token giả sử gpt-3.5-turbo-0613. 129 token nhắc nhở được đếm bởi num_tokens_from_messages(). 129 token nhắc nhở được đếm bởi OpenAI API.
gpt-3.5-turbo Cảnh báo: gpt-3.5-turbo có thể cập nhật theo thời gian. Trả về num token giả sử gpt-3.5-turbo-0613. 129 token nhắc nhở được đếm bởi num_tokens_from_messages(). 129 token nhắc nhở được đếm bởi OpenAI API.
gpt-4 Cảnh báo: gpt-4 có thể cập nhật theo thời gian. Trả về num token giả sử gpt-4-0613. 129 token nhắc nhở được đếm bởi num_tokens_from_messages(). 129 token nhắc nhở được đếm bởi OpenAI API.
gpt-4-1106-preview Cảnh báo: gpt-4 có thể cập nhật theo thời gian. Trả về num token giả định gpt-4-0613. 129 mã thông báo nhắc nhở được đếm bởi num_tokens_from_messages(). 129 mã thông báo nhắc nhở được đếm bởi OpenAI API.
Hot Deal

Họ tên (*)

Số điện thoại (*)

Email (*)

Dịch vụ

Đăng ký để nhận bản tin mới nhất !