From a1433b13af515986e965e31bcd0fd34e3faa9e13 Mon Sep 17 00:00:00 2001 From: Joel Alexander Date: Tue, 4 Jun 2024 10:43:17 -0400 Subject: [PATCH 1/2] organize cookbook into folders --- README.md | 2 +- parea/cookbook/anthropic/__init__.py | 0 .../{ => anthropic}/tracing_anthropic.py | 0 .../tracing_anthropic_tool_use.py | 3 +- .../tracing_with_images_anthropic.py | 11 ++--- parea/cookbook/assets/__init__.py | 0 .../{ => assets}/data/2022-letter.txt | 0 parea/cookbook/assets/data/__init__.py | 0 .../data/anthropic_tool_use_examples.py | 0 .../data/openai_input_examples.py | 0 .../{ => assets}/data/state_of_the_union.txt | 0 parea/cookbook/{ => assets}/img/dashboard.png | Bin .../img/dashboard_detailed_view.png | Bin .../{ => assets}/img/deployed_prompts.png | Bin parea/cookbook/{ => assets}/img/feedback.png | Bin parea/cookbook/{ => assets}/img/logs.png | Bin parea/cookbook/{ => assets}/img/meta_data.png | Bin .../{ => assets}/img/trace_log_view.png | Bin .../evals_and_experiments/__init__.py | 0 .../async_experiments.py | 0 .../experiment_test_substeps.py | 0 .../list_experiments.py | 0 .../run_experiment.py | 0 .../run_experiment_balanced_acc.py | 0 .../run_experiment_evas_with_reason.py | 0 ..._experiment_using_saved_test_collection.py | 0 .../langchain/trace_langchain_bedrock_rag.py | 2 +- .../langchain/trace_langchain_rag_agents.py | 2 +- parea/cookbook/marvin/__init__.py | 0 parea/cookbook/{ => marvin}/trace_marvin.py | 0 parea/cookbook/openai/__init__.py | 0 .../simple_experiment_with_openai.py | 0 .../openai/trace_class_call_method.py | 39 ++++++++++++++++++ .../tracing_and_evaluating_openai_endpoint.py | 0 .../{ => openai}/tracing_azure_open_ai.py | 2 +- .../{ => openai}/tracing_open_ai_streams.py | 2 +- .../tracing_openai_assistant_endpoint.py | 0 .../tracing_templated_llm_calls.py | 0 .../{ => openai}/tracing_tool_calling.py | 0 .../tracing_with_images_open_ai.py | 0 .../tracing_with_open_ai_endpoint_directly.py | 0 .../tracing_with_openai_requests_api.py | 2 +- .../tracing_with_openai_with_functions.py | 0 parea/cookbook/parea_llm_proxy/__init__.py | 0 .../parea_llm_proxy/deployments/__init__.py | 0 .../fetching_and_using_parea_deployments.py | 0 .../tracing_with_deployed_prompt.py | 0 .../tracing_with_Parea_sdk.ipynb | 0 .../tracing_with_agent.py | 0 ...ing_with_function_calling_and_chains.ipynb | 0 .../tracing_with_parea_streaming.py | 0 .../tracing_without_deployed_prompt.py | 0 52 files changed, 50 insertions(+), 15 deletions(-) create mode 100644 parea/cookbook/anthropic/__init__.py rename parea/cookbook/{ => anthropic}/tracing_anthropic.py (100%) rename parea/cookbook/{ => anthropic}/tracing_anthropic_tool_use.py (86%) rename parea/cookbook/{ => anthropic}/tracing_with_images_anthropic.py (99%) create mode 100644 parea/cookbook/assets/__init__.py rename parea/cookbook/{ => assets}/data/2022-letter.txt (100%) create mode 100644 parea/cookbook/assets/data/__init__.py rename parea/cookbook/{ => assets}/data/anthropic_tool_use_examples.py (100%) rename parea/cookbook/{ => assets}/data/openai_input_examples.py (100%) rename parea/cookbook/{ => assets}/data/state_of_the_union.txt (100%) rename parea/cookbook/{ => assets}/img/dashboard.png (100%) rename parea/cookbook/{ => assets}/img/dashboard_detailed_view.png (100%) rename parea/cookbook/{ => assets}/img/deployed_prompts.png (100%) rename parea/cookbook/{ => assets}/img/feedback.png (100%) rename parea/cookbook/{ => assets}/img/logs.png (100%) rename parea/cookbook/{ => assets}/img/meta_data.png (100%) rename parea/cookbook/{ => assets}/img/trace_log_view.png (100%) create mode 100644 parea/cookbook/evals_and_experiments/__init__.py rename parea/cookbook/{ => evals_and_experiments}/async_experiments.py (100%) rename parea/cookbook/{ => evals_and_experiments}/experiment_test_substeps.py (100%) rename parea/cookbook/{ => evals_and_experiments}/list_experiments.py (100%) rename parea/cookbook/{ => evals_and_experiments}/run_experiment.py (100%) rename parea/cookbook/{ => evals_and_experiments}/run_experiment_balanced_acc.py (100%) rename parea/cookbook/{ => evals_and_experiments}/run_experiment_evas_with_reason.py (100%) rename parea/cookbook/{ => evals_and_experiments}/run_experiment_using_saved_test_collection.py (100%) create mode 100644 parea/cookbook/marvin/__init__.py rename parea/cookbook/{ => marvin}/trace_marvin.py (100%) create mode 100644 parea/cookbook/openai/__init__.py rename parea/cookbook/{ => openai}/simple_experiment_with_openai.py (100%) create mode 100644 parea/cookbook/openai/trace_class_call_method.py rename parea/cookbook/{ => openai}/tracing_and_evaluating_openai_endpoint.py (100%) rename parea/cookbook/{ => openai}/tracing_azure_open_ai.py (94%) rename parea/cookbook/{ => openai}/tracing_open_ai_streams.py (91%) rename parea/cookbook/{ => openai}/tracing_openai_assistant_endpoint.py (100%) rename parea/cookbook/{ => openai}/tracing_templated_llm_calls.py (100%) rename parea/cookbook/{ => openai}/tracing_tool_calling.py (100%) rename parea/cookbook/{ => openai}/tracing_with_images_open_ai.py (100%) rename parea/cookbook/{ => openai}/tracing_with_open_ai_endpoint_directly.py (100%) rename parea/cookbook/{ => openai}/tracing_with_openai_requests_api.py (95%) rename parea/cookbook/{ => openai}/tracing_with_openai_with_functions.py (100%) create mode 100644 parea/cookbook/parea_llm_proxy/__init__.py create mode 100644 parea/cookbook/parea_llm_proxy/deployments/__init__.py rename parea/cookbook/{ => parea_llm_proxy/deployments}/fetching_and_using_parea_deployments.py (100%) rename parea/cookbook/{ => parea_llm_proxy/deployments}/tracing_with_deployed_prompt.py (100%) rename parea/cookbook/{ => parea_llm_proxy}/tracing_with_Parea_sdk.ipynb (100%) rename parea/cookbook/{ => parea_llm_proxy}/tracing_with_agent.py (100%) rename parea/cookbook/{ => parea_llm_proxy}/tracing_with_function_calling_and_chains.ipynb (100%) rename parea/cookbook/{ => parea_llm_proxy}/tracing_with_parea_streaming.py (100%) rename parea/cookbook/{ => parea_llm_proxy}/tracing_without_deployed_prompt.py (100%) diff --git a/README.md b/README.md index 140a2345..f19ade31 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ You can define evaluation functions locally or use the ones you have deployed to Parea's [Test Hub](https://app.parea.ai/test-hub). If you choose the latter option, the evaluation happens asynchronously and non-blocking. -A fully locally working cookbook can be found [here](parea/cookbook/tracing_and_evaluating_openai_endpoint.py). +A fully locally working cookbook can be found [here](parea/cookbook/openai/tracing_and_evaluating_openai_endpoint.py). Alternatively, you can add the following code to your codebase to get started: ```python diff --git a/parea/cookbook/anthropic/__init__.py b/parea/cookbook/anthropic/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/parea/cookbook/tracing_anthropic.py b/parea/cookbook/anthropic/tracing_anthropic.py similarity index 100% rename from parea/cookbook/tracing_anthropic.py rename to parea/cookbook/anthropic/tracing_anthropic.py diff --git a/parea/cookbook/tracing_anthropic_tool_use.py b/parea/cookbook/anthropic/tracing_anthropic_tool_use.py similarity index 86% rename from parea/cookbook/tracing_anthropic_tool_use.py rename to parea/cookbook/anthropic/tracing_anthropic_tool_use.py index ace8cb29..f9466137 100644 --- a/parea/cookbook/tracing_anthropic_tool_use.py +++ b/parea/cookbook/anthropic/tracing_anthropic_tool_use.py @@ -1,11 +1,10 @@ -import asyncio import os import anthropic from dotenv import load_dotenv from parea import Parea -from parea.cookbook.data.anthropic_tool_use_examples import missing_information, multiple_tool_use, single_tool_use +from parea.cookbook.assets.data.anthropic_tool_use_examples import missing_information, multiple_tool_use, single_tool_use load_dotenv() diff --git a/parea/cookbook/tracing_with_images_anthropic.py b/parea/cookbook/anthropic/tracing_with_images_anthropic.py similarity index 99% rename from parea/cookbook/tracing_with_images_anthropic.py rename to parea/cookbook/anthropic/tracing_with_images_anthropic.py index c1b992df..fa36004d 100644 --- a/parea/cookbook/tracing_with_images_anthropic.py +++ b/parea/cookbook/anthropic/tracing_with_images_anthropic.py @@ -1,6 +1,10 @@ +from typing import Optional + +import base64 import json import os +import requests from anthropic import Anthropic from dotenv import load_dotenv from openai import OpenAI @@ -28,13 +32,6 @@ def image_maker(query: str) -> str: return image_url -from typing import Optional - -import base64 - -import requests - - @trace def ask_vision(image_url: str) -> Optional[str]: image_data = requests.get(image_url).content diff --git a/parea/cookbook/assets/__init__.py b/parea/cookbook/assets/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/parea/cookbook/data/2022-letter.txt b/parea/cookbook/assets/data/2022-letter.txt similarity index 100% rename from parea/cookbook/data/2022-letter.txt rename to parea/cookbook/assets/data/2022-letter.txt diff --git a/parea/cookbook/assets/data/__init__.py b/parea/cookbook/assets/data/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/parea/cookbook/data/anthropic_tool_use_examples.py b/parea/cookbook/assets/data/anthropic_tool_use_examples.py similarity index 100% rename from parea/cookbook/data/anthropic_tool_use_examples.py rename to parea/cookbook/assets/data/anthropic_tool_use_examples.py diff --git a/parea/cookbook/data/openai_input_examples.py b/parea/cookbook/assets/data/openai_input_examples.py similarity index 100% rename from parea/cookbook/data/openai_input_examples.py rename to parea/cookbook/assets/data/openai_input_examples.py diff --git a/parea/cookbook/data/state_of_the_union.txt b/parea/cookbook/assets/data/state_of_the_union.txt similarity index 100% rename from parea/cookbook/data/state_of_the_union.txt rename to parea/cookbook/assets/data/state_of_the_union.txt diff --git a/parea/cookbook/img/dashboard.png b/parea/cookbook/assets/img/dashboard.png similarity index 100% rename from parea/cookbook/img/dashboard.png rename to parea/cookbook/assets/img/dashboard.png diff --git a/parea/cookbook/img/dashboard_detailed_view.png b/parea/cookbook/assets/img/dashboard_detailed_view.png similarity index 100% rename from parea/cookbook/img/dashboard_detailed_view.png rename to parea/cookbook/assets/img/dashboard_detailed_view.png diff --git a/parea/cookbook/img/deployed_prompts.png b/parea/cookbook/assets/img/deployed_prompts.png similarity index 100% rename from parea/cookbook/img/deployed_prompts.png rename to parea/cookbook/assets/img/deployed_prompts.png diff --git a/parea/cookbook/img/feedback.png b/parea/cookbook/assets/img/feedback.png similarity index 100% rename from parea/cookbook/img/feedback.png rename to parea/cookbook/assets/img/feedback.png diff --git a/parea/cookbook/img/logs.png b/parea/cookbook/assets/img/logs.png similarity index 100% rename from parea/cookbook/img/logs.png rename to parea/cookbook/assets/img/logs.png diff --git a/parea/cookbook/img/meta_data.png b/parea/cookbook/assets/img/meta_data.png similarity index 100% rename from parea/cookbook/img/meta_data.png rename to parea/cookbook/assets/img/meta_data.png diff --git a/parea/cookbook/img/trace_log_view.png b/parea/cookbook/assets/img/trace_log_view.png similarity index 100% rename from parea/cookbook/img/trace_log_view.png rename to parea/cookbook/assets/img/trace_log_view.png diff --git a/parea/cookbook/evals_and_experiments/__init__.py b/parea/cookbook/evals_and_experiments/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/parea/cookbook/async_experiments.py b/parea/cookbook/evals_and_experiments/async_experiments.py similarity index 100% rename from parea/cookbook/async_experiments.py rename to parea/cookbook/evals_and_experiments/async_experiments.py diff --git a/parea/cookbook/experiment_test_substeps.py b/parea/cookbook/evals_and_experiments/experiment_test_substeps.py similarity index 100% rename from parea/cookbook/experiment_test_substeps.py rename to parea/cookbook/evals_and_experiments/experiment_test_substeps.py diff --git a/parea/cookbook/list_experiments.py b/parea/cookbook/evals_and_experiments/list_experiments.py similarity index 100% rename from parea/cookbook/list_experiments.py rename to parea/cookbook/evals_and_experiments/list_experiments.py diff --git a/parea/cookbook/run_experiment.py b/parea/cookbook/evals_and_experiments/run_experiment.py similarity index 100% rename from parea/cookbook/run_experiment.py rename to parea/cookbook/evals_and_experiments/run_experiment.py diff --git a/parea/cookbook/run_experiment_balanced_acc.py b/parea/cookbook/evals_and_experiments/run_experiment_balanced_acc.py similarity index 100% rename from parea/cookbook/run_experiment_balanced_acc.py rename to parea/cookbook/evals_and_experiments/run_experiment_balanced_acc.py diff --git a/parea/cookbook/run_experiment_evas_with_reason.py b/parea/cookbook/evals_and_experiments/run_experiment_evas_with_reason.py similarity index 100% rename from parea/cookbook/run_experiment_evas_with_reason.py rename to parea/cookbook/evals_and_experiments/run_experiment_evas_with_reason.py diff --git a/parea/cookbook/run_experiment_using_saved_test_collection.py b/parea/cookbook/evals_and_experiments/run_experiment_using_saved_test_collection.py similarity index 100% rename from parea/cookbook/run_experiment_using_saved_test_collection.py rename to parea/cookbook/evals_and_experiments/run_experiment_using_saved_test_collection.py diff --git a/parea/cookbook/langchain/trace_langchain_bedrock_rag.py b/parea/cookbook/langchain/trace_langchain_bedrock_rag.py index 8fc8fe67..62451cea 100644 --- a/parea/cookbook/langchain/trace_langchain_bedrock_rag.py +++ b/parea/cookbook/langchain/trace_langchain_bedrock_rag.py @@ -19,7 +19,7 @@ def get_docs(): - loader = TextLoader("../data/2022-letter.txt") + loader = TextLoader("../assets/data/2022-letter.txt") letter = loader.load() text_splitter = RecursiveCharacterTextSplitter(separators=["\n\n", "\n"], chunk_size=4000, chunk_overlap=100) return text_splitter.split_documents(letter) diff --git a/parea/cookbook/langchain/trace_langchain_rag_agents.py b/parea/cookbook/langchain/trace_langchain_rag_agents.py index 8a157e25..f8ea8a6d 100644 --- a/parea/cookbook/langchain/trace_langchain_rag_agents.py +++ b/parea/cookbook/langchain/trace_langchain_rag_agents.py @@ -15,7 +15,7 @@ p = Parea(api_key=os.getenv("PAREA_API_KEY")) -loader = TextLoader("../data/state_of_the_union.txt") +loader = TextLoader("../assets/data/state_of_the_union.txt") documents = loader.load() diff --git a/parea/cookbook/marvin/__init__.py b/parea/cookbook/marvin/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/parea/cookbook/trace_marvin.py b/parea/cookbook/marvin/trace_marvin.py similarity index 100% rename from parea/cookbook/trace_marvin.py rename to parea/cookbook/marvin/trace_marvin.py diff --git a/parea/cookbook/openai/__init__.py b/parea/cookbook/openai/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/parea/cookbook/simple_experiment_with_openai.py b/parea/cookbook/openai/simple_experiment_with_openai.py similarity index 100% rename from parea/cookbook/simple_experiment_with_openai.py rename to parea/cookbook/openai/simple_experiment_with_openai.py diff --git a/parea/cookbook/openai/trace_class_call_method.py b/parea/cookbook/openai/trace_class_call_method.py new file mode 100644 index 00000000..393c4548 --- /dev/null +++ b/parea/cookbook/openai/trace_class_call_method.py @@ -0,0 +1,39 @@ +from typing import List + +import os + +from dotenv import load_dotenv +from openai import OpenAI + +from parea import Parea, trace + +load_dotenv() + +p = Parea(api_key=os.getenv("PAREA_API_KEY")) + + +class LLMCaller: + def __init__(self, messages: List[dict[str, str]]): + self.messages = messages + self.client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY")) + p.wrap_openai_client(self.client) + + @trace + def __call__(self, model: str = "gpt-4o", temperature: float = 0.0) -> str: + return self.client.chat.completions.create(model=model, temperature=temperature, messages=self.messages).choices[0].message.content + + +@trace +def main(topic: str) -> str: + caller = LLMCaller( + messages=[ + {"role": "system", "content": "You are a debater making an argument on a topic."}, + {"role": "user", "content": f"The discussion topic is {topic}"}, + ] + ) + return caller() + + +if __name__ == "__main__": + result = main("The impact of climate change on the economy") + print(result) diff --git a/parea/cookbook/tracing_and_evaluating_openai_endpoint.py b/parea/cookbook/openai/tracing_and_evaluating_openai_endpoint.py similarity index 100% rename from parea/cookbook/tracing_and_evaluating_openai_endpoint.py rename to parea/cookbook/openai/tracing_and_evaluating_openai_endpoint.py diff --git a/parea/cookbook/tracing_azure_open_ai.py b/parea/cookbook/openai/tracing_azure_open_ai.py similarity index 94% rename from parea/cookbook/tracing_azure_open_ai.py rename to parea/cookbook/openai/tracing_azure_open_ai.py index cf2d264a..22045c0d 100644 --- a/parea/cookbook/tracing_azure_open_ai.py +++ b/parea/cookbook/openai/tracing_azure_open_ai.py @@ -5,7 +5,7 @@ from openai.lib.azure import AsyncAzureOpenAI, AzureOpenAI from parea import Parea, trace -from parea.cookbook.data.openai_input_examples import functions_example, simple_example +from parea.cookbook.assets.data.openai_input_examples import functions_example, simple_example load_dotenv() diff --git a/parea/cookbook/tracing_open_ai_streams.py b/parea/cookbook/openai/tracing_open_ai_streams.py similarity index 91% rename from parea/cookbook/tracing_open_ai_streams.py rename to parea/cookbook/openai/tracing_open_ai_streams.py index ede790a4..e02f59ff 100644 --- a/parea/cookbook/tracing_open_ai_streams.py +++ b/parea/cookbook/openai/tracing_open_ai_streams.py @@ -5,7 +5,7 @@ from openai import AsyncOpenAI, OpenAI from parea import Parea, trace -from parea.cookbook.data.openai_input_examples import functions_example, simple_example_json +from parea.cookbook.assets.data.openai_input_examples import functions_example, simple_example_json load_dotenv() diff --git a/parea/cookbook/tracing_openai_assistant_endpoint.py b/parea/cookbook/openai/tracing_openai_assistant_endpoint.py similarity index 100% rename from parea/cookbook/tracing_openai_assistant_endpoint.py rename to parea/cookbook/openai/tracing_openai_assistant_endpoint.py diff --git a/parea/cookbook/tracing_templated_llm_calls.py b/parea/cookbook/openai/tracing_templated_llm_calls.py similarity index 100% rename from parea/cookbook/tracing_templated_llm_calls.py rename to parea/cookbook/openai/tracing_templated_llm_calls.py diff --git a/parea/cookbook/tracing_tool_calling.py b/parea/cookbook/openai/tracing_tool_calling.py similarity index 100% rename from parea/cookbook/tracing_tool_calling.py rename to parea/cookbook/openai/tracing_tool_calling.py diff --git a/parea/cookbook/tracing_with_images_open_ai.py b/parea/cookbook/openai/tracing_with_images_open_ai.py similarity index 100% rename from parea/cookbook/tracing_with_images_open_ai.py rename to parea/cookbook/openai/tracing_with_images_open_ai.py diff --git a/parea/cookbook/tracing_with_open_ai_endpoint_directly.py b/parea/cookbook/openai/tracing_with_open_ai_endpoint_directly.py similarity index 100% rename from parea/cookbook/tracing_with_open_ai_endpoint_directly.py rename to parea/cookbook/openai/tracing_with_open_ai_endpoint_directly.py diff --git a/parea/cookbook/tracing_with_openai_requests_api.py b/parea/cookbook/openai/tracing_with_openai_requests_api.py similarity index 95% rename from parea/cookbook/tracing_with_openai_requests_api.py rename to parea/cookbook/openai/tracing_with_openai_requests_api.py index 3768923e..ce2863ea 100644 --- a/parea/cookbook/tracing_with_openai_requests_api.py +++ b/parea/cookbook/openai/tracing_with_openai_requests_api.py @@ -4,7 +4,7 @@ from dotenv import load_dotenv from parea import Parea, aprocess_stream_and_yield, convert_openai_raw_to_log, process_stream_and_yield, trace -from parea.cookbook.data.openai_input_examples import functions_example, simple_example, tool_calling_example +from parea.cookbook.assets.data.openai_input_examples import functions_example, simple_example, tool_calling_example from parea.wrapper import get_formatted_openai_response load_dotenv() diff --git a/parea/cookbook/tracing_with_openai_with_functions.py b/parea/cookbook/openai/tracing_with_openai_with_functions.py similarity index 100% rename from parea/cookbook/tracing_with_openai_with_functions.py rename to parea/cookbook/openai/tracing_with_openai_with_functions.py diff --git a/parea/cookbook/parea_llm_proxy/__init__.py b/parea/cookbook/parea_llm_proxy/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/parea/cookbook/parea_llm_proxy/deployments/__init__.py b/parea/cookbook/parea_llm_proxy/deployments/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/parea/cookbook/fetching_and_using_parea_deployments.py b/parea/cookbook/parea_llm_proxy/deployments/fetching_and_using_parea_deployments.py similarity index 100% rename from parea/cookbook/fetching_and_using_parea_deployments.py rename to parea/cookbook/parea_llm_proxy/deployments/fetching_and_using_parea_deployments.py diff --git a/parea/cookbook/tracing_with_deployed_prompt.py b/parea/cookbook/parea_llm_proxy/deployments/tracing_with_deployed_prompt.py similarity index 100% rename from parea/cookbook/tracing_with_deployed_prompt.py rename to parea/cookbook/parea_llm_proxy/deployments/tracing_with_deployed_prompt.py diff --git a/parea/cookbook/tracing_with_Parea_sdk.ipynb b/parea/cookbook/parea_llm_proxy/tracing_with_Parea_sdk.ipynb similarity index 100% rename from parea/cookbook/tracing_with_Parea_sdk.ipynb rename to parea/cookbook/parea_llm_proxy/tracing_with_Parea_sdk.ipynb diff --git a/parea/cookbook/tracing_with_agent.py b/parea/cookbook/parea_llm_proxy/tracing_with_agent.py similarity index 100% rename from parea/cookbook/tracing_with_agent.py rename to parea/cookbook/parea_llm_proxy/tracing_with_agent.py diff --git a/parea/cookbook/tracing_with_function_calling_and_chains.ipynb b/parea/cookbook/parea_llm_proxy/tracing_with_function_calling_and_chains.ipynb similarity index 100% rename from parea/cookbook/tracing_with_function_calling_and_chains.ipynb rename to parea/cookbook/parea_llm_proxy/tracing_with_function_calling_and_chains.ipynb diff --git a/parea/cookbook/tracing_with_parea_streaming.py b/parea/cookbook/parea_llm_proxy/tracing_with_parea_streaming.py similarity index 100% rename from parea/cookbook/tracing_with_parea_streaming.py rename to parea/cookbook/parea_llm_proxy/tracing_with_parea_streaming.py diff --git a/parea/cookbook/tracing_without_deployed_prompt.py b/parea/cookbook/parea_llm_proxy/tracing_without_deployed_prompt.py similarity index 100% rename from parea/cookbook/tracing_without_deployed_prompt.py rename to parea/cookbook/parea_llm_proxy/tracing_without_deployed_prompt.py From 1f92a2e29a1f512900cffb51631f202ec52528ce Mon Sep 17 00:00:00 2001 From: Joel Alexander Date: Tue, 4 Jun 2024 10:55:20 -0400 Subject: [PATCH 2/2] organize cookbook into folders --- .../langchain/trace_class_call_method.py | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 parea/cookbook/langchain/trace_class_call_method.py diff --git a/parea/cookbook/langchain/trace_class_call_method.py b/parea/cookbook/langchain/trace_class_call_method.py new file mode 100644 index 00000000..bd85bd43 --- /dev/null +++ b/parea/cookbook/langchain/trace_class_call_method.py @@ -0,0 +1,54 @@ +import os + +from dotenv import load_dotenv +from langchain_core.output_parsers import StrOutputParser +from langchain_core.prompts import ChatPromptTemplate +from langchain_openai import ChatOpenAI + +from parea import Parea, trace +from parea.utils.trace_integrations.langchain import PareaAILangchainTracer + +load_dotenv() + +p = Parea(api_key=os.getenv("PAREA_API_KEY")) + + +class LangChainModule: + handler = PareaAILangchainTracer() + + def __init__(self): + self.llm = ChatOpenAI(openai_api_key=os.getenv("OPENAI_API_KEY")) + + def get_chain(self): + prompt = ChatPromptTemplate.from_messages([("user", "{input}")]) + chain = prompt | self.llm | StrOutputParser() + return chain + + @trace(name="langchain_caller_call") + def __call__(self, query: str) -> str: + chain = self.get_chain() + return chain.invoke( + {"input": "Write a Hello World program in Python using FastAPI."}, + config={"callbacks": [self.handler]}, + ) + + +class LLMCaller: + def __init__(self, query: str): + self.client = LangChainModule() + self.query = query + + @trace(name="llm_caller_call") + def __call__(self) -> str: + return self.client(query=self.query) + + +@trace +def main(query: str) -> str: + caller = LLMCaller(query=query) + return caller() + + +if __name__ == "__main__": + result = main("Write a Hello World program in Python using FastAPI.") + print(result)