Closed vivvyk closed 5 months ago
🤖
Hello @vivvyk,
I'm here to assist you while you're waiting for a human maintainer. I'm a bot that can help you solve bugs, answer questions, and become a contributor. Let's dive into your issue.
Based on the information you've provided and the context I have, it seems like the issue of duplicate responses separated by a newline could be due to the way the chain
method is being used in the GenerativeAgent
class. The chain
method is used to execute the language model and generate a response. If this method is called multiple times with the same prompt, it could potentially generate duplicate responses.
In the GenerativeAgent
class, the chain
method is used in several places such as in the _get_entity_from_observation
, _get_entity_action
, summarize_related_memories
, _generate_reaction
, generate_reaction
, generate_dialogue_response
, and _compute_agent_summary
methods. If any of these methods are called more than once with the same prompt, it could result in duplicate responses.
To fix this issue, you could modify the methods to ensure that the chain
method is not called multiple times with the same prompt. You could also add a check to remove any duplicate responses before returning the final result.
In the context shared, the ChatOpenAI
class in the openai.py
file uses the completion_with_retry
method to call the OpenAI API and generate a response. This method uses a retry decorator to handle any errors that may occur during the API call. If the API call fails and the method is retried with the same parameters, it could potentially generate duplicate responses. To fix this issue, you could modify the completion_with_retry
method to ensure that it does not generate duplicate responses when it is retried.
I hope this helps! If you need further clarification or have more questions, feel free to ask.
Best, Dosu
This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.
Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.
If you want to continue the conversation, start your reply with @dosu-bot.
Hi, @vivvyk,
I'm helping the LangChain team manage their backlog and am marking this issue as stale. From what I understand, you reported an issue with the Langchain agent using a fine-tuned GPT instance producing duplicated responses separated by a newline. I provided a detailed response suggesting modifications to the GenerativeAgent
class and potential issues with the ChatOpenAI
class in the openai.py
file. The issue has been resolved by addressing these modifications and potential issues.
Could you please confirm if this issue is still relevant to the latest version of the LangChain repository? If it is, please let the LangChain team know by commenting on the issue. Otherwise, feel free to close the issue yourself, or it will be automatically closed in 7 days.
Thank you for your understanding and contribution to LangChain! If you have any further questions or concerns, feel free to reach out.
in my case use the max_iteration argument of the initialize_agent. I'm not sure if this completely solves the problem but basically the agent decides where to process the question. tool_1or tool_2 this way the max_iteration allows me to call tool n number of times if something is missing in the processing. Since I use 2 completely different tools, it is better to isolate that iteration and only keep one, which in this case would be the initial response that the agent tells us.
System Info
Running with
langchain==0.0.327
on Fedora Linux and Windows. Finetuning withgpt-3.5-turbo-16k-0613
. Language:Python 3.10.11
Who can help?
@hwchase17 @agola11
Information
Related Components
Reproduction
Hello, I have created a simple langchain agent with a Tool and with an LLM. However, the LLM passed into the agent actually points to my finetuned GPT instance. We notice that the output responses contain an accurate response, but repeated and separated by a newline.
I have fine-tuned on the sample prompts from the official OpenAI documentation on making a sarcastic chatbot. Here is the JSONL file I used for fine tuning: https://pastebin.com/BDV0Tjyk.
Here is my agent code:
Now this does seem to work correctly and use the fine tuned instance (as we can see the responses are definitely sarcastic), but we notice that in its response, the agent seems to be combining the same response twice, but separated by a newline.
Output:
Looking at the generations from the debug:
Some important details:
I am happy to provide more information on debug logs or anything about the fine-tuned model for replication. We'd love any information or nuances about using a fine-tuned instance with a Langchain agent, or guidance on what could be going wrong. Thanks!
Expected behavior
Only one response should be generated:
The response contains a copy of the response separated by a newline: