49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
from claude_dspy import ClaudeCode, ClaudeCodeConfig
|
|
from pydantic import BaseModel
|
|
from modaic import AutoProgram
|
|
import dspy
|
|
|
|
|
|
class Output(BaseModel):
|
|
files: list[str]
|
|
|
|
|
|
class ClaudeCodeSignature(dspy.Signature):
|
|
message: str = dspy.InputField(desc="Request to process")
|
|
output: Output = dspy.OutputField(desc="List of files modified or created")
|
|
|
|
|
|
def main():
|
|
# create config
|
|
config = ClaudeCodeConfig()
|
|
|
|
# create agent
|
|
cc = ClaudeCode(
|
|
config,
|
|
signature=ClaudeCodeSignature,
|
|
working_directory=".",
|
|
permission_mode="acceptEdits",
|
|
allowed_tools=["Read", "Bash", "Write"],
|
|
)
|
|
cc.push_to_hub(
|
|
"farouk1/claude-code",
|
|
with_code=True,
|
|
commit_message="Add more functionality to signature description parsing",
|
|
)
|
|
# agent = AutoProgram.from_precompiled("farouk1/claude-code", signature=ClaudeCodeSignature, working_directory=".", permission_mode="acceptEdits", allowed_tools=["Read", "Write", "Bash"])
|
|
|
|
# Test the agent
|
|
result = cc(message="create a python program that prints 'Hello, World!' and save it to a file in this directory")
|
|
print(result.output.files)
|
|
print(result.output)
|
|
print(result.usage)
|
|
|
|
print()
|
|
print("Trace:")
|
|
for i, item in enumerate(result.trace):
|
|
print(f" {i}: {item}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|