From 18f5a1f7dbea34ba7c501657fa19f540fad3f40f Mon Sep 17 00:00:00 2001 From: mudler Date: Sun, 7 May 2023 00:15:12 +0200 Subject: [PATCH] example: add langchain agent --- examples/langchain-agent/agent.py | 47 +++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 examples/langchain-agent/agent.py diff --git a/examples/langchain-agent/agent.py b/examples/langchain-agent/agent.py new file mode 100644 index 0000000..8089be8 --- /dev/null +++ b/examples/langchain-agent/agent.py @@ -0,0 +1,47 @@ +## Loosely 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://api: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.""" + # sys.stderr.write("EXECUTING PYTHON CODE:\n---\n" + command + "\n---\n") + 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) + # sys.stderr.write("PYTHON OUTPUT: \"" + output + "\"\n") + 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?") +