Spaces:
Sleeping
Sleeping
File size: 1,560 Bytes
1c9c13f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | """ν
μ€νΈ λλΈ β 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)
|