AI翻译LangChain实现的一点思考

在B站学习 图灵程序员-诸葛 的LangChain入门课程《深度定制本地工具》。在实践Chain.as_tool代码的时候,程序的运行逻辑让我困惑了好一会儿,写文章记录一下这个有趣的点。下面是代码,主要示意了如何构建自己的chain作为tool来用英语回答的问题。

python 复制代码
from langchain_core.output_parsers import StrOutputParser  
from langchain_core.prompts import ChatPromptTemplate  
from langchain_openai import ChatOpenAI  
  
llm = ChatOpenAI(  
    model="qwen-plus",  
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",  
    api_key="[Your API KEY]"  
)  
  
prompt = ChatPromptTemplate.from_messages(["human", "把{sentence}翻译成{language}"])  
parser = StrOutputParser()  

chain = prompt | llm | parser  
as_tool = chain.as_tool(name="translatetool", description="翻译工具")  

all_tools = {"translatetool": as_tool}  
print(as_tool.args)  
llm_with_tools = llm.bind_tools([as_tool])  

query = "如何用英语回复这句话"今天天气真冷"?要求使用更随意的表达方式。"  
messages = [query]  

ai_msg = llm_with_tools.invoke(messages)  
print(f"Message from LLM: {ai_msg}")  
messages.append(ai_msg)  

if ai_msg.tool_calls:  
    for tool_call in ai_msg.tool_calls:  
        selected_tool = all_tools[tool_call["name"].lower()]  
        tool_msg = selected_tool.invoke(tool_call)  
        print(f"Message from tool: {tool_msg}")  
        messages.append(tool_msg)  
  
result = llm_with_tools.invoke(messages).content  
print(result)

代码运行的结果确实是期待的,实际效果是

  • 用户向AI提出问题:如何用英语回复这句话"今天天气真冷"?要求使用更随意的表达方式。
  • AI回答:你可以用英语这样随意地表达"今天天气真冷": "It's freezing today!" 或者 "Man, it's cold out here today!" 这些表达方式更口语化和随意。

我脑海中的程序执行逻辑是

  1. 根据用户提问,大模型给出答复,比如"确实,都冻僵了"或"是啊,今天真是太冷了"。这里的答复是中间结果。
  2. 然后大模型调用代码里的chain来翻译作为中间结果后给出用户英语版本的答复。

但代码运行日志如下

bash 复制代码
{'language': {'title': 'Language', 'type': 'string'}, 'sentence': {'title': 'Sentence', 'type': 'string'}}
Message from LLM: content='' additional_kwargs={'tool_calls': [{'id': 'call_abe466af849040adb44d48', 'function': {'arguments': '{"language": "en", "sentence": "今天天气真冷"}', 'name': 'translatetool'}, 'type': 'function', 'index': 0}], 'refusal': None} response_metadata={'token_usage': {'completion_tokens': 28, 'prompt_tokens': 196, 'total_tokens': 224, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 0}}, 'model_name': 'qwen-plus', 'system_fingerprint': None, 'id': 'chatcmpl-9bd057b0-705b-9ed5-86e0-171993e7a1e7', 'finish_reason': 'tool_calls', 'logprobs': None} id='run-e516fb4e-3844-49ce-bf9e-37ad3710fe49-0' tool_calls=[{'name': 'translatetool', 'args': {'language': 'en', 'sentence': '今天天气真冷'}, 'id': 'call_abe466af849040adb44d48', 'type': 'tool_call'}] usage_metadata={'input_tokens': 196, 'output_tokens': 28, 'total_tokens': 224, 'input_token_details': {'cache_read': 0}, 'output_token_details': {}}
Message from tool: content="It's really cold today." name='translatetool' tool_call_id='call_abe466af849040adb44d48'
你可以用英语这样随意地表达"今天天气真冷": "It's freezing today!" 或者 "Man, it's cold out here today!" 这些表达方式更口语化和随意。

从日志看出来,实际程序的执行逻辑是

  1. 大模型先调用代码里的chain把"今天天气真冷"翻译成了"It's really cold today."。
  2. 之后大模型用英语做了回复。

看出来程序实际执行的逻辑和我设想的完全不同。大模型的逻辑是先把用户的提问翻译为英语,然后在英语的思维里作答,细想确实更加合理。如果先用中文思路作答,从大模型得到类似"你妈喊你穿秋裤了吗?"的答复,再翻译成英语就有点哭笑不得了。

本文由博客一文多发平台 OpenWrite 发布!

相关推荐
陈敬雷-充电了么-CEO兼CTO2 天前
主流大模型Agent框架 AutoGPT详解
人工智能·python·gpt·ai·chatgpt·nlp·aigc
Accelemate3 天前
Bert进行LoRA微调详细流程(附代码)
nlp
**梯度已爆炸**5 天前
NLP文本预处理
人工智能·深度学习·nlp
蹦蹦跳跳真可爱5895 天前
Python----循环神经网络(Transformer ----注意力机制)
人工智能·深度学习·nlp·transformer·循环神经网络
kunge201320 天前
自然语言处理基础-迈向NLP领域的第1步台阶
nlp
羊小猪~~21 天前
【NLP入门系列三】NLP文本嵌入(以Embedding和EmbeddingBag为例)
人工智能·深度学习·神经网络·自然语言处理·大模型·nlp·embedding
爱学习的书文21 天前
Datawhlale_快乐学习大模型_task02_NLP 基础概念
大模型·nlp·datawhale打卡
我想说一句21 天前
在Colab玩转大模型:一天速成NLP魔法师!
前端·nlp·trae
AI-星辰25 天前
始理解NLP:我的第一章学习心得
人工智能·大模型·llm·nlp