Persist message history in chatbot
This commit is contained in:
		
							parent
							
								
									f1c5597025
								
							
						
					
					
						commit
						1b9130c4a5
					
				| @ -15,9 +15,37 @@ class GameInterface: | ||||
|         scrot = subprocess.run(['scrot', '-'], capture_output = True) | ||||
|         return scrot.stdout | ||||
| 
 | ||||
| class ChatBot: | ||||
|     def __init__(self): | ||||
|         self.api = OpenAI(api_key = os.environ['OPENAI_KEY']) | ||||
|         self.message_history = [] | ||||
| 
 | ||||
|     def prompt(self, text, image=None): | ||||
|         message = { | ||||
|             "role": "user", | ||||
|             "content": [ {"type": "text", "text": text} ], | ||||
|         } | ||||
| 
 | ||||
|         if image: | ||||
|             image64 = base64.b64encode(image).decode('utf-8') | ||||
|             image_content_part = {"type": "image_url", "image_url": { "url": f"data:image/png;base64,{image64}" } } | ||||
|             message['content'].append(image_content_part) | ||||
| 
 | ||||
|         self.message_history.append(message) | ||||
|         response = self.api.chat.completions.create( | ||||
|             model="gpt-4o-mini", | ||||
|             messages=self.message_history | ||||
|         ) | ||||
|         response_message = response.choices[0].message.content | ||||
|         self.message_history.append( { | ||||
|             "role": "assistant", | ||||
|             "content": [ {"type": "text", "text": response_message} ], | ||||
|         }) | ||||
|         return response_message | ||||
| 
 | ||||
| app = Flask(__name__) | ||||
| openai_client = OpenAI(api_key = os.environ['OPENAI_KEY']) | ||||
| game = GameInterface() | ||||
| chatbot = ChatBot() | ||||
| 
 | ||||
| @app.route('/') | ||||
| def index(): | ||||
| @ -35,20 +63,18 @@ def click(x, y): | ||||
| @app.route('/ask-for-next-move') | ||||
| def nextmove(): | ||||
|     screenshot = game.screenshot() | ||||
|     screenshot64 = base64.b64encode(screenshot).decode('utf-8') | ||||
| 
 | ||||
|     response = openai_client.chat.completions.create( | ||||
|         model="gpt-4o-mini", | ||||
|         messages=[ { | ||||
|             "role": "user", | ||||
|             "content": [ | ||||
|                 {"type": "text", "text": "we're playing Into the Breach. Describe the state of the board. Then tell me the best moves for our mechs to make."}, | ||||
|                 {"type": "image_url", "image_url": { "url": f"data:image/png;base64,{screenshot64}", }, }, | ||||
|             ], | ||||
|         } ] | ||||
|     return chatbot.prompt( | ||||
|         text = "we're playing Into the Breach. Describe the state of the board. Then tell me the best moves for our mechs to make.", | ||||
|         image = screenshot | ||||
|     ) | ||||
|     return response.choices[0].message.content | ||||
| 
 | ||||
| @app.route('/promp-in-context') | ||||
| def prompt(): | ||||
|     screenshot = game.screenshot() | ||||
|     return chatbot.prompt( | ||||
|         text = "we're playing Into the Breach. Describe the state of the board. Then tell me the best moves for our mechs to make.", | ||||
|         image = screenshot | ||||
|     ) | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     app.run(debug=True, host='0.0.0.0', port=5000) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user