Starting a LangSmith trace.
[project name].
CH01-Basic
Cara Efektif Menyampaikan Data
RunnablePassthrough dapat digunakan untuk menyampaikan data tanpa mengubahnya atau dengan menambahkan kunci tambahan.
Jika RunnablePassthrough() dipanggil sendiri, ia akan menerima input dan meneruskannya tanpa perubahan.
Jika dipanggil menggunakan metode RunnablePassthrough.assign(...), ia akan menerima input dan menambahkan argumen tambahan yang diberikan ke fungsi assign.
RunnablePassthrough
from langchain_core.prompts import PromptTemplatefrom langchain_openai import ChatOpenAI# Membuat prompt dan LLM.prompt = PromptTemplate.from_template("{num} kali 10 adalah?")llm =ChatOpenAI(temperature=0)# Membuat chain.chain = prompt | llm
Saat menjalankan chain menggunakan invoke(), tipe data input harus berupa dictionary
from langchain_core.runnables import RunnableParallel# Membuat instance RunnableParallel. Instance ini dapat menjalankan beberapa instance Runnable secara paralel.runnable =RunnableParallel( # Mengirimkan instance RunnablePassthrough sebagai argumen kata kunci 'passed'. Ini berfungsi untuk melewatkan data yang diterima tanpa perubahan.
passed=RunnablePassthrough(), # Menggunakan RunnablePassthrough.assign dengan argumen kata kunci 'extra' untuk menetapkan fungsi lambda 'mult'. Fungsi ini akan mengalikan nilai dari kunci 'num' dalam dictionary yang diterima dengan 3.
extra=RunnablePassthrough.assign(mult=lambdax: x["num"] *3), # Menyediakan fungsi lambda sebagai argumen kata kunci 'modified'. Fungsi ini akan menambahkan 1 pada nilai dari kunci 'num' dalam dictionary yang diterima.
modified=lambdax: x["num"] +1,)# Memanggil metode invoke pada instance runnable dengan mengirimkan dictionary {'num': 1} sebagai input.runnable.invoke({"num": 1})
chain1 = ({"country":RunnablePassthrough()}| PromptTemplate.from_template("Apa ibu kota dari {country}?")|ChatOpenAI())chain2 = ({"country":RunnablePassthrough()}| PromptTemplate.from_template("Berapa luas {country}?")|ChatOpenAI())
{'capital': AIMessage(content = 'Ini Seoul', response_metadata = {'token_usage': {'token_selesai': 5, 'prompt_token': 19, 'total_token': 24}, 'model_name': 'gpt-3.5-turbo', 'system_fingerprint': Tidak ada, 'finish_reason': 'stop', 'logprobs': None}, id='run-d9324c24-9670-4430-97d6-1272f5dbe0f2-0', usage_metadata={'input_tokens': 19, 'output_tokens': 5, 'total_token': 24}), 'area': AIMessage(content = 'Luas total Korea Selatan adalah sekitar 100.363 km².', response_metadata = {'penggunaan_token': {'token_selesai': 24, 'prompt_token': 20, 'total_token': 44}, 'model_name': 'gpt-3.5-turbo', 'system_fingerprint': Tidak ada, 'finish_reason': 'stop', 'logprobs': None}, id='run-f27442a3-fc9c-4d08-9fdf-189c1b4585c8-0', usage_metadata={'input_tokens': 20, 'output_tokens': 24, 'total_token': 44})}
RunnableLambda
Anda dapat memetakan fungsi kustom menggunakan RunnableLambda.
from langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import PromptTemplatefrom langchain_openai import ChatOpenAIfrom datetime import datetimedefget_today(a):# Mendapatkan tanggal hari inireturn datetime.today().strftime("%b-%d")# Mencetak tanggal hari iniget_today(None)
from langchain_core.runnables import RunnableLambda, RunnablePassthrough# Membuat prompt dan model LLM.prompt = PromptTemplate.from_template("Daftarkan {n} orang terkenal yang berulang tahun pada {today}. Harap sertakan tanggal lahir mereka.")llm =ChatOpenAI(temperature=0, model_name="gpt-4o")# Membuat chain.chain = ({"today":RunnableLambda(get_today),"n":RunnablePassthrough()}| prompt| llm|StrOutputParser())
# Outputprint(chain.invoke(3))
Tentu, berikut adalah tiga orang terkenal yang berulang tahun pada 15 Agustus beserta tanggal lahir mereka:1. **Napoleon Bonaparte** - Lahir pada 15 Agustus 1769. Ia adalah seorang pemimpin militer dan politikus Prancis yang menjadi Kaisar Prancis dari tahun 1804 hingga 1814, dan sekali lagi pada tahun 1815 selama Seratus Hari.
2. **Ben Affleck** - Lahir pada 15 Agustus 1972. Ia adalah seorang aktor, sutradara, penulis skenario, dan produser film Amerika yang terkenal dengan perannya dalam film-film seperti "Good Will Hunting," "Argo," dan "Batman v Superman: Dawn of Justice."
3. **Jennifer Lawrence** - Lahir pada 15 Agustus 1990. Ia adalah seorang aktris Amerika yang dikenal dengan perannya dalam film-film seperti "The Hunger Games" dan "Silver Linings Playbook," yang membuatnya memenangkan Academy Award untuk Aktris Terbaik.
Semoga informasi ini bermanfaat!
Gunakan itemgetter untuk mengekstrak kunci tertentu.
from operator import itemgetterfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.runnables import RunnableLambdafrom langchain_openai import ChatOpenAI# Fungsi yang mengembalikan panjang sebuah kalimat.deflength_function(text):returnlen(text)# Fungsi yang mengalikan panjang dua kalimat dan mengembalikan nilainya.def_multiple_length_function(text1,text2):returnlen(text1)*len(text2)# Fungsi yang menggunakan _multiple_length_function untuk mengalikan panjang dua kalimat dan mengembalikan nilainya.defmultiple_length_function(_dict):return_multiple_length_function(_dict["text1"], _dict["text2"])prompt = ChatPromptTemplate.from_template("{a} + {b} adalah berapa?")model =ChatOpenAI()chain1 = prompt | modelchain = ({"a":itemgetter("word1")|RunnableLambda(length_function),"b":{"text1":itemgetter("word1"),"text2":itemgetter("word2")}|RunnableLambda(multiple_length_function),}| prompt| model)