LangChain03
1、模型
# 加载环境变量 from dotenv import load_dotenv load_dotenv()一定不要忘加载
1、1初始化模型
1、1、1自动推断---------根据模型名称自动推断模型、仅限于LangChain支持的模型
# 导入Langchain的初始化模型的函数
from langchain.chat_models import init_chat_model
# 调用init_chat_model函数初始化模型
# 参数model用来指定模型名称,Langchain会根据模型名字自动设定base_url,并从环境变量中获取api_key
model = init_chat_model(model="deepseek-chat")
1、1、2手动配置推断--------使用的是openai实际上是 openai调用的底层ai
# 我们收到加载环境变量中的base_url和api_key
import os
base_url = os.getenv("DASHSCOPE_BASE_URL")
api_key = os.getenv("DASHSCOPE_API_KEY")
model = init_chat_model(
model="qwen-max", # 模型名称,这里可以自定义,我们用的是阿里的qwen-max
model_provider="openai", # 如果是Langchain不支持的模型,需要指定模型提供者(虽然我们用的是阿里,但是阿里兼容openai,所以这里用openai)
base_url=base_url,
api_key=api_key
)
1、1、3当openai不兼容时使用model类
from langchain_community.chat_models.tongyi import ChatTongyi
# 使用Model类初始化模型
model = ChatTongyi(
model="qwen-max"
# 其它模型参数...
)
1、2调用模型
1、2、1、invoke---模型全部生成才返回
# 通过invoke函数访问模型,需要阻塞等待模型生成结果
response = model.invoke("你是谁?")
# 调用invoke函数,传入消息数组
response = model.invoke([
{"role": "system", "content": "你扮演火箭队的武藏,以武藏的性格口吻回答用户的问题。"},
{"role": "user", "content": "你是谁?"}
])
1、2、2、stream
invoke阻塞式调用需要等待较长时间才能看到AI返回的结果,而stream则是流式调用,可以实时看到AI返回的一个个词。
# 通过.stream函数实现流式访问
stream = model.stream("你是谁?")
1、2、3、在智能体中使用模型
I创建智能体
from langchain.agents import create_agent
# 1.使用初始化好的model创建Agent
agent = create_agent(model=model)
# 2.指定Model名称,由LangChain自动初始化模型
agent = create_agent(model="deepseek-chat")
II调用智能体
response = agent.invoke({
"messages": [{"role": "user", "content": "你是谁?"}]
})
# 通过stream函数实现流式访问
messages = agent.stream(
{"messages": [{"role": "user", "content": "你是谁?"}]},
stream_mode="messages"
)
2、消息Message
在LangChain中,发送给LLM的消息、LLM返回的消息都统一被封装为BaseMessage,它是Agent中基本的上下文单元。
在LangChain中,我们并不需要自己创建BaseMessage对象,LangChain已经把常见消息根据角色(Role)创建了对应的BaseMessage的子类:
- SystemMessage:role是system,代表系统消息,用于设定模型角色和交互背景
- HumanMessage:role是user,代表用户输入的消息
- AIMessage:role是assistant,代表LLM生成的响应,包含:文本、工具调用、元数据
- ToolMessage:role是tool,代表工具调用时产生的结果
我们可以直接使用这些Messages类型来发送消息。
from langchain.agents import create_agent
from langchain.tools import tool
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
# 定义工具
@tool
def get_weather(location: str) -> str:
"""
Get the weather in a given location.
Args:
location: city name or coordinates
"""
return f"Current weather in {location} is sunny"
# 创建Agent
agent = create_agent(model="deepseek-chat", tools=[get_weather])
# 调用Agent,发送消息
response = agent.invoke({
"messages": [
SystemMessage("请使用工具来获取天气信息。"),
HumanMessage("你好,我是龙哥."),
AIMessage("你好,虎哥,很高兴认识你."),
HumanMessage("北京今天天气如何?")
]
})
print(response)
{'messages': [SystemMessage(content='请使用工具来获取天气信息。', additional_kwargs={}, response_metadata={}, id='e377ae65-f552-4730-8f75-12baa71a1600'), HumanMessage(content='你好,我是龙哥.', additional_kwargs={}, response_metadata={}, id='a1ddfca6-f369-4e00-a1a6-42300e206f6e'), AIMessage(content='你好,虎哥,很高兴认识你.', additional_kwargs={}, response_metadata={}, id='dde71568-a66f-40e8-be29-8dab9b8b2443', tool_calls=[], invalid_tool_calls=[]), HumanMessage(content='北京今天天气如何?', additional_kwargs={}, response_metadata={}, id='5171a6a3-b4e2-4222-a6e6-3e898b82c502'), AIMessage(content='好的,我来查一下北京今天的天气情况。', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 53, 'prompt_tokens': 316, 'total_tokens': 369, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 256}, 'prompt_cache_hit_tokens': 256, 'prompt_cache_miss_tokens': 60}, 'model_provider': 'deepseek', 'model_name': 'deepseek-v4-flash', 'system_fingerprint': 'fp_8b330d02d0_prod0820_fp8_kvcache_20260402', 'id': '80d1a543-c772-43f0-bac1-18e4d6e7c8a5', 'finish_reason': 'tool_calls', 'logprobs': None}, id='lc_run--019e2cb6-7827-7281-ba10-e8d47f119330-0', tool_calls=[{'name': 'get_weather', 'args': {'location': '北京'}, 'id': 'call_00_ihW86R8C59zw5gJqhYgb6852', 'type': 'tool_call'}], invalid_tool_calls=[], usage_metadata={'input_tokens': 316, 'output_tokens': 53, 'total_tokens': 369, 'input_token_details': {'cache_read': 256}, 'output_token_details': {}}), ToolMessage(content='Current weather in 北京 is sunny', name='get_weather', id='c62c7730-3bfb-4d1a-b635-40ab59b4943a', tool_call_id='call_00_ihW86R8C59zw5gJqhYgb6852'), AIMessage(content='虎哥,北京今天天气是**晴天**☀️,阳光明媚,是个好天气!适合出去走走逛逛。', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 26, 'prompt_tokens': 388, 'total_tokens': 414, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 256}, 'prompt_cache_hit_tokens': 256, 'prompt_cache_miss_tokens': 132}, 'model_provider': 'deepseek', 'model_name': 'deepseek-v4-flash', 'system_fingerprint': 'fp_8b330d02d0_prod0820_fp8_kvcache_20260402', 'id': '8859d88d-0eb9-4761-9447-a219f35c392d', 'finish_reason': 'stop', 'logprobs': None}, id='lc_run--019e2cb6-7c53-7393-8331-9139de391b8e-0', tool_calls=[], invalid_tool_calls=[], usage_metadata={'input_tokens': 388, 'output_tokens': 26, 'total_tokens': 414, 'input_token_details': {'cache_read': 256}, 'output_token_details': {}})]}
for message in response['messages']:
message.pretty_print()
================================ System Message ================================
请使用工具来获取天气信息。
================================ Human Message =================================
你好,我是龙哥.
================================== Ai Message ==================================
你好,虎哥,很高兴认识你.
================================ Human Message =================================
北京今天天气如何?
================================== Ai Message ==================================
好的,我来查一下北京今天的天气情况。
Tool Calls:
get_weather (call_00_ihW86R8C59zw5gJqhYgb6852)
Call ID: call_00_ihW86R8C59zw5gJqhYgb6852
Args:
location: 北京
================================= Tool Message =================================
Name: get_weather
Current weather in 北京 is sunny
================================== Ai Message ==================================
2、1、多模态消息
2、1、1线上图片
from langchain.chat_models import init_chat_model import os # 初始化模型 model = init_chat_model( model="qwen3.5-plus", # 模型名称,这里选择qwen3.5-plus,这是一个多模态模型,支持图片、文本、音频、视频 model_provider="openai", base_url=os.getenv("DASHSCOPE_BASE_URL"), api_key=os.getenv("DASHSCOPE_API_KEY") )# 创建Agent agent = create_agent(model=model) # 准备多模态消息 message = HumanMessage([ {"type": "text", "text": "描述以下这张图片的内容."}, {"type": "image", "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"}, ]) stream = agent.stream( {"messages": [message]}, stream_mode="messages" ) for chunk, metadata in stream: if chunk.content: ---这句话是判断是否有值 print(chunk.content, end="", flush=True) ====================================================================================== 这张图片捕捉了一个非常温馨、治愈的瞬间,主要包含以下内容: **1. 主体人物与动作:** * **一位年轻女性**:她侧身坐在沙滩上,留着长发,身穿黑白格纹的衬衫和深色长裤(裤脚卷起)。她脸上洋溢着开心的笑容,正伸出右手。 * **一只金色的狗**(看起来像拉布拉多或金毛寻回犬):它乖巧地坐在女子对面,身上戴着带有彩色图案的胸背带。它抬起一只前爪,正在与女子进行“击掌”(High-five)或者握手的互动。 * **互动**:两者的动作非常同步,展现了人与宠物之间亲密无间的默契和快乐。 **2. 环境与背景:** * **地点**:显然是在海边沙滩上。前景是细腻的沙子,上面有一些脚印。 * **大海**:背景是平静的大海,可以看到白色的浪花正在轻轻拍打着海岸。 * **光线**:阳光从画面右侧照射过来(可能是日落或日出时的“黄金时刻”),光线非常柔和且温暖。这束光给女子的头发和侧脸,以及狗狗的背部都镀上了一层金色的轮廓光,营造出一种梦幻、宁静的氛围。 **3. 细节:** * 狗的红色牵引绳随意地散落在沙地上,说明他们正在放松地玩耍。 * 女子的手腕上戴着一只白色的手表或手环。 总的来说,这是一张展现人与动物和谐相处、享受海边美好时光的照片。
2、1、2本地图片
首先先添加上传图片的工具
from ipywidgets import FileUpload from IPython.display import display uploader = FileUpload(accept='*', multiple=False) display(uploader)LangChain规定必须是base64格式
# 读取图片,转为base64字符串 import base64 # 获取第一个(也是唯一一个)上传的文件 uploaded_file = uploader.value[0] # 获取其内存视图 content_mv = uploaded_file["content"] # 转换内存视图->字节 img_bytes = bytes(content_mv) # or content_mv.tobytes() # base64编码 img_b64 = base64.b64encode(img_bytes).decode("utf-8")# 组织多模态消息 multimodal_question = HumanMessage(content=[ { "type": "image", "base64": img_b64, "mime_type": "image/jpeg", }, {"type": "text", "text": "给我讲讲图片中的颜色"} ]) for chunk, metadata in agent.stream( {"messages": [multimodal_question]}, stream_mode="messages" ): print(chunk.content, end="", flush=True) 我们可以从上到下把颜色拆解来看: 1. **顶部(亮部):** * 最上方是**极淡的米白色**或**奶油色**,带有一点点暖黄色的倾向。这看起来像是阳光照射下来的感觉,或者是天空的高光部分。 2. **中上部(过渡区):** * 颜色开始慢慢变成**淡黄绿色**和**薄荷绿**。这些颜色非常柔和、透亮,给人一种轻盈、透气的感觉。 3. **中部(主体区):** * 这里进入了明显的**青绿色(Teal)**和**翡翠绿**区域。这是图片的主色调,既有绿色的生机,又有蓝色的冷静。这种颜色通常让人联想到清澈的浅海湖水。 4. **底部(暗部):** * 颜色逐渐加深,变成了**深蓝绿色**、**孔雀蓝**,最底部甚至接近**深海军蓝**或**午夜蓝**。这部分提供了视觉上的重量感,让画面显得稳重。 **总结来说:** 这张图使用了一个**垂直的色彩渐变**,从顶部的“光”过渡到底部的“深海”。这种配色方案(Analogous colors,类似色搭配)非常经典,常用于科技背景、网页设计或作为让人放松的壁纸,因为它模拟了自然界中从天空到海洋或森林的层次感。
3、提示词
提示词(Prompts)
发送给大模型的所有消息都可以称为**提示词(Prompt)**,它直接影响模型的输出结果。
系统提示词
在所有发送给LLM的消息中,System Message最为重要,它设定了模型的角色和聊天的背景。会影响到后续所有的对话。我们将其称之为**系统提示词(System Prompt)**。在创建智能体时,就可以直接指定系统提示词。
from langchain.agents import create_agent from langchain.messages import HumanMessage # 创建智能体 agent = create_agent( model = "deepseek-chat", system_prompt="你以海盗的口吻来回答用户问题。"----------系统提示词 ) # 调用智能体 for token, metadata in agent.stream( {"messages": [HumanMessage(content="你是谁?")]}, stream_mode="messages" ): print(token.content, end="", flush=True)系统提示词(System Prompt)
会包含以下几个部分
- **身份角色(Identity)**:描述AI的职责、沟通风格和总体目标。
- **指令说明(Instructions)**:请指导模型如何生成所需的响应。它应该遵循哪些规则?模型应该做什么,以及模型绝对不能做什么?
- **对话示例(Examples)**:提供可能的输入示例,以及模型期望的输出。
- **背景信息(Context)**:向模型提供生成响应所需的任何额外信息,例如RAG的额外知识库数据,或您认为特别相关的任何其他数据。system_prompt = """ # 身份 - 你是一个编程助手,你帮助用户编写Python代码。 # 指令 - 定义变量时,使用snake case命名法,而不是camel case命名法。 ---用下划线而不是驼峰 - 不要返回markdown格式说明,仅仅返回代码即可。 ---更简洁节省token """ # 创建智能体 agent = create_agent( model = "deepseek-chat", system_prompt=system_prompt ) for token, metadata in agent.stream( {"messages": [HumanMessage(content="怎样定义string变量记录学校名字,例如`黑马程序员`")]}, stream_mode="messages" ): print(token.content, end="", flush=True)省钱技巧---对系统提示词更加详细
对话示例(Few-Shot examples)
Few-shot示例是一种为模型提供多个示例的方法,以便它可以学习行为模式并生成更准确的响应。
system_prompt = """ # 身份 - 你是一个科幻作家,根据用户的要求创建一个太空之都。 # 示例 user:月球的首都是什么? assistant:月华城(Lunara)—— 镶嵌在月球静海环形山中的水晶穹顶都市,其核心是一座利用月球潮汐能驱动的巨型生态循环塔。 user:火星的首都是什么? assistant:赤晶城(Aresia)—— 深嵌于火星奥林匹斯山熔岩管内的蜂巢都市,地表仅露出由火星红土烧制而成的螺旋尖塔。 """ # 创建智能体 agent = create_agent( model = "deepseek-chat", system_prompt=system_prompt ) for token, metadata in agent.stream( {"messages": [HumanMessage(content="金星的首都是什么?")]}, stream_mode="messages" ): print(token.content, end="", flush=True) --------------------------------------------------------------------------------------- **云冕城(Aphrodia)**——悬浮于金星硫酸云层上空的浮岛集群都市,由反重力引擎与太阳帆阵列共同维持,其核心是一座能将大气二氧化碳转化为钻石穹顶的巨型催化塔。结构化输出----基于提示词的结构化输出----自定义
模型擅长自然语言交流和非结构化数据识别,但是传统程序识别结构化的数据会更加方便。所以有时候我们希望模型也能输出固定结构的内容,方便我们解析。这可以通过系统提示词来实现,我们可以在提示词中指定模型的输出格式,从而使模型的输出更易于解析和使用。
system_prompt = """ # 身份 - 你是一个科幻作家,根据用户的要求创建一个太空之都。 # 指令 - 请务必以JSON格式输出,不要加任何markdown样式。 # 示例: user: 月球的首都是什么? assistant: { "name": "月华市(Lunaria)", "location": "位于月球正面赤道附近的静海基地遗址之上,依托巨大的穹顶与地下网络建成", "vibe": "冷冽、高效、革新", "economy": "氦-3能源开采、量子通信枢纽、尖端生物圈农业" } """ agent = create_agent( model="deepseek-chat", system_prompt=system_prompt ) response = agent.invoke( {"messages": [HumanMessage(content="金星的首都是什么?")]}, ) print(response['messages'][-1].content) --------------------------------------------------------------------------------------- { "name": "硫磺城(Sulfura)", "location": "悬浮于金星浓厚大气层中距地表约50公里的高空,由巨大的反重力浮空平台群构成", "vibe": "高压、炽热、坚韧", "economy": "大气资源提炼(二氧化碳、硫酸)、极端环境材料制造、太阳能巨型阵列" }基于Model的结构化输出---LangChain简化版
在LangChain中,实现结构化输出会更加简单。我们无需自己在提示词中添加描述实现结构化输出,而仅仅是两步即可:
1- 定义一个数据类型(基于pydantic)from pydantic import BaseModel # 首先,我们定义一个类,用来封装模型要输出的数据: class CapitalInfo(BaseModel): name: str location: str vibe: str economy: str
2- 创建智能体,设置输出格式
# 我们可以创建智能体时设置结构化输出的格式,LangChain会自动帮我们完成提示词改造和响应结果解析。 agent = create_agent( model='deepseek-chat', system_prompt="你是一个科幻作家,根据用户的要求创建一个太空之都。", response_format=CapitalInfo # 设置结构化输出的格式 ) response = agent.invoke( {"messages": [HumanMessage(content="月球的首都是什么?")]} ) # 输出结果 print(response) ----------------------------------------------------------------------------------------- {'messages': [HumanMessage(content='月球的首都是什么?', additional_kwargs={}, response_metadata={}, id='bdc4c411-a8d5-4351-939a-d6f6e5689a54'), AIMessage(content='', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 134, 'prompt_tokens': 355, 'total_tokens': 489, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 320}, 'prompt_cache_hit_tokens': 320, 'prompt_cache_miss_tokens': 35}, 'model_provider': 'deepseek', 'model_name': 'deepseek-chat', 'system_fingerprint': 'fp_eaab8d114b_prod0820_fp8_kvcache_new_kvcache', 'id': '668ea94a-cfd7-4547-8039-f82b22edf755', 'finish_reason': 'tool_calls', 'logprobs': None}, id='lc_run--019d230e-e690-7652-ad8b-87703c39fbb5-0', tool_calls=[{'name': 'CapitalInfo', 'args': {'name': '月宫', 'location': '月球南极-艾特肯盆地边缘', 'vibe': '未来主义与古典东方美学融合,低重力环境下的优雅建筑,透明穹顶下的花园城市', 'economy': '氦-3开采与精炼、月球旅游、零重力制造、科学研究、稀有金属贸易'}, 'id': 'call_00_i68mFAfCzaCGVA8POKixhIxO', 'type': 'tool_call'}], invalid_tool_calls=[], usage_metadata={'input_tokens': 355, 'output_tokens': 134, 'total_tokens': 489, 'input_token_details': {'cache_read': 320}, 'output_token_details': {}}), ToolMessage(content="Returning structured response: name='月宫' location='月球南极-艾特肯盆地边缘' vibe='未来主义与古典东方美学融合,低重力环境下的优雅建筑,透明穹顶下的花园城市' economy='氦-3开采与精炼、月球旅游、零重力制造、科学研究、稀有金属贸易'", name='CapitalInfo', id='00a81454-bed9-487f-b49f-6296c21923b1', tool_call_id='call_00_i68mFAfCzaCGVA8POKixhIxO')], 'structured_response': CapitalInfo(name='月宫', location='月球南极-艾特肯盆地边缘', vibe='未来主义与古典东方美学融合,低重力环境下的优雅建筑,透明穹顶下的花园城市', economy='氦-3开采与精炼、月球旅游、零重力制造、科学研究、稀有金属贸易')}city = response['structured_response']----返回值中会有这个结构化的变量对它处理 printf -------------------------------------------------------- CapitalInfo(name='月宫', location='月球南极-艾特肯盆地边缘', vibe='未来主义与古典东方美学融合,低重力环境下的优雅建筑,透明穹顶下的花园城市', economy='氦-3开采与精炼、月球旅游、零重力制造、科学研究、稀有金属贸易')print(f"{city.name}位于{city.location},是一座{city.vibe}的城市,其主要产业包括{city.economy}。") ----------------------------------------------------------------------------------------- 月宫位于月球南极-艾特肯盆地边缘,是一座未来主义与古典东方美学融合,低重力环境下的优雅建筑,透明穹顶下的花园城市的城市,其主要产业包括氦-3开采与精炼、月球旅游、零重力制造、科学研究、稀有金属贸易。
4、工具
一个完整的Agent至少要包含两个关键的部分:
- **模型**:是Agent的大脑,负责推理、分析,规划任务步骤
- **工具**:是Agent的手脚,负责执行任务,与外界交互
因此,定义带有工具的Agent的基本流程如下:
- 定义工具
- 初始化模型
- 初始化Agent,绑定模型和工具

1.自定义工具
所谓的**工具(Tool)**,本质就是一个可调用的**函数**,但是这个函数不是我们自己去调用,而是给模型调用。因此除了定义函数外,我们还需要清晰描述这个工具,让模型知道这个工具如何使用。包括下列信息:
- 工具名
- 工具的作用
- 工具需要的参数
1---基于tool描述工具
在LangChain中,定义工具需要用到@tool装饰器,我们可以通过装饰器来定义工具名、工具的作用:
from langchain_core.tools import tool
@tool("square_root", description="Calculate the square root of a number")
def tool1(x: float) -> float:
return x ** 0.5
.2----使用函数名和文档注释描述工具---推荐
如果不@tool装饰器没有定义工具名和作用描述,此时:
- 工具名:默认就是函数名
- 工具所需的参数:默认就是函数的参数列表
- 工具作用的描述:默认就是函数的文档注释
from langchain_core.tools import tool
# 通过tool装饰器定义工具
@tool
def square_root(x: float) -> float:
"""Calculate the square root of a number"""
return x ** 0.5
# 定义一个查询天气的tool
@tool
def get_weather(location: str, units: str = "celsius", include_forecast: bool = False) -> str:
"""
Get current weather and optional forecast.
Args:
location: city name or coordinates
units: unit of degrees
include_forecast: does it include the weather forecast
"""
temp = 22 if units == "celsius" else 72
result = f"Current weather in {location}: {temp} degrees {units[0].upper()}"
if include_forecast:
result += "\nNext 5 days: Sunny"
return result
3----定义Pydantic Model描述参数---参数复杂时
如果函数的参数比较多,而且比较复杂,此时建议通过pydantic model来描述参数列表。
# 通过自定义model来约束入参
from pydantic import BaseModel, Field
from typing import Literal
# 例如一个查询天气的tool
class WeatherInput(BaseModel):
"""查询天气的输入参数."""
location: str = Field(description="City name or coordinates")
units: Literal["celsius", "fahrenheit"] ---枚举
= Field(
default="celsius",
description="Temperature unit preference, default is celsius."
)
include_forecast: bool = Field(
default=False,
description="Include 5-day forecast"
)
# 定义一个查询天气的tool
@tool(args_schema=WeatherInput)
def get_weather(location: str, units: str = "celsius", include_forecast: bool = False) -> str:
"""Get current weather and optional forecast."""
temp = 22 if units == "celsius" else 72
result = f"Current weather in {location}: {temp} degrees {units[0].upper()}"
if include_forecast:
result += "\nNext 5 days: Sunny"
return result
from langchain.agents import create_agent
from langchain.messages import HumanMessage
agent = create_agent(
model="deepseek-chat",
tools=[square_root, get_weather],
system_prompt="你可以使用工具回答用户问题,调用工具时尽量使用默认参数,除非用户特别指定。"
)
for token, metadata in agent.stream(
{"messages": [HumanMessage(content="杭州接下来几天天气如何?")]},
stream_mode="messages"
):
print(token.content, end="", flush=True)
----------------------------------------------------------------------------------------
我来帮您查询杭州接下来几天的天气情况。Current weather in 杭州: 22 degrees C
Next 5 days: Sunny根据查询结果,杭州当前的天气是22摄氏度。接下来5天的天气预报显示都是晴天。
看起来天气情况很不错,接下来几天杭州都会是晴朗的天气,温度适宜。建议您可以安排一些户外活动,但也要注意防晒哦!
========================================================================================
response = agent.invoke(
{"messages": [HumanMessage(content="467和529的平方根是多少?")]},
)
for message in response['messages']:
print(message.pretty_print())
----------------------------------------------------------------------------------------
================================ Human Message =================================
467和529的平方根是多少?
None
================================== Ai Message ==================================
我来帮你计算467和529的平方根。
Tool Calls:
square_root (call_00_aQ0QNpiJNd4qKupaSlDGchGM)
Call ID: call_00_aQ0QNpiJNd4qKupaSlDGchGM
Args:
x: 467
None
================================= Tool Message =================================
Name: square_root
21.61018278497431
None
================================== Ai Message ==================================
Tool Calls:
square_root (call_00_PprajYbdstDClKsLlloiFr0j)
Call ID: call_00_PprajYbdstDClKsLlloiFr0j
Args:
x: 529
None
================================= Tool Message =================================
Name: square_root
23.0
None
================================== Ai Message ==================================
计算结果如下:
- **467的平方根** ≈ 21.6102
- **529的平方根** = 23.0(因为529是23的平方,所以结果是精确的整数)
529是一个完全平方数(23² = 529),所以它的平方根是精确的23。
5、记忆
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)