Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
f0109a3
Refactored code so that documentation is handled by separate class
DianaStrauss Jun 10, 2024
630f571
refactored code
DianaStrauss Jun 10, 2024
bef16c0
Adjusted prompt_engineer to create better prompts
DianaStrauss Jun 13, 2024
74062ff
Refactored documentation_handler.py to update .yaml file when it get …
DianaStrauss Jun 13, 2024
7591be3
Created SubmitHTTPMethod.py for better separation
DianaStrauss Jun 13, 2024
73fe5c4
Created Converter and parser for handeling yaml and json files
DianaStrauss Jun 13, 2024
430cb1f
Refactored converter and parser
DianaStrauss Jun 14, 2024
cef43e9
Added token count so that prompts are not too long -> WIP shorten pro…
DianaStrauss Jun 14, 2024
89956d7
Refactored code and added yamlFile.py
DianaStrauss Jun 17, 2024
e7ce9ae
Refactored code
DianaStrauss Jun 19, 2024
995b199
Added simple scoring to prompt engineer
DianaStrauss Jul 4, 2024
cbafdf2
changed order of setuo methods in simple_openai_documentation
DianaStrauss Jul 4, 2024
34593e3
changed order of setuo methods in simple_openai_documentation
DianaStrauss Jul 4, 2024
b95dd31
changed order of setuo methods in simple_openai_documentation
DianaStrauss Jul 4, 2024
e267621
Addition of examples works with redocly
DianaStrauss Jul 9, 2024
56bc5ff
Added yaml file assistant
DianaStrauss Jul 9, 2024
7c681af
Can create openapi spec with examples
DianaStrauss Jul 9, 2024
120b09f
Cleaned up code
DianaStrauss Jul 12, 2024
2fcca09
Refactor code
DianaStrauss Jul 12, 2024
29aa192
Refactor code
DianaStrauss Jul 12, 2024
b2632ab
Cleaned up code
DianaStrauss Jul 12, 2024
3af909a
Cleaned up code
DianaStrauss Jul 12, 2024
b1f9886
Cleaned up code
DianaStrauss Jul 12, 2024
5915187
Merge branch 'main' of https://github.com/DianaStrauss/hackingBuddyGP…
andreashappe Jul 22, 2024
8e58cad
Merge branch 'development' into DianaStrauss-main
andreashappe Jul 22, 2024
bbb8133
update dependencies
andreashappe Jul 22, 2024
fd4323e
some simple renames
andreashappe Jul 22, 2024
ec3a0ee
Fixed attribute initialization of use_cases and transparent types
Neverbolt Jul 26, 2024
0babd39
Refactored code and fixed import bugs in simple_web_api_testing and s…
DianaStrauss Aug 1, 2024
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge branch 'development' into DianaStrauss-main
  • Loading branch information
andreashappe committed Jul 22, 2024
commit 8e58cad466412c34a786d2c45825b234fc5567c7
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ dependencies = [
'python-dotenv == 1.0.1',
'pypsexec == 0.3.0',
'openai == 1.28.0',
'spacy'
]

[project.urls]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import pydantic_core
from hackingBuddyGPT.capabilities.capability import capabilities_to_action_model
import spacy
import time
from instructor.retry import InstructorRetryException


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from dataclasses import dataclass, field
from dataclasses import field
from typing import List, Any, Union, Dict

import pydantic_core
Expand All @@ -8,19 +8,18 @@
from hackingBuddyGPT.capabilities import Capability
from hackingBuddyGPT.capabilities.http_request import HTTPRequest
from hackingBuddyGPT.capabilities.record_note import RecordNote
from hackingBuddyGPT.usecases.common_patterns import RoundBasedUseCase
from hackingBuddyGPT.usecases.agents import Agent
from hackingBuddyGPT.usecases.web_api_testing.utils.documentation_handler import DocumentationHandler
from hackingBuddyGPT.usecases.web_api_testing.utils.llm_handler import LLMHandler
from hackingBuddyGPT.usecases.web_api_testing.prompt_engineer import PromptEngineer, PromptStrategy
from hackingBuddyGPT.usecases.web_api_testing.utils.response_handler import ResponseHandler
from hackingBuddyGPT.utils import tool_message
from hackingBuddyGPT.utils.configurable import parameter
from hackingBuddyGPT.utils.openai.openai_lib import OpenAILib
from hackingBuddyGPT.usecases.base import use_case
from hackingBuddyGPT.usecases.base import AutonomousAgentUseCase, use_case
Prompt = List[Union[ChatCompletionMessage, ChatCompletionMessageParam]]
Context = Any


class SimpleWebAPIDocumentation(Agent):
llm: OpenAILib
host: str = parameter(desc="The host to test", default="https://jsonplaceholder.typicode.com")
Expand Down Expand Up @@ -88,12 +87,12 @@ def _handle_response(self, completion, response):
message = completion.choices[0].message
tool_call_id = message.tool_calls[0].id
command = pydantic_core.to_json(response).decode()
self.console.print(Panel(command, title="assistant"))
self._log.console.print(Panel(command, title="assistant"))
self._prompt_history.append(message)

with self._log.console.status("[bold green]Executing that command..."):
result = response.execute()
self.console.print(Panel(result[:30], title="tool"))
self._log.console.print(Panel(result[:30], title="tool"))
result_str = self.response_handler.parse_http_status_line(result)
self._prompt_history.append(tool_message(result_str, tool_call_id))
invalid_flags = ["recorded","Not a valid HTTP method", "404" ,"Client Error: Not Found"]
Expand All @@ -109,3 +108,7 @@ def _handle_response(self, completion, response):
def has_no_numbers(self, path):
return not any(char.isdigit() for char in path)


@use_case("Minimal implementation of a web API testing use case")
class SimpleWebAPIDocumentationUseCase(AutonomousAgentUseCase[SimpleWebAPIDocumentation]):
pass
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,18 @@
from hackingBuddyGPT.capabilities.http_request import HTTPRequest
from hackingBuddyGPT.capabilities.record_note import RecordNote
from hackingBuddyGPT.capabilities.submit_http_method import SubmitHTTPMethod
from hackingBuddyGPT.usecases.common_patterns import RoundBasedUseCase
from hackingBuddyGPT.usecases.web_api_testing.utils.llm_handler import LLMHandler
from hackingBuddyGPT.usecases.web_api_testing.prompt_engineer import PromptEngineer, PromptStrategy
from hackingBuddyGPT.usecases.web_api_testing.utils.response_handler import ResponseHandler
from hackingBuddyGPT.utils import tool_message
from hackingBuddyGPT.utils.configurable import parameter
from hackingBuddyGPT.utils.openai.openai_lib import OpenAILib
from hackingBuddyGPT.usecases.base import use_case
from hackingBuddyGPT.usecases.base import AutonomousAgentUseCase, use_case

Prompt = List[Union[ChatCompletionMessage, ChatCompletionMessageParam]]
Context = Any

@use_case("simple_web_api_testing", "Minimal implementation of a web API testing use case")
@dataclass
class SimpleWebAPITesting(RoundBasedUseCase):
class SimpleWebAPITesting(Agent):
llm: OpenAILib
host: str = parameter(desc="The host to test", default="https://jsonplaceholder.typicode.com")
http_method_description: str = parameter(
Expand Down Expand Up @@ -127,10 +124,14 @@ def _handle_response(self, completion, response):
self.console.print(Panel(command, title="assistant"))
self._prompt_history.append(message)

with self._log.console.status("[bold green]Executing that command..."):
with self.console.status("[bold green]Executing that command..."):
result = response.execute()
self.console.print(Panel(result[:30], title="tool"))
result_str = self.response_handler.parse_http_status_line(result)
self._prompt_history.append(tool_message(result_str, tool_call_id))

return self._all_http_methods_found

@use_case("Minimal implementation of a web API testing use case")
class SimpleWebAPITestingUseCase(AutonomousAgentUseCase[SimpleWebAPITesting]):
pass
You are viewing a condensed version of this merge commit. You can view the full changes here.