From 6ed7b10273c8b270947d695a7b3e5b5cbfd7c012 Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 7 May 2023 08:14:01 +0200 Subject: [PATCH] examples: add langchain agent example --- examples/langchain-python/README.md | 2 ++ examples/langchain-python/agent.py | 44 +++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 examples/langchain-python/agent.py diff --git a/examples/langchain-python/README.md b/examples/langchain-python/README.md index 9fcf297..a98c48f 100644 --- a/examples/langchain-python/README.md +++ b/examples/langchain-python/README.md @@ -30,4 +30,6 @@ export OPENAI_API_KEY=sk- python test.py # A good company name for a company that makes colorful socks would be "Colorsocks". + +python agent.py ``` \ No newline at end of file diff --git a/examples/langchain-python/agent.py b/examples/langchain-python/agent.py new file mode 100644 index 0000000..11e3a5c --- /dev/null +++ b/examples/langchain-python/agent.py @@ -0,0 +1,44 @@ +## This is a fork/based from https://gist.github.com/wiseman/4a706428eaabf4af1002a07a114f61d6 + +from io import StringIO +import sys +import os +from typing import Dict, Optional + +from langchain.agents import load_tools +from langchain.agents import initialize_agent +from langchain.agents.tools import Tool +from langchain.llms import OpenAI + +base_path = os.environ.get('OPENAI_API_BASE', 'http://localhost:8080/v1') +model_name = os.environ.get('MODEL_NAME', 'gpt-3.5-turbo') + +class PythonREPL: + """Simulates a standalone Python REPL.""" + + def __init__(self): + pass + + def run(self, command: str) -> str: + """Run command and returns anything printed.""" + old_stdout = sys.stdout + sys.stdout = mystdout = StringIO() + try: + exec(command, globals()) + sys.stdout = old_stdout + output = mystdout.getvalue() + except Exception as e: + sys.stdout = old_stdout + output = str(e) + return output + +llm = OpenAI(temperature=0.0, openai_api_base=base_path, model_name=model_name) +python_repl = Tool( + "Python REPL", + PythonREPL().run, + """A Python shell. Use this to execute python commands. Input should be a valid python command. + If you expect output it should be printed out.""", + ) +tools = [python_repl] +agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True) +agent.run("What is the 10th fibonacci number?") \ No newline at end of file