Spaces:
Sleeping
Sleeping
| """ν μ€νΈ λλΈ β ScriptedLlm: μ ν΄μ§ μλ΅μ μμλλ‘ λ΄λλ BaseLlm. | |
| LLM νΈμΆ μμ΄ νμ΄νλΌμΈ(κ°λβμΊλ¦ν°βλλ ν°βλꡬβstate)μ κ²°μ μ μΌλ‘ κ²μ¦νλ€. | |
| νλ‘λμ κ²½λ‘λ LiteLlm(engine/model.py) κ·Έλλ‘μ΄λ©°, μ΄ λλΈμ tests/ μ μ©μ΄λ€. | |
| """ | |
| from __future__ import annotations | |
| from typing import AsyncGenerator | |
| from google.adk.models.base_llm import BaseLlm | |
| from google.adk.models.llm_request import LlmRequest | |
| from google.adk.models.llm_response import LlmResponse | |
| from google.genai import types | |
| from pydantic import ConfigDict | |
| def text_response(text: str) -> LlmResponse: | |
| return LlmResponse(content=types.Content(role="model", parts=[types.Part(text=text)])) | |
| def tool_call(name: str, **args) -> types.Part: | |
| return types.Part(function_call=types.FunctionCall(name=name, args=args)) | |
| def tool_response(*parts: types.Part) -> LlmResponse: | |
| return LlmResponse(content=types.Content(role="model", parts=list(parts))) | |
| class ScriptedLlm(BaseLlm): | |
| model_config = ConfigDict(arbitrary_types_allowed=True) | |
| model: str = "scripted" | |
| script: list[LlmResponse] = [] | |
| requests: list[LlmRequest] = [] # κ²μ¦μ©: μ€μ λ‘ μ£Όμ λ instruction νμΈ | |
| async def generate_content_async( | |
| self, llm_request: LlmRequest, stream: bool = False | |
| ) -> AsyncGenerator[LlmResponse, None]: | |
| self.requests.append(llm_request) | |
| if not self.script: | |
| yield text_response("(λλ³Έ μμ§)") | |
| return | |
| yield self.script.pop(0) | |