การเรียกใช้โค้ด

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

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

สภาพแวดล้อมการเรียกใช้โค้ดประกอบด้วยไลบรารีต่อไปนี้ altair, chess, cv2, matplotlib, mpmath, numpy, pandas, pdfminer, reportlab, seaborn, sklearn, statsmodels, striprtf, sympy และ tabulate คุณติดตั้งไลบรารีของคุณเองไม่ได้

เริ่มต้นใช้งานการเรียกใช้โค้ด

นอกจากนี้ยังมีโน้ตบุ๊กการเรียกใช้โค้ดให้ใช้งานด้วย

ส่วนนี้จะถือว่าคุณได้ทําตามขั้นตอนการตั้งค่าและการกําหนดค่าที่แสดงในคู่มือเริ่มต้นใช้งานเรียบร้อยแล้ว

เปิดใช้การเรียกใช้โค้ดในโมเดล

คุณสามารถเปิดใช้การเรียกใช้โค้ดในโมเดลได้ ดังที่แสดงที่นี่

from google import genai
from google.genai import types

client = genai.Client(api_key="GEMINI_API_KEY")

response = client.models.generate_content(
  model='gemini-2.0-flash',
  contents='What is the sum of the first 50 prime numbers? '
           'Generate and run code for the calculation, and make sure you get all 50.',
  config=types.GenerateContentConfig(
    tools=[types.Tool(
      code_execution=types.ToolCodeExecution
    )]
  )
)

ในโน้ตบุ๊ก คุณสามารถแสดงทุกอย่างในรูปแบบมาร์กดาวน์ได้ด้วยฟังก์ชันตัวช่วยนี้

def display_code_execution_result(response):
  for part in response.candidates[0].content.parts:
    if part.text is not None:
      display(Markdown(part.text))
    if part.executable_code is not None:
      code_html = f'<pre style="background-color: #BBBBEE;">{part.executable_code.code}</pre>' # Change code color
      display(HTML(code_html))
    if part.code_execution_result is not None:
      display(Markdown(part.code_execution_result.output))
    if part.inline_data is not None:
      display(Image(data=part.inline_data.data, format="png"))
    display(Markdown("---"))

display_code_execution_result(response)

เอาต์พุตอาจมีลักษณะดังนี้

โอเค ฉันต้องคำนวณผลรวมของจำนวนเฉพาะ 50 รายการแรก เราจะใช้สคริปต์ Python เพื่อสร้างจำนวนเฉพาะ 50 รายการแรก แล้วบวกผลลัพธ์

```python
def is_prime(n):
  """Checks if a number is prime."""
  if n <= 1:
    return False
  for i in range(2, int(n**0.5) + 1):
    if n % i == 0:
      return False
  return True

def sum_of_primes(n):
  """Calculates the sum of the first n prime numbers."""
  primes = []
  i = 2
  while len(primes) < n:
    if is_prime(i):
      primes.append(i)
    i += 1
  return sum(primes)

# Calculate the sum of the first 50 prime numbers
sum_of_first_50_primes = sum_of_primes(50)

print(f"The sum of the first 50 prime numbers is: {sum_of_first_50_primes}")
```

**Output:**

```
The sum of the first 50 prime numbers is: 5117
```

ใช้การเรียกใช้โค้ดในแชท

นอกจากนี้ คุณยังใช้การเรียกใช้โค้ดเป็นส่วนหนึ่งของแชทได้ด้วย

from google import genai
from google.genai import types

client = genai.Client(api_key="GEMINI_API_KEY")

chat = client.chats.create(
    model='gemini-2.0-flash',
    config=types.GenerateContentConfig(
      tools=[types.Tool(
        code_execution=types.ToolCodeExecution
      )]
    )
)

response = chat.send_message("Can you run some code to bogo-sort this list of numbers?: [2,34,1,65,4]")
display_code_execution_result(response)

การสนทนาอาจดำเนินต่อดังนี้

เราเข้าใจว่าคุณต้องการให้เราจัดเรียงรายการ [2, 34, 1, 65, 4] ด้วยการจัดเรียง BogoSort การจัดเรียง Bogo เป็นหนึ่งในอัลกอริทึมการจัดเรียงที่รู้จักกันดีว่ามีประสิทธิภาพต่ำ โดยระบบจะสับเปลี่ยนรายการซ้ำๆ จนกว่ารายการจะจัดเรียง เนื่องจากประสิทธิภาพต่ำมาก จึงใช้กับรายการขนาดใหญ่ไม่ได้

อย่างไรก็ตาม เราอาจเรียกใช้เวอร์ชันที่เรียบง่ายสำหรับการทำซ้ำจํานวนจำกัดเพื่อสาธิตกระบวนการ จะให้ดำเนินการต่อเลยไหม

response = chat.send_message("Yes, please create the code.")
display_code_execution_result(response)

โอเค เราจะดำเนินการกับฟังก์ชันที่จะสับเปลี่ยนรายการและตรวจสอบว่าจัดเรียงแล้วหรือยัง เราจะเรียกใช้ไม่เกิน 10 รอบ ...

อินพุต/เอาต์พุต (I/O)

ตั้งแต่ Gemini 2.0 Flash เป็นต้นไป การดำเนินการโค้ดจะรองรับอินพุตไฟล์และเอาต์พุตกราฟ เมื่อใช้ความสามารถในการรับและส่งออกข้อมูลแบบใหม่เหล่านี้ คุณจะอัปโหลดไฟล์ CSV และไฟล์ข้อความ ถามคําถามเกี่ยวกับไฟล์ และสร้างกราฟ Matplotlib เป็นส่วนหนึ่งของคําตอบได้

ราคา I/O

เมื่อใช้ I/O การดำเนินการของโค้ด ระบบจะเรียกเก็บเงินจากคุณสำหรับโทเค็นอินพุตและโทเค็นเอาต์พุต ดังนี้

โทเค็นอินพุต:

  • พรอมต์ของผู้ใช้

โทเค็นเอาต์พุต:

  • โค้ดที่โมเดลสร้างขึ้น
  • เอาต์พุตการดำเนินการของโค้ดในสภาพแวดล้อมโค้ด
  • ข้อมูลสรุปที่โมเดลสร้างขึ้น

รายละเอียด I/O

เมื่อทํางานกับ I/O ของการดำเนินการโค้ด โปรดคำนึงถึงรายละเอียดทางเทคนิคต่อไปนี้

  • รันไทม์สูงสุดของสภาพแวดล้อมโค้ดคือ 30 วินาที
  • หากสภาพแวดล้อมโค้ดสร้างข้อผิดพลาดขึ้น โมเดลอาจตัดสินใจที่จะสร้างเอาต์พุตโค้ดอีกครั้ง ซึ่งอาจเกิดขึ้นได้สูงสุด 5 ครั้ง
  • ขนาดอินพุตไฟล์สูงสุดถูกจํากัดโดยกรอบเวลาโทเค็นโมเดล ใน AI Studio ที่ใช้ Gemini Flash 2.0 ขนาดไฟล์อินพุตสูงสุดคือ 1 ล้านโทเค็น (ประมาณ 2 MB สำหรับไฟล์ข้อความของประเภทอินพุตที่รองรับ) หากคุณอัปโหลดไฟล์ที่มีขนาดใหญ่เกินไป AI Studio จะไม่อนุญาตให้คุณส่งไฟล์
เลี้ยวเดียว แบบ 2 ทิศทาง (Multimodal Live API)
รุ่นที่รองรับ Gemini 2.0 ทุกรุ่น เฉพาะโมเดลทดลองของ Flash เท่านั้น
ประเภทอินพุตไฟล์ที่รองรับ .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts .png, .jpeg, .csv, .xml, .cpp, .java, .py, .js, .ts
ไลบรารีผังงานที่รองรับ Matplotlib Matplotlib
การใช้เครื่องมืออเนกประสงค์ ไม่ ใช่

การเรียกเก็บเงิน

โดยไม่มีค่าใช้จ่ายเพิ่มเติมสำหรับการเปิดใช้การเรียกใช้โค้ดจาก Gemini API ระบบจะเรียกเก็บเงินจากคุณในอัตราปัจจุบันของโทเค็นอินพุตและเอาต์พุตตามรูปแบบ Gemini ที่คุณใช้

ข้อมูลอื่นๆ ที่คุณควรทราบเกี่ยวกับการเรียกเก็บเงินสําหรับการเรียกใช้โค้ดมีดังนี้

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

รูปแบบการเรียกเก็บเงินแสดงในแผนภาพต่อไปนี้

รูปแบบการเรียกเก็บเงินสําหรับการเรียกใช้โค้ด

  • ระบบจะเรียกเก็บเงินจากคุณในอัตราปัจจุบันของโทเค็นอินพุตและเอาต์พุตตามรูปแบบ Gemini ที่คุณใช้
  • หาก Gemini ใช้การเรียกใช้โค้ดเมื่อสร้างคำตอบ ระบบจะติดป้ายกำกับพรอมต์ต้นฉบับ โค้ดที่สร้างขึ้น และผลลัพธ์ของโค้ดที่เรียกใช้ว่าเป็นโทเค็นระดับกลาง และระบบจะเรียกเก็บเงินเป็นโทเค็นอินพุต
  • จากนั้น Gemini จะสร้างข้อมูลสรุปและแสดงโค้ดที่สร้างขึ้น ผลลัพธ์ของโค้ดที่เรียกใช้ และข้อมูลสรุปขั้นสุดท้าย ระบบจะเรียกเก็บเงินตามโทเค็นเอาต์พุต
  • Gemini API จะรวมจำนวนโทเค็นกลางในการตอบกลับของ API เพื่อให้คุณทราบว่าเหตุใดคุณจึงได้รับโทเค็นอินพุตเพิ่มเติมนอกเหนือจากพรอมต์แรก

ข้อจำกัด

  • โดยโมเดลจะสร้างและเรียกใช้โค้ดได้เท่านั้น แต่ไม่สามารถแสดงรายการอื่นๆ เช่น ไฟล์สื่อ
  • ในบางกรณี การเปิดใช้การเรียกใช้โค้ดอาจทําให้เอาต์พุตของโมเดลในด้านอื่นๆ ถดถอย (เช่น การเขียนเรื่องราว)
  • ความสามารถของโมเดลต่างๆ ในการใช้การเรียกใช้โค้ดให้สําเร็จนั้นแตกต่างกันไป