from langchain_openai import ChatOpenAI from pydantic import SecretStr import argparse import sys def parse_args() -> argparse.Namespace: """ Parse command line arguments. Returns: Namespace: Parsed arguments containing the task text. """ parser = argparse.ArgumentParser( description="Run an LLM-based task orchestrator." ) parser.add_argument( "--task-text", required=True, help="Text of the task to be processed by the LLM.", ) return parser.parse_args() def validate_task_text(text: str) -> None: """ Validate that the provided task text is non-empty. Raises: ValueError: If the text is empty or consists only of whitespace. """ if not text.strip(): raise ValueError("Task text must be a non-empty string.") def init_llm() -> ChatOpenAI: """ Initialize the LLM client with placeholder configuration. Returns: ChatOpenAI: Configured LLM instance. """ return ChatOpenAI( model="openai/gpt-oss-20b", base_url='https://platform.brojs.ru/jrnl-bh/api/inference/v1', api_key=SecretStr("jrnl_30283ab953615cbb6846ff9940a1eedce0b76d7b2f59a2394f29e74643e6a90d"), temperature=0.7, ) def main() -> None: """ Main entry point of the orchestrator. Parses arguments, validates input, initializes LLM, and prints the response. """ args = parse_args() try: validate_task_text(args.task_text) except ValueError as exc: print(f"Error: {exc}", file=sys.stderr) sys.exit(1) llm = init_llm() # Invoke the LLM with the task text response = llm.invoke( {"messages": [{"role": "human", "content": args.task_text}]} ) # The result contains a list of messages; we print the content of the first AI message. ai_message = next( (msg for msg in response["messages"] if getattr(msg, "type", None) == "ai"), None, ) if ai_message: print(ai_message.content) else: print("No AI response received.", file=sys.stderr) if __name__ == "__main__": main()