mirror of
https://github.com/langchain-ai/langchain.git
synced 2026-10-09 11:25:21 +03:00
4.4 KiB
4.4 KiB
In [77]:
from langchain.schema.runnable import RunnableLambda
def length_function(text):
return len(text)
def _multiple_length_function(text1, text2):
return len(text1) * len(text2)
def multiple_length_function(_dict):
return _multiple_length_function(_dict["text1"], _dict["text2"])
prompt = ChatPromptTemplate.from_template("what is {a} + {b}")
chain1 = prompt | model
chain = {
"a": itemgetter("foo") | RunnableLambda(length_function),
"b": {"text1": itemgetter("foo"), "text2": itemgetter("bar")} | RunnableLambda(multiple_length_function)
} | prompt | modelIn [78]:
chain.invoke({"foo": "bar", "bar": "gah"})Out [78]:
AIMessage(content='3 + 9 equals 12.', additional_kwargs={}, example=False)In [139]:
from langchain.schema.runnable import RunnableConfigIn [149]:
import json
def parse_or_fix(text: str, config: RunnableConfig):
fixing_chain = (
ChatPromptTemplate.from_template(
"Fix the following text:\n\n```text\n{input}\n```\nError: {error}"
" Don't narrate, just respond with the fixed data."
)
| ChatOpenAI()
| StrOutputParser()
)
for _ in range(3):
try:
return json.loads(text)
except Exception as e:
text = fixing_chain.invoke({"input": text, "error": e}, config)
return "Failed to parse"In [152]:
from langchain.callbacks import get_openai_callback
with get_openai_callback() as cb:
RunnableLambda(parse_or_fix).invoke("{foo: bar}", {"tags": ["my-tag"], "callbacks": [cb]})
print(cb)Tokens Used: 65 Prompt Tokens: 56 Completion Tokens: 9 Successful Requests: 1 Total Cost (USD): $0.00010200000000000001