Buckets:
| # π μμ΄μ νΈ λ©λͺ¨λ¦¬ κ΄λ¦¬[[-manage-your-agents-memory]] | |
| κ²°κ΅ μμ΄μ νΈλ λꡬμ ν둬ννΈλ‘ μ΄λ£¨μ΄μ§ λ¨μν ꡬμ±μμλ‘ μ μλ©λλ€. | |
| κ·Έλ¦¬κ³ λ¬΄μλ³΄λ€ μ€μν κ²μ μμ΄μ νΈκ° κ³Όκ±° λ¨κ³μ λ©λͺ¨λ¦¬λ₯Ό κ°μ§κ³ μμ΄ κ³ν, μ€ν, μ€λ₯μ μ΄λ ₯μ μΆμ νλ€λ μ μ λλ€. | |
| ### μμ΄μ νΈ λ©λͺ¨λ¦¬ μ¬μ[[replay-your-agents-memory]] | |
| κ³Όκ±° μ€νλ μμ΄μ νΈλ₯Ό νμΈνκΈ° μν λͺ κ°μ§ κΈ°λ₯μ μ 곡ν©λλ€. | |
| [κ³μΈ‘ κ°μ΄λ](./inspect_runs)μμ μΈκΈν λ°μ κ°μ΄, μμ΄μ νΈ μ€νμ κ³μΈ‘νμ¬ νΉμ λ¨κ³λ₯Ό νλνκ±°λ μΆμν μ μλ μ°μν UIλ‘ μκ°νν μ μμ΅λλ€. | |
| λν λ€μκ³Ό κ°μ΄ `agent.replay()`λ₯Ό μ¬μ©ν μλ μμ΅λλ€. | |
| μμ΄μ νΈλ₯Ό μ€νν ν, | |
| ```py | |
| from smolagents import InferenceClientModel, CodeAgent | |
| agent = CodeAgent(tools=[], model=InferenceClientModel(), verbosity_level=0) | |
| result = agent.run("What's the 20th Fibonacci number?") | |
| ``` | |
| μ΄ λ§μ§λ§ μ€νμ λ€μ μ¬μνκ³ μΆλ€λ©΄, λ€μ μ½λλ₯Ό μ¬μ©νλ©΄ λ©λλ€. | |
| ```py | |
| agent.replay() | |
| ``` | |
| ### μμ΄μ νΈ λ©λͺ¨λ¦¬ λμ λ³κ²½[[dynamically-change-the-agents-memory]] | |
| λ§μ κ³ κΈ μ¬μ© μ¬λ‘μμλ μμ΄μ νΈμ λ©λͺ¨λ¦¬λ₯Ό λμ μΌλ‘ μμ ν΄μΌ ν©λλ€. | |
| μμ΄μ νΈμ λ©λͺ¨λ¦¬λ λ€μκ³Ό κ°μ΄ μ κ·Όν μ μμ΅λλ€. | |
| ```py | |
| from smolagents import ActionStep | |
| system_prompt_step = agent.memory.system_prompt | |
| print("The system prompt given to the agent was:") | |
| print(system_prompt_step.system_prompt) | |
| task_step = agent.memory.steps[0] | |
| print("\n\nThe first task step was:") | |
| print(task_step.task) | |
| for step in agent.memory.steps: | |
| if isinstance(step, ActionStep): | |
| if step.error is not None: | |
| print(f"\nStep {step.step_number} got this error:\n{step.error}\n") | |
| else: | |
| print(f"\nStep {step.step_number} got these observations:\n{step.observations}\n") | |
| ``` | |
| `agent.memory.get_full_steps()`λ₯Ό μ¬μ©νμ¬ μ 체 λ¨κ³λ₯Ό λμ λ리 ννλ‘ κ°μ Έμ¬ μ μμ΅λλ€. | |
| λν λ¨κ³ μ½λ°±μ μ¬μ©νμ¬ μμ΄μ νΈμ λ©λͺ¨λ¦¬λ₯Ό λμ μΌλ‘ λ³κ²½ν μλ μμ΅λλ€. | |
| λ¨κ³ μ½λ°±μ μΈμλ‘ `agent` κ°μ²΄ μ체μ μ κ·Όν μ μμΌλ―λ‘, μμμ μ€λͺ ν κ²μ²λΌ λͺ¨λ λ©λͺ¨λ¦¬ λ¨κ³μ μ κ·Όνμ¬ νμν κ²½μ° μμ ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μΉ λΈλΌμ°μ μμ΄μ νΈκ° μννλ κ° λ¨κ³μ μ€ν¬λ¦°μ·μ κ΄μ°°νκ³ μλ€κ³ κ°μ ν΄ λ³΄κ² μ΅λλ€. μ΄ κ²½μ° μ΅μ μ€ν¬λ¦°μ·μ μ μ§νλ©΄μ ν ν° λΉμ©μ μ μ½νκΈ° μν΄ μ΄μ λ¨κ³μ μ΄λ―Έμ§λ₯Ό λ©λͺ¨λ¦¬μμ μ κ±°ν μ μμ΅λλ€. | |
| μ΄ κ²½μ° λ€μκ³Ό κ°μ μ½λλ₯Ό μ¬μ©ν μ μμ΅λλ€. | |
| _μ£Όμ: μ΄ μ½λλ κ°κ²°ν¨μ μν΄ μΌλΆ μν¬νΈ λ° κ°μ²΄ μ μκ° μλ΅λ λΆμμ ν μμμ λλ€. μ 체 μλ λ²μ μ μ½λλ [μλ³Έ μ€ν¬λ¦½νΈ](https://github.com/huggingface/smolagents/blob/main/src/smolagents/vision_web_browser.py)μμ νμΈνμΈμ._ | |
| ```py | |
| import helium | |
| from PIL import Image | |
| from io import BytesIO | |
| from time import sleep | |
| def update_screenshot(memory_step: ActionStep, agent: CodeAgent) -> None: | |
| sleep(1.0) # JavaScript μ λλ©μ΄μ μ΄ μλ£λ νμ μ€ν¬λ¦°μ·μ μ°λλ‘ ν©λλ€. | |
| driver = helium.get_driver() | |
| latest_step = memory_step.step_number | |
| for previous_memory_step in agent.memory.steps: # μ΄μ μ€ν¬λ¦°μ·μ λ‘κ·Έμμ μ κ±°νμ¬ μ²λ¦¬ κ³Όμ μ κ°μνν©λλ€. | |
| if isinstance(previous_memory_step, ActionStep) and previous_memory_step.step_number <= latest_step - 2: | |
| previous_memory_step.observations_images = None | |
| png_bytes = driver.get_screenshot_as_png() | |
| image = Image.open(BytesIO(png_bytes)) | |
| memory_step.observations_images = [image.copy()] | |
| ``` | |
| κ·Έ λ€μ μμ΄μ νΈλ₯Ό μ΄κΈ°νν λ μ΄ ν¨μλ₯Ό λ€μκ³Ό κ°μ΄ `step_callbacks` μΈμμ μ λ¬ν΄μΌ ν©λλ€. | |
| ```py | |
| CodeAgent( | |
| tools=[WebSearchTool(), go_back, close_popups, search_item_ctrl_f], | |
| model=model, | |
| additional_authorized_imports=["helium"], | |
| step_callbacks=[update_screenshot], | |
| max_steps=20, | |
| verbosity_level=2, | |
| ) | |
| ``` | |
| μ 체 μλ μμλ [λΉμ μΉ λΈλΌμ°μ μ½λ](https://github.com/huggingface/smolagents/blob/main/src/smolagents/vision_web_browser.py)μμ νμΈν μ μμ΅λλ€. | |
| ### μμ΄μ νΈλ₯Ό λ¨κ³λ³λ‘ μ€ν[[run-agents-one-step-at-a-time]] | |
| μ΄ κΈ°λ₯μ λꡬ νΈμΆμ μ€λ μκ°μ΄ 걸리λ κ²½μ°μ μ μ©ν©λλ€. | |
| μμ΄μ νΈλ₯Ό ν λ¨κ³μ© μ€ννλ©΄μ κ° λ¨κ³μμ λ©λͺ¨λ¦¬λ₯Ό μ λ°μ΄νΈν μ μμ΅λλ€. | |
| ```py | |
| from smolagents import InferenceClientModel, CodeAgent, ActionStep, TaskStep | |
| agent = CodeAgent(tools=[], model=InferenceClientModel(), verbosity_level=1) | |
| agent.python_executor.send_tools({**agent.tools}) | |
| print(agent.memory.system_prompt) | |
| task = "What is the 20th Fibonacci number?" | |
| # νμμ λ°λΌ λ€λ₯Έ μμ΄μ νΈμ λ©λͺ¨λ¦¬λ₯Ό λΆλ¬μ λ©λͺ¨λ¦¬λ₯Ό μμ ν μ μμ΅λλ€. | |
| # agent.memory.steps = previous_agent.memory.steps | |
| # μλ‘μ΄ μμ μ μμν©λλ€! | |
| agent.memory.steps.append(TaskStep(task=task, task_images=[])) | |
| final_answer = None | |
| step_number = 1 | |
| while final_answer is None and step_number <= 10: | |
| memory_step = ActionStep( | |
| step_number=step_number, | |
| observations_images=[], | |
| ) | |
| # ν λ¨κ³λ₯Ό μ€νν©λλ€. | |
| final_answer = agent.step(memory_step) | |
| agent.memory.steps.append(memory_step) | |
| step_number += 1 | |
| # νμν κ²½μ° λ©λͺ¨λ¦¬λ₯Ό μμ ν μλ μμ΅λλ€ | |
| # μλ₯Ό λ€μ΄ μ΅μ λ¨κ³λ₯Ό μ λ°μ΄νΈ νλ €λ©΄ λ€μκ³Ό κ°μ΄ μ²λ¦¬ν©λλ€: | |
| # agent.memory.steps[-1] = ... | |
| print("The final answer is:", final_answer) | |
| ``` | |
Xet Storage Details
- Size:
- 5.8 kB
- Xet hash:
- 739fe01cd9bb441bde27bfe0a8b46c9079724273230f921827bffd9aec43d6e3
Β·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.