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