From d860ce0cd53f66f7da3365a5b364b311e186ab38 Mon Sep 17 00:00:00 2001 From: Zachary Smith <22395357+Cutwell@users.noreply.github.com> Date: Thu, 9 Nov 2023 22:48:01 +0000 Subject: [PATCH] episode 2 --- .envrc.example.sh | 8 +++++++- my-app/my_app/chain.py | 13 +++---------- my-app/poetry.lock | 33 ++++++++++++++++++++++++++++++++- my-app/pyproject.toml | 1 + my-app/tests/test_chain.py | 12 ++++++++++-- 5 files changed, 53 insertions(+), 14 deletions(-) diff --git a/.envrc.example.sh b/.envrc.example.sh index a971378..c914703 100644 --- a/.envrc.example.sh +++ b/.envrc.example.sh @@ -1 +1,7 @@ -export OPENAI_API_KEY= +export LANGCHAIN_TRACING_V2=true +export LANGCHAIN_ENDPOINT=https://api.smith.langchain.com +export LANGCHAIN_API_KEY= +# if LANGCHAIN_PROJECT not specified, defaults to "default" +export LANGCHAIN_PROJECT= + +export OPENAI_API_KEY= \ No newline at end of file diff --git a/my-app/my_app/chain.py b/my-app/my_app/chain.py index ef0a3ae..6568ed8 100644 --- a/my-app/my_app/chain.py +++ b/my-app/my_app/chain.py @@ -1,15 +1,8 @@ from langchain.chat_models import ChatOpenAI -from langchain.prompts import ChatPromptTemplate +from langchain import hub -_prompt = ChatPromptTemplate.from_messages( - [ - ( - "system", - "You are a helpful assistant who speaks like a pirate", - ), - ("human", "{text}"), - ] -) + +_prompt = hub.pull("cutwell/best-pirate-ever") _model = ChatOpenAI() # if you update this, you MUST also update ../pyproject.toml diff --git a/my-app/poetry.lock b/my-app/poetry.lock index 9a0d807..3d75e8b 100644 --- a/my-app/poetry.lock +++ b/my-app/poetry.lock @@ -684,6 +684,22 @@ uvicorn = ">=0.23.2,<0.24.0" [package.extras] serve = ["langserve[all] (>=0.0.16)"] +[[package]] +name = "langchainhub" +version = "0.1.13" +description = "" +category = "main" +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "langchainhub-0.1.13-py3-none-any.whl", hash = "sha256:edfd6926a85235f471ea733e7984e3ec7428feac7dba9f32156107152b039a5d"}, + {file = "langchainhub-0.1.13.tar.gz", hash = "sha256:da5120a9cb6885f1fdfaf20b85d4e7c6e525369a389e708d20417c3f760dc92a"}, +] + +[package.dependencies] +requests = ">=2,<3" +types-requests = ">=2.31.0.2,<3.0.0.0" + [[package]] name = "langsmith" version = "0.0.56" @@ -1439,6 +1455,21 @@ dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2 doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +[[package]] +name = "types-requests" +version = "2.31.0.10" +description = "Typing stubs for requests" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "types-requests-2.31.0.10.tar.gz", hash = "sha256:dc5852a76f1eaf60eafa81a2e50aefa3d1f015c34cf0cba130930866b1b22a92"}, + {file = "types_requests-2.31.0.10-py3-none-any.whl", hash = "sha256:b32b9a86beffa876c0c3ac99a4cd3b8b51e973fb8e3bd4e0a6bb32c7efad80fc"}, +] + +[package.dependencies] +urllib3 = ">=2" + [[package]] name = "typing-extensions" version = "4.8.0" @@ -1596,4 +1627,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = ">=3.8.1,<4.0" -content-hash = "b0ff445ca9072c002d43802e4710bf3fb4968a3667eddec6fba396f9d087e820" +content-hash = "a74a94e1258ef06484c2b3ce651f98f6b70d2417b1ade902ef322c5dd470987d" diff --git a/my-app/pyproject.toml b/my-app/pyproject.toml index 0a6cd94..1502759 100644 --- a/my-app/pyproject.toml +++ b/my-app/pyproject.toml @@ -9,6 +9,7 @@ readme = "README.md" python = ">=3.8.1,<4.0" langchain = ">=0.0.313, <0.1" openai = "^0.28.1" +langchainhub = "^0.1.13" [tool.poetry.group.dev.dependencies] langchain-cli = ">=0.0.4" diff --git a/my-app/tests/test_chain.py b/my-app/tests/test_chain.py index d97617b..18c665f 100644 --- a/my-app/tests/test_chain.py +++ b/my-app/tests/test_chain.py @@ -1,6 +1,14 @@ from my_app.chain import chain +import langsmith +from datetime import datetime def test_chain(): - print( - chain.invoke({"text": "Hi there, do you have any gold for me?"}).content + client = langsmith.Client() + + chain_results = client.run_on_dataset( + dataset_name="pirate-dataset", + llm_or_chain_factory=chain, + project_name=f"pirate-dataset-test-{int(datetime.now().strftime('%Y%m%d%H%M%S'))}", + concurrency_level=5, + verbose=True, ) \ No newline at end of file