CLI Aracılarında Akış Çıktısı
Uçbirim arabirimlerinde akış halinde gelen belirteçleri karakter karakter yazdırma.
CLI Aracılarında Akış Çıktısı, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.
CLI Ajanları için Akış Neden Önemlidir
Akış olmadan CLI ajanınız, LLM yanıtının tamamı hazır olana kadar hiçbir şey yazdırmaz; bu işlem 5-30 saniye sürebilir. Kullanıcılar programın çöküp çökmediğini merak ederek boş bir uçbirime bakar.
Akış sayesinde belirteçler oluşturuldukça görünür ve anında geri bildirim sağlanarak çok daha iyi bir deneyim sunulur.
OpenAI SDK'sinde Akışı Etkinleştirme
chat.completions.create() işlevine stream=True iletin. Çağrı, eksiksiz bir yanıt nesnesi yerine bir oluşturucu döndürür. Parçalar geldikçe işlemek için bu oluşturucu üzerinde yineleme yapın.
import openai
client = openai.OpenAI(api_key='YOUR_API_KEY')
stream = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': 'Explain Python generators in 3 sentences.'}],
stream=True # <-- enable streaming
)
# Each chunk arrives as it is generated
for chunk in stream:
delta = chunk.choices[0].delta
if delta.content:
print(delta.content, end='', flush=True)
print() # newline after the response is completeprint() ve sys.stdout.write() Karşılaştırması
Akış sırasında print(text, end='', flush=True) veya ardından sys.stdout.flush() gelen sys.stdout.write(text) kullanın. flush=True olmadan Python çıktıyı arabelleğe alıp tek seferde yazdırabilir; bu da akışın amacını boşa çıkarır.
import sys
import openai
client = openai.OpenAI(api_key='YOUR_API_KEY')
def stream_to_terminal(messages: list):
stream = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
stream=True
)
full_response = ''
for chunk in stream:
token = chunk.choices[0].delta.content or ''
full_response += token
# Option 1: print with flush
print(token, end='', flush=True)
# Option 2: sys.stdout.write + flush
# sys.stdout.write(token)
# sys.stdout.flush()
print() # final newline
return full_responseAkış Sırasında Eksiksiz Yanıtı Toplama
Akış tamamlandıktan sonra depolama, daha ileri işleme veya görüntüleme için genellikle yanıt metninin tamamına ihtiyaç duyarsınız. Belirteçleri yazdırırken bir dizede biriktirin.
import openai
client = openai.OpenAI(api_key='YOUR_API_KEY')
def stream_and_collect(messages: list) -> str:
full_text = ''
print('Agent: ', end='', flush=True)
stream = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
stream=True
)
for chunk in stream:
token = chunk.choices[0].delta.content or ''
full_text += token
print(token, end='', flush=True)
print() # newline
return full_text
# The return value contains the complete response for storage
# response_text = stream_and_collect(history)
# history.append({'role': 'assistant', 'content': response_text})AsyncOpenAI ile Eşzamansız Akış
Eşzamansız ajan mimarileri için, olay döngüsünü engellemeden akış parçaları üzerinde yineleme yapmak üzere AsyncOpenAI ve async for kullanın.
import asyncio
import openai
async def async_stream_agent(query: str) -> str:
client = openai.AsyncOpenAI(api_key='YOUR_API_KEY')
stream = await client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': query}],
stream=True
)
full_text = ''
print('Agent: ', end='', flush=True)
async for chunk in stream:
token = chunk.choices[0].delta.content or ''
full_text += token
print(token, end='', flush=True)
print()
return full_text
# asyncio.run(async_stream_agent('What is asyncio?'))finish_reason ile Akışın Sonunu Algılama
Akıştaki son parçada boş olmayan bir finish_reason bulunur. Akışın neden sona erdiğini öğrenmek için bunu denetleyin: 'stop' = normal tamamlanma, 'length' = kesilmiş yanıt, 'tool_calls' = işlev çağrısı gerekiyor.
import openai
client = openai.OpenAI(api_key='YOUR_API_KEY')
def stream_with_finish_detection(messages: list):
stream = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
stream=True
)
finish_reason = None
for chunk in stream:
delta = chunk.choices[0].delta
if delta.content:
print(delta.content, end='', flush=True)
if chunk.choices[0].finish_reason:
finish_reason = chunk.choices[0].finish_reason
print()
if finish_reason == 'length':
print('[WARNING: Response was truncated. Try increasing max_tokens.]')
elif finish_reason == 'stop':
pass # normal completion
return finish_reasonUçbirim Çıktısında ANSI Renkleri
ANSI kaçış kodları, uçbirim çıktısına renk ekler. Bunları ajan önekini, kullanıcı girdi istemini ve uyarıları görsel olarak birbirinden ayırmak için kullanın. colorama kitaplığı, Windows da dahil olmak üzere platformlar arası destek sağlar.
# pip install colorama
from colorama import Fore, Style, init
init(autoreset=True) # reset color after each print
def print_colored_stream(messages: list, client):
# Print agent prefix in cyan
print(Fore.CYAN + 'Agent: ' + Style.RESET_ALL, end='', flush=True)
stream = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
stream=True
)
for chunk in stream:
token = chunk.choices[0].delta.content or ''
print(token, end='', flush=True)
print()
# Also useful:
# print(Fore.GREEN + 'Success!') — green
# print(Fore.RED + 'Error!') — red
# print(Fore.YELLOW + 'Warning') — yellowDaha Zengin Uçbirim Çıktısı için Rich Kitaplığı
rich kitaplığı, uçbirimde Markdown görüntüleme, söz dizimi vurgulanmış kod blokları, tablolar ve dönen göstergeler sağlar. Akışla iletilen ajan çıktısıyla iyi bir uyum gösterir.
# pip install rich
from rich.console import Console
from rich.live import Live
from rich.markdown import Markdown
console = Console()
def stream_with_rich(messages: list, client):
full_text = ''
with Live(console=console, refresh_per_second=10) as live:
stream = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
stream=True
)
for chunk in stream:
token = chunk.choices[0].delta.content or ''
full_text += token
# Render accumulated text as Markdown in real time
live.update(Markdown(full_text))
return full_textAraç Çağrılarıyla Akış
Akış işlev çağrısıyla birleştirildiğinde tool_calls alanı da parçalar halinde akışla iletilir. Ayrıştırmadan önce JSON dizesini parçalar arasında biriktirin.
import json
import openai
client = openai.OpenAI(api_key='YOUR_API_KEY')
def stream_with_tools(messages: list, tools: list) -> dict:
stream = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=tools,
stream=True
)
tool_call_chunks = {}
for chunk in stream:
delta = chunk.choices[0].delta
if delta.tool_calls:
for tc in delta.tool_calls:
idx = tc.index
if idx not in tool_call_chunks:
tool_call_chunks[idx] = {'name': '', 'args': ''}
if tc.function.name:
tool_call_chunks[idx]['name'] += tc.function.name
if tc.function.arguments:
tool_call_chunks[idx]['args'] += tc.function.arguments
# Parse accumulated tool calls
return {v['name']: json.loads(v['args']) for v in tool_call_chunks.values()}Belirteç Sayacını Görüntüleme
Kullanıcıların kullanımı izlemesine ve maliyetleri anlamasına yardımcı olmak için akış sırasında canlı bir belirteç sayacı gösterin. stream_options={'include_usage': True} ayarlandığında OpenAI akışı, son parçada kullanım verilerini içerir.
import openai
client = openai.OpenAI(api_key='YOUR_API_KEY')
def stream_with_token_count(messages: list):
stream = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
stream=True,
stream_options={'include_usage': True}
)
for chunk in stream:
delta = chunk.choices[0].delta
if delta.content:
print(delta.content, end='', flush=True)
# Last chunk includes usage
if chunk.usage:
print(f'\n[Tokens: prompt={chunk.usage.prompt_tokens}, '
f'completion={chunk.usage.completion_tokens}, '
f'total={chunk.usage.total_tokens}]')Akış için En İyi Uygulamalar
CLI ajanları için akış çıktısına yönelik en iyi uygulamaların özeti:
- Arabelleğe almayı önlemek için her zaman
flush=Trueveyasys.stdout.flush()kullanın - Akıştan sonra depolamak üzere belirteçleri bir dizede biriktirin
- Kesmeyi algılamak için
finish_reasondeğerini denetleyin - Görsel açıklık için ANSI renklerini veya
richkullanın - Araç çağrısı akışını, JSON bağımsız değişken parçalarını biriktirerek yönetin
Bilgi Kontrolü: Akış Çıktısı
CLI ajanlarında akış çıktısı konusundaki anlayışınızı sınayın.
Özet: CLI Aracılarında Akış Çıktısı
Artık duyarlı ve modern bir kullanım sunan akış özellikli CLI aracıları oluşturabilirsiniz:
- OpenAI SDK ile akışı etkinleştirmek için
stream=Truedeğerini iletin - Belirteçleri hemen görüntülemek için
print(token, end='', flush=True)kullanın - Akış sonrası işlemler için belirteçleri bir dizede biriktirin
- Kesilme durumunu saptamak için son parçadaki
finish_reasondeğerini kontrol edin - Asenkron aracılar için
AsyncOpenAIileasync forkullanın - Daha özenli bir terminal deneyimi için ANSI renkleri veya
richekleyin
Yapay zeka eğitmeniyle AI Agents öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 60
- Dersler
- 239
Sıkça Sorulan Sorular
“CLI Aracılarında Akış Çıktısı” dersi ücretsiz mi?
Evet — “CLI Aracılarında Akış Çıktısı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.
“CLI Aracılarında Akış Çıktısı” dersinde ne öğreneceğim?
Uçbirim arabirimlerinde akış halinde gelen belirteçleri karakter karakter yazdırma. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Agents öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“CLI Aracılarında Akış Çıktısı” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Komut Satırı Aracı Arabirimleri Oluşturma
- Etkileşimli REPL Tarzı Aracılar
- Bağımsız Değişken Ayrıştırma ve Yardım Metni
- CLI Aracılarında Akış Çıktısı