02 Model I/O 与模型调用

发布时间:2026/6/28 5:58:08
02 Model I/O 与模型调用 tags:/n - langchain模型调用PromptLLM面试aliases:/n - Model IO模型输入输出02 Model I/O 与模型调用Model I/O 是与语言模型交互的核心组件输入提示Prompt→ 调用模型Model→ 输出解析Parser。一、调用在线模型1.1 LangChain 统一调用 LangChain 调用在线模型 运行方式python 02_LangChain调用模型.py fromdotenvimportload_dotenvimportosfromlangchain_openaiimportChatOpenAI load_dotenv()# 创建 LLM 实例llmChatOpenAI(modelqwen-turbo,base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY),)# 调用模型respllm.invoke(你好)print(type(resp))# class langchain_core.messages.ai.AIMessageprint(resp.content)1.2 消息类型类型说明示例SystemMessage系统指令设置角色、行为规范HumanMessage用户消息用户的输入AIMessageAI 回复模型的输出ToolMessage工具结果工具调用的返回值fromlangchain_core.messagesimportHumanMessage,SystemMessage,AIMessage# 方式1消息对象列表respllm.invoke([SystemMessage(content你是一个专业的数学助手),HumanMessage(content你好你是谁),])# 方式2元组列表简洁写法respllm.invoke([(system,你是一个专业的数学助手),(user,你好)])# 方式3字典列表respllm.invoke([{role:system,content:你是一个专业的数学助手},{role:user,content:你好}])1.3 调用方式方式方法说明同步调用llm.invoke()阻塞等待结果异步调用await llm.ainvoke()非阻塞适合高并发流式调用llm.stream()打字机效果逐 token 输出批次调用llm.batch()并行多个请求 流式调用演示 运行方式python 02_流式调用.py # 流式调用responsellm.stream(input[(user,什么是LangChain)])forchunkinresponse:print(chunk.content,end,flushTrue)print()# 批次调用responsellm.batch([[(user,什么是LangChain)],(user,LangChain的核心价值是什么),])forrespinresponse:print(resp.content)print(-*50)二、调用本地模型Ollama LangChain 调用本地 Ollama 模型 运行方式python 02_Ollama调用.py 前提已安装 Ollama 并下载了 qwen3:8b fromlangchain_openaiimportChatOpenAI llmChatOpenAI(modelqwen3:8b,base_urlhttp://localhost:11434/v1,api_keyollama,)respllm.invoke(你好)print(resp.content)三、模型调用结果解析3.1 JSON 输出 JsonOutputParser 演示 运行方式python 02_JSON解析.py fromlangchain_openaiimportChatOpenAIfromlangchain_core.output_parsersimportJsonOutputParserfrompydanticimportBaseModel,Field llmChatOpenAI(modelqwen-plus,base_url...,api_key...)classPrime(BaseModel):prime:list[int]Field(description素数列表)count:list[int]Field(description小于该素数的素数个数)json_parserJsonOutputParser(pydantic_objectPrime)resllm.invoke([(system,json_parser.get_format_instructions()),(user,任意生成2个1-10之间的素数),])parsed_resjson_parser.invoke(res)print(type(parsed_res))# class dictprint(parsed_res)3.2 结构化输出推荐 LangChain 结构化输出 运行方式python 02_结构化输出.py fromlangchain_openaiimportChatOpenAIfrompydanticimportBaseModel llmChatOpenAI(modelqwen-turbo,base_url...,api_key...)classCalendarEvent(BaseModel):name:strdate:strparticipants:list[str]# 开启结构化输出new_llmllm.with_structured_output(schemaCalendarEvent)resnew_llm.invoke(Alice and Bob are going to a science fair on Friday.)print(res)print(type(res))# class __main__.CalendarEventprint(f事件:{res.name}, 日期:{res.date})3.3 常用 Output ParserParser说明输出类型StrOutputParser字符串输出strJsonOutputParserJSON 输出dictPydanticOutputParserPydantic 对象BaseModelCommaSeparatedListOutputParser逗号分隔列表list相关笔记[[01-LangChain概述]] · [[03-提示词模板与Chains]] · [[04-RAG检索增强]] · [[05-Agents智能体]]