crislmfroes commited on
Commit
5659cad
1 Parent(s): 4501353

Add python repl and shell tools

Browse files
Files changed (8) hide show
  1. .Dockerignore +1 -0
  2. .gitignore +2 -1
  3. Dockerfile +1 -1
  4. app.config.template +3 -0
  5. app.py +11 -5
  6. build.sh +2 -0
  7. requirements.txt +1 -0
  8. run.sh +2 -0
.Dockerignore ADDED
@@ -0,0 +1 @@
 
 
1
+ app.config
.gitignore CHANGED
@@ -1 +1,2 @@
1
- uploads/*
 
 
1
+ uploads/*
2
+ app.config
Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM python:3.9
2
 
3
  WORKDIR /code
4
 
 
1
+ FROM pytorch/pytorch
2
 
3
  WORKDIR /code
4
 
app.config.template ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ OPENAI_API_KEY=
2
+ HUGGINGFACEHUB_API_TOKEN=
3
+ OPENWEATHERMAP_API_KEY=
app.py CHANGED
@@ -6,13 +6,14 @@ import os
6
  import aiohttp
7
  import panel as pn
8
  from gradio_tools import *
 
9
  from langchain.prompts import MessagesPlaceholder
10
  from langchain.memory import ConversationBufferMemory
11
  from langchain.callbacks import *
12
  from langchain.chat_models import ChatOpenAI
13
  from langchain.embeddings import OpenAIEmbeddings
14
  from langchain.agents import initialize_agent
15
- from langchain.tools import StructuredTool
16
  from langchain.agents import AgentType, load_tools
17
  from langchain.agents.agent_toolkits.openapi.spec import reduce_openapi_spec
18
  from langchain.agents.agent_toolkits.openapi import planner
@@ -46,10 +47,10 @@ def on_user_message(contents, user, instance):
46
  filename = str(uuid4())+".wav"
47
  audio, rate = a2n.audio_from_file(contents)
48
  scipy.io.wavfile.write(f'/tmp/{filename}', rate, audio)
49
- agent.run(f"Uploaded: /tmp/{filename}")
50
  file_input.value = None
 
51
  else:
52
- agent.run(contents)
53
 
54
  def send_image(filepath: str):
55
  """Sends to the user the image stored in the given filepath"""
@@ -73,7 +74,7 @@ chat_interface = ChatInterface(
73
  ]
74
  )
75
 
76
- llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0, streaming=True, callbacks=[StreamingStdOutCallbackHandler(), PanelCallbackHandler(instance=chat_interface, user='Assistant', avatar=panel.chat.langchain.DEFAULT_AVATARS["assistant"])])
77
 
78
  tools = load_tools(["openweathermap-api"], llm)
79
  tools[0].api_wrapper.openweathermap_api_key = os.environ.get('OPENWEATHERMAP_API_KEY')
@@ -87,9 +88,14 @@ tools += [
87
  StructuredTool.from_function(send_audio)
88
  ]
89
 
 
 
 
 
 
90
  memory = ConversationBufferMemory(memory_key="memory", return_messages=True)
91
 
92
- agent = initialize_agent(tools=tools, llm=llm, agent=AgentType.OPENAI_FUNCTIONS, verbose=True, agent_kwargs=dict(extra_prompt_messages=[MessagesPlaceholder(variable_name="memory")]), memory=memory)
93
 
94
  main = chat_interface
95
 
 
6
  import aiohttp
7
  import panel as pn
8
  from gradio_tools import *
9
+ from langchain_experimental.tools import PythonREPLTool
10
  from langchain.prompts import MessagesPlaceholder
11
  from langchain.memory import ConversationBufferMemory
12
  from langchain.callbacks import *
13
  from langchain.chat_models import ChatOpenAI
14
  from langchain.embeddings import OpenAIEmbeddings
15
  from langchain.agents import initialize_agent
16
+ from langchain.tools import StructuredTool, ShellTool
17
  from langchain.agents import AgentType, load_tools
18
  from langchain.agents.agent_toolkits.openapi.spec import reduce_openapi_spec
19
  from langchain.agents.agent_toolkits.openapi import planner
 
47
  filename = str(uuid4())+".wav"
48
  audio, rate = a2n.audio_from_file(contents)
49
  scipy.io.wavfile.write(f'/tmp/{filename}', rate, audio)
 
50
  file_input.value = None
51
+ return agent.run(f"Uploaded: /tmp/{filename}")
52
  else:
53
+ return agent.run(contents)
54
 
55
  def send_image(filepath: str):
56
  """Sends to the user the image stored in the given filepath"""
 
74
  ]
75
  )
76
 
77
+ llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0, streaming=True, callbacks=[StreamingStdOutCallbackHandler()])#, PanelCallbackHandler(instance=chat_interface, user='Assistant', avatar=panel.chat.langchain.DEFAULT_AVATARS["assistant"])])
78
 
79
  tools = load_tools(["openweathermap-api"], llm)
80
  tools[0].api_wrapper.openweathermap_api_key = os.environ.get('OPENWEATHERMAP_API_KEY')
 
88
  StructuredTool.from_function(send_audio)
89
  ]
90
 
91
+ tools += [
92
+ PythonREPLTool(),
93
+ ShellTool()
94
+ ]
95
+
96
  memory = ConversationBufferMemory(memory_key="memory", return_messages=True)
97
 
98
+ agent = initialize_agent(tools=tools, llm=llm, agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True, agent_kwargs=dict(extra_prompt_messages=[MessagesPlaceholder(variable_name="memory")]), memory=memory)
99
 
100
  main = chat_interface
101
 
build.sh ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ #!/usr/bin/bash
2
+ docker build . -t cyberdynesystems/skynet:latest
requirements.txt CHANGED
@@ -1,6 +1,7 @@
1
  panel
2
  aiohttp
3
  langchain
 
4
  openai
5
  clarifai
6
  pyowm
 
1
  panel
2
  aiohttp
3
  langchain
4
+ langchain_experimental
5
  openai
6
  clarifai
7
  pyowm
run.sh ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ #!/usr/bin/env bash
2
+ docker run --env-file ./app.config --net host cyberdynesystems/skynet:latest